многократный ключ шарда помогает производительности в mongodb? - PullRequest
4 голосов
/ 13 апреля 2011

Поскольку база данных шардинга использует ключ шарда для разделения чанков и запросов маршрутизации, я думаю, что, возможно, большее количество ключа шарда поможет сделать больше запросов нацеленными

Я попытался указать несколько ключей, например

db.runCommand( { shardcollection : "test.users" , key : {_id:1, email : 1 ,address:1}

но я понятия не имею, работает ли он и каковы недостатки этого

Ответы [ 2 ]

3 голосов
/ 23 октября 2012

Выбор ключа шарда на основе:

{coarseLocality : 1, search : 1}

coarseLocality - это любой населенный пункт, который вы хотите для своих данных, поиск - это обычный поиск по вашим данным.

У вас должен быть индекс на ключе, который вы используете, поэтому, если вы выбираете случайное значение ключ, по которому вы не запрашиваете, вы в основном тратите впустую индекс. Каждый дополнительный индекс делает запись медленнее, поэтому важно поддерживать как можно меньшее количество индексов.

Итак, увеличение комбинации осколков клавиш мало помогает.

Выдержка из книги Кристины Чодров "Scaling MongoDB".

3 голосов
/ 14 апреля 2011

Для ясности, у вас может быть только один ключ шарда. Таким образом, вы не можете иметь несколько ключей шарда .

Однако вы предлагаете составной индекс в качестве ключа шарда. Это можно сделать, но есть некоторые ограничения.

Например, комбинация _id, email и address должна быть уникальной.

Документы для выбора ключа шарда . Есть еще несколько соображений, которые я не могу здесь перечислить. Пожалуйста, посмотрите этот документ.

...