MongoDB的Sharding机制能够让数据库系统以接近线性的方式进行扩展,非常适合具备大数据集或者高吞吐量的业务。
官方文档参考:https://docs.mongodb.com/manual/sharding/
文档上已经写得很详细了,这里主要针对其中的几个关键点做使用总结。
Shard Keys
切片字段的选择
Shard Key不像其它类型的索引那样可以随时方便的添加,修改或删除,因此,最好在正式Insert数据之前就规划好Shard Key。如果Collection中已经有大量数据了,此时再想修改Shard Key,那么需要备份数据,重建Shard,最后再把备份数据重新写入。
在创建Shard Key之前,需要认真考虑切片字段值的3个方面的特性:Cardinality(基数),Frequency(频率)和Monotonically(单调性):
- Cardinality:主要取决于字段有效值的数量。应该尽量多一些,不宜过少。
- Frequency:字段不同值出现的频率。应该尽量均衡。
- Monotonically:字段值是否随着Insert操作有单调递增或单调递减的趋势。对于Ranged Sharding,应该尽量避免出现单调变化的趋势。
可以为不同的Collection设置不同的Shard Key。但每个Collection只能有1个Shard Key,它要同