• 分区键
    • 概念
    • 格式
    • 示例

    分区键

    概念

    分区键定义了每个集合中所包含数据的分区规则。每一个集合对应一个分区键,分区键中可以包含一个或多个字段。分区键可以在创建集合时指定,也可以集合创建之后进指定分区键。

    在编目节点中,每个集合都拥有自己的分区范围,分区范围中每个范围段对应一个分区组,标示该集合的某一数据段坐落于该分区组。

    Note:

    集合的分区键在创建集合时指定,集合创建成功后分区键无法修改。

    在分区集合中,记录插入数据库后无法对分区键值进行更新。

    格式

    • Range 分区键

    Range 分区键的格式类似于索引键,为一个 JSON 对象。JSON 对象中每一个字段对应分区键的字段,数值为 1 或者 -1,代表正向或逆向排序。

    1. {
    2. ShardingKey: { <字段1>: <1|-1>, [<字段2>: <1|-1>, ...] },
    3. ShardingType: "range"
    4. }
    • Hash 分区键

    Hash 分区的 ShardingKey 组成方式与 Range 分区方式相同(但字段的正向/逆向不起作用)。Partition 的值必须是 2 的幂,范围在[ 23 , 220 ],默认为 4096。

    1. {
    2. ShardingKey: { <字段1>: <1|-1>, [<字段2>: <1|-1>, ...] },
    3. ShardingType: "hash",
    4. Partition: <分区数>
    5. }

    示例

    • 一个包含两个字段,分别为正向和逆向排序的 Range 分区键如下:
    1. {
    2. ShardingKey: { Field1: 1, Field2: -1 },
    3. ShardingType: "range"
    4. }
    • Hash 分区键
    1. {
    2. ShardingKey: { Field1: 1, Field2: -1 },
    3. ShardingType: "hash",
    4. Partition: 4096
    5. }