使用手册上说:
一个分区集合首先会被创建在一个随机的分区组中。如果用户希望对该集合水平切分,将其划分到超过一个分区组中,就需要数据切分功能。
但我看了所有的API都没办法拿到一个分区集合所属的源分区组,这是怎么回事?
按理说可以从中 SYSCOLLECTIONS获得但我去get这个collection时,得不到,用什么方法可以查询数据库的元素?不可写,但应该可读吧.
由于上述问题,在使用切分API的时候,即
db.collectionspace.collection.split(,,, [endcondition])
我为了得到分区集合的源分区组,只能在创建集合时,指定分区组了.
但我在使用split方法时还是有遇到问题:
如一个分区键a,我划分了[0,a1) [a1,a2) [a2, maxkey)三个区间,
集群中一共有三个分区组datagroup1,datagroup2,datagroup3,
我创建分区集合时,初始化到了datagroup1.
第一个是,源分区组不能与目标分区组相同?
我希望在datagroup1明确[0,a1),是由这个分区负责(这样,我在管理分区的范围时能比较明确,而不是说要知道哪些区间被分出去了,剩下的就还在源分区组内),但会报非法参数.
第二个是:目标分区也需要建立一个分区集合?
我在指定[a1,a2) 切分到datagroup2时,提示集合不存在.是否要先在datagroup2上建立一个分区集合,但创建集合是用集合空间.createCollection方法,它会检查集合是否存在.还是说我在建立集合空间时,就应该初始到所有复制组?但创建集合时传的是group,而不是groups.这让我有点迷惑.
综上:
问题1:用什么方法可以查询数据库的元素?
问题2:切分集合时,源分区组不能与目标分区组相同?有什么特别原因?
问题3:切分集合时,目标分区也需要建立一个分区集合?或要,该如何创建?或不要,怎么处理"集合不存在"的错误?