用户做数据分区时,需要进行分区配置,配置的主要内容包括划分每个分区包含的数据范围,以及指定分区的归属。
数据库分区配置
假设用户需要将集合 business.orders_2019
中 以 id
字段为分区键将数据均匀切分到两个复制组 prod_part1, prod_part2 中。则相应的切分配置如下表:
Note:
对集合 business.orders_2019
做散列分区,默认情况下 hash 值范围为 [0, 4096)
以下根据配置,实际生成集合 business.orders_2019
创建集合 business.orders_2019
,分区键为 id
字段,分区方式为 hash ,集合所在复制组为 prod_part1:
> db.createCS( "business" )
> db.business.createCL( "orders_2019", { ShardingKey: { id: 1 }, ShardingType: "hash", Group: "prod_part1" } )
执行切分操作,将集合 business.orders_2019
中,字段 id
的 hash 值范围在 [2048, 4096) 的记录,从复制组 prod_part1 切分到复制组 prod_part2 中:
> db.business.orders_2019.split( "prod_part1", "prod_part2", { id: 2048}, { id: 4096} )
用户可以通过快照命令查看分区的划分情况:
db.snapshot( SDB_SNAP_CATALOG, { Name: "business.orders_2019" } )
{
...
"Name": "business.orders_2019",
"ShardingType": "hash",
"ShardingKey": {
"id": 1
}
"Partition": 4096,
"CataInfo": [
{
"ID": 0,
"GroupID": 1000,
"GroupName": "prod_part1",
"LowBound": {
"": 0
},
"UpBound": {
"": 2048
}
},
{
"ID": 1,
"GroupID": 1001,
"GroupName": "prod_part2",
"LowBound": {
"": 2048
},
"UpBound": {
"": 4096
}
}
]
}
相关阅读