Я, как и многие другие, думаю о правильном подходе к осколкам моих коллекций в Монго.Главный вопрос - как работает автоматическое разделение?
Официальный документ говорит: «MongoDB масштабируется горизонтально с помощью архитектуры автоматического разделения (разбиения)» и «Чтобы разделить коллекцию, мы задаем шаблон ключа разделения."с пометкой «Важно правильно подобрать ключ шарда для коллекции» :).http://www.mongodb.org/display/DOCS/Sharding+Introduction#ShardingIntroduction-ShardKeyshttp://www.mongodb.org/display/DOCS/Choosing+a+Shard+Key
Теперь вопрос - «это правильный ключ» (sharding от ObjectID)?
db.runCommand({ shardcollection : "test", key : { _id : 1 }})
Что происходит внутри Mongo?Как Монго будет разбивать данные на куски в этом случае?Предполагая, что у меня изначально есть 10 миллионов записей с 2 серверами шардов - что произойдет на стороне Mongo, когда я захочу добавить еще 2 сервера шардов, когда сбор достигнет 20 миллионов записей?Я не смог найти этот уровень детализации нигде в источниках, связанных с Монго.
Учитывая случайный характер автоматически сгенерированного _id и его структуру,
... http://www.mongodb.org/display/DOCS/Object+IDs ...
Я бы осколок младшим значащим байтом (порядок rtl) с чанками, разделенными на значение 2-3 байта - это обеспечитпростой способ шардинга с помощью 2 ^ N серверов шардов - 2, 4, 8, .., 256 серверов шардов с более или менее равномерной нагрузкой на каждый шард и с минимальной необходимой конфигурацией.Насколько я понимаю, Mongo поддерживает только шардинг / чанкинг по явно заданным диапазонам, и моя идея не сработает.Это правда?