1.Sharding的作用:将数据通过一定的算法分散到不同的机器上,实现高扩展。MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作的部署。
2.Sharding的架构
sharding架构.png
1)mongos:特殊的mongod实例(不存储数据)作为路由
2)config servers存储集群的配置信息
3)shard存储集合分片数据,并且分片数据可以在构成一个集群
- shard key
将集合中的数据分片
shard集合之前选择一个合适的shard key,shard key的选择会影响分片以后的高扩展性、效率,也会影响集群,shard之后不能更改shard key,并且分片集合只能有一个shard key
如果对一个非空集合进行分片,必须有一个索引是以shard key开始的,不如shard key为a,则必须有一个索引{"a":1,"x":1...},x为文本中的字段。如果对一个空集合进行分区,如果没有合适的索引,则mongodb将会创建一个索引,比如你的shard key为b,但是没有索引是以b开始的,则将会自行创建一个
4.Sharding的优势
1)读写
2)存储大数据的能力
3)高可用
高可用是因为集群
5.分片策略
1)hashed sharding
优点:
分散均匀
缺点:
不适合范围查找,只适合精确查找
2)range sharding
网友评论