2016-12-29 8 views
0

запросов относительно того, как распределение кусок может выглядеть в sharded кластера, который имеет 2 коллекции, которые имеют одинаковые индексы «верхнего уровня» и, следовательно, осколок ключ:осколок Балансировка В различных коллекциях

Коллекция один sharded по х:

{ x: 1 } 

имеет документ структуру, эквивалентный:

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

Коллекция два sharded от й:

{ x: 1 } 

имеет структуру документа, эквивалентную:

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

х имеет мощность приблизительно 100K. x одинаково в обеих коллекциях, и большое количество документов для заданного значения x в коллекции 1 также будет иметь пропорциональное число в коллекции 2.

Я хотел бы знать, для заданной мощности x, если скорее всего, это фрагменты из отдельных коллекций, содержащие похожие диапазоны х, на одном узле? то есть документы с x = 5 из коллекции 1, находятся на том же узле, что и документы с x = 5 из коллекции 2?

+0

Нет, это не так. Распределение Шарда также будет зависеть от частоты ключа осколка в обеих коллекциях. – ares

ответ

1

Нет никакой гарантии, что обе коллекции будут распределены одинаково, хотя x имеет ту же мощность в обеих коллекциях (или даже если x - это одно и то же поле).

Балансир пытается распределить куски равномерно по всем осколкам. Это делается без необходимости знать о фактическом осколочном ключе. С точки зрения балансировки, нет никакой связи между двумя коллекциями (или между любыми собранными коллекциями).

Вы можете прочитать о балансировщике на этой странице: https://docs.mongodb.com/v3.2/core/sharding-balancer-administration/. Обратите внимание, что на этой странице нет упоминаний о клавишах наложения, только куски.