范围分片
基于范围的分片涉及将数据划分为由分片键值确定的连续范围。在此模型中,具有“接近”的分片键值的文档很可能位于同一数据块或分片中。这允许进行高效的查询,其中读取目标连续范围内的文档。然而,如果分片键选择不当,读取和写入性能可能会降低。请参阅分片键选择.
如果没有配置其他选项(如哈希分片或区域所需选项),则基于范围的分片是默认的分片方法。
分片键选择
范围分片在分片键具有以下特性时最为高效
以下图像展示了使用字段X
作为分片键的分片集群。如果X
的值具有大范围、低频率,并且以非单调的速度变化,插入的分布可能类似于以下
点击放大
分片集合
使用sh.shardCollection()
方法,指定集合的完整命名空间和要作为分片键使用的索引或组合索引。
sh.shardCollection( "database.collection", { <shard key> } )
将已填充的集合进行分片
如果您对已填充的集合进行分片,最初只会创建一个分片。然后平衡器根据配置的分区大小,如果需要,将范围从该分片迁移。
将空集合进行分片
如果您对空集合进行分片
未指定 区域和区域范围 对于空集合或不存在集合
分片操作创建一个空分片来覆盖整个分片键值范围。
在创建初始分片后,平衡器将根据区域范围迁移初始分片,并管理未来的分片分布。
指定了区域和区域范围用于空集合或不存在集合
分片操作为定义的区域范围创建空分片,以及任何其他分片以覆盖整个分片键值范围,并基于区域范围执行初始分片分布。这种初始创建和分片分布允许更快地设置区域分片。
在初始分布后,平衡器管理未来的分片分布。