2016-12-29 55 views
0

關於區塊分佈會是什麼樣中有2點集合,具有相同的「頂級」索引,因此片鍵分片集羣查詢:碎片平衡在不同的集合

收集一個分片由X:

{ x: 1 } 

具有文檔結構等效於:

{ 
    x : integer, 
    y : integer, 
    z : integer 
} 

類別2分片用x:

{ x: 1 } 

具有文檔結構等效於:

{ 
    x : integer, 
    v : integer, 
    w : integer 
} 

x具有約100K的基數。 x在兩個集合中都是相同的,並且對於集合1中給定值x的大量文檔在集合2中也將具有成比例的數字。

我想知道,對於給定的x的基數,if包含類似範圍x的單獨集合的塊可能位於同一個節點上?即將來自集合1的x = 5的文檔與來自集合2的x = 5的文檔放在同一節點上?

+0

不,它不是。碎片分發也將取決於兩個集合中碎片鍵的頻率。 – ares

回答

1

儘管x在兩個集合上具有相同的基數(即使x是相同的字段),但不能保證兩個集合都將以相同方式分發。

平衡器嘗試將塊均勻分佈在所有碎片上。這是在不需要知道實際分片鍵的情況下完成的。從平衡器的角度來看,兩個集合之間(或任何分片集合之間)沒有關係。

你可以在這個網頁閱讀關於平衡器:https://docs.mongodb.com/v3.2/core/sharding-balancer-administration/。請注意,在頁面中根本沒有提及分片鍵,只有大塊。