我正在尝试理解MongoDB和分片的概念.如果我们从2个节点和分区开始说,客户数据,基于姓氏,其中A到M数据存储在节点1上,N到Z数据存储在节点2上.当我们想要扩展并添加更多节点时会发生什么?我只是看不出那是怎么回事.
如果您有2个节点,则并不意味着数据被分区为2个块.它可以通过分区来表示10个块,其中6个在服务器1上,其余的在服务器2上.
当您添加另一台服务器时,MongoDB能够在新配置的节点之间重新分配这些块
您可以在官方文档中阅读更多内容:
如果有多个可用分片,一旦有足够数量的分块,MongoDB将开始将数据迁移到其他分片.此迁移称为平衡,由称为平衡器的进程执行.平衡器将块从一个分片移动到另一个分片.
要进行平衡循环,碎片必须至少比最少人口碎片多9个块.此时,块将从拥挤的碎片迁移出来,直到它与其余碎片均匀.
将新节点添加到群集时,MongoDB会在新配置的节点之间重新分配这些块.这是一个小提取,要完全理解在添加新节点时如何重新平衡阅读Kristina Chodrow的书"Scaling MongoDB"的第2章"理解分片"