1、选择片键
选择一个好的片键非常关键,如果选择了一个糟糕的片键,它可以立马或者在访问量变大时毁了你的应用程序,也有可能潜伏着,等待着,没准什么时候突然毁了你的应用程序。
另外一方面,如果你选择了一个好片键,只要应用程序还在正常运行,而且只要发现访问量提高就赶紧添加服务器,MongoDB就会确保一直正确地运行下去。
正如在前面所学的,片键决定了数据在集群中的分布情况,因此你会希望存在这样一个片键,它既能把读写分散开来,又能把正在使用的数据保持在一起,这些看似互相矛盾的目标在现实中却往往是可以实现的。
我们先挑片键的几个反面例子找茬,然后再拿几个较好的例子来琢磨一番,MongoDB的wiki上也有一页与选择片键相关且很不错的内容,可以看看。
1.1、小基数片键
一些人并不真正理解或者信任MongoDB自动分配数据的方式,所以他们总是沿着这么个思路来向:我有4个分片,所以应该用一个由4个可能的字段来做片键,这是一个非常糟糕的想法,为什么呢?
假设我们有一个存储用户信息的应用程序,每个文档有一个continent字段代表用户所在地区,其字段值可以是"Africa"、"Antarctica"、

本文深入探讨了MongoDB分片中片键选择的重要性,指出选择不良片键可能导致应用程序性能下降,而良好的片键策略能有效分散读写操作。小基数片键是一个反例,会导致数据分布不均和扩展性问题。讨论了适用于分片的数据中心感知和准升序键加搜索键策略,强调了理解并信任MongoDB自动分片机制的好处。
订阅专栏 解锁全文
3079

被折叠的 条评论
为什么被折叠?



