分区集合

概念

一个定义了分区键的集合为分区集合。分区集合可以按照分区键所指定的字段,将集合中的数据切分到超过一个数据分区组中。

当集合创建时,用户可以指定分区键。分区集合会在一个随机的数据分区组中创建。用户可以使用手工切分的方式对集合按照某一规则切分至多个数据分区组中。

分区区间

分区集合中每一个区间叫做一个分区区间。

分区集合创建时,其所在的分区组包含全部区间,为所有字段的 MinKeyMaxKey

每一个分区区间为左闭右开规则,也就是包含大于等于低边界,且小于高边界的区域。例如:

  1. { LowBound: { "": 10 }, UpBound: { "": 20 } }

在该例中,低边界为10,高边界为20,因此本区间包含所有分区字段大于等于10,且小于20的数据。

Note:

一个集合中所有边界的定义不包含字段名,其字段应当与分区键所定义的字段,与字段数量保持一致。

当分区键包含多个字段时,其匹配规则为第一字段首先匹配,如果坐落于边界值则匹配下一字段。例如:

  1. { LowBound: { "": 10, "": 5 }, UpBound: { "": 20, "": 1 } }

在该分区区间中,如果用户输入的分区键的第一个字段坐落于10与20之间,则立刻判定为该区间内;如果存在于小于10或大于20,则不在该区间内;而如果为10或者20,则需要进行第二个字段的匹配,匹配规则仍为左闭右开。

规则

分区集合定义的规则参见 SYSCOLLECTIONS 集合定义。

示例

一个存在于两个分区组的典型分区区间如下:

  1. [
  2. { "GroupID": 1000,
  3. "LowBound": { "": MinKey, "": MaxKey },
  4. "UpBound": { "": 10, "": 5 }
  5. },
  6. { "GroupID": 1001,
  7. "LowBound": { "": 10, "": 5 },
  8. "UpBound": { "": MaxKey, "": MinKey }
  9. }
  10. ]

其中第一个区间所在分区组 ID 为1000,包含的分区键存在两个字段,分别为:

  • 低边界:{ "": MinKey, "": MaxKey }
  • 高边界:{ "": 10, "": 5 }而第二个区间所在分区组为1001,包含分区区间为:

  • 低边界:{ "": 10, "": 5 }

  • 高边界:{ "": MaxKey, "": MinKey }