每日一句
Ideal is the beacon. Without ideal, there is no secure direction; without direction, there is no life. 理想是指路明灯。没有理想,就没有坚定的方向;没有方向,就没有生活。
概述
对集合进行分片时,你需要选择一个 片键(Shard Key) , shard key 是每条记录都必须包含的,且建立了索引的单个字段或复合字段,MongoDB按照片键将数据划分到不同的 数据块 中,并将 数据块 均衡地分布到所有分片中.
为了按照片键划分数据块,MongoDB使用如下方式分配:
- 基于哈希的分片方式(随机平均分配)
- 基于范围的分片方式(数值大小分配)
用什么字段当片键都可以,如:nickname作为片键,但一定是必填字段。
哈希策略
对于 基于哈希的分片 ,MongoDB计算一个字段的哈希值,并用这个哈希值来创建数据块.
在使用基于哈希分片的系统中,拥有”相近”片键的文档 很可能不会 存储在同一个数据块中,因此数据的分离性更好一些.
使用nickname作为片键,根据其值的哈希值进行数据分片
sh.shardCollection("articledb.comment",{"nickname":"hashed"})
范围策略
对于 基于范围的分片 ,MongoDB按照片键的范围把数据分成不同部分.
假设有一个数字的片键:想象一个从负无穷到正无穷的直线,每一个片键的值都在直线上画了一个点.MongoDB把这条直线划分为更短的不重叠的片段,并称之为 数据块 ,每