2011-07-04 54 views
5

我想了解MongoDB和分片的概念。如果我們從2個節點和分區開始說,基於節點1上存儲A到M數據的姓氏和N到Z數據的客戶數據存儲在節點2上。當我們想要擴展並添加更多節點時會發生什麼?我只是不明白這將如何工作。MongoDB分片,如何在添加新節點時重新平衡?

回答

3

如果有多個可用分片,一旦有足夠數量的分塊,MongoDB將開始將數據遷移到其他分片 。這種遷移稱爲平衡,由稱爲平衡器的進程執行。 平衡器將塊從一個碎片移動到另一個碎片。

要發生平衡回合,分片至少必須比 人口最少的分片多出9個區塊。此時,塊將從擁擠的碎片 中移出,直到與其餘的碎片平齊。

當您將新節點添加到羣集時,MongoDB會在新配置的節點之間重新分配這些塊。 這是一個小小的摘錄,爲了全面瞭解在添加新節點時如何重新平衡,請閱讀Kristina Chodrow的書「Scaling MongoDB」第2章「理解分片」