2013-05-21 2 views
0

Мы строим наш первый MongoDB, и в настоящее время мы пытаемся выбрать правильный ключ осколка.Выбор правильного ключа осколка в MongoDB

Каждый документ в нашей основной коллекции содержит около 40 voice call связанных полей, а основное поле, которое мы используем в запросах, - это поле UserId. Вот почему мы думаем о сложном осколочном ключе userid и CallStartTime.

Они не уверены в отношении второго поля, так как StartTime всегда продвигается, и можно утверждать, что он не является случайным. Это заставило нас заменить его на UserId и hashed _id (внутренний идентификатор манго после хэша).

Это первый вариант, или мы лучше используем последний?

+4

Вы можете использовать хэшированные индексы на том, что: http://docs.mongodb.org/manual/core/sharded-clusters/#sharding-hashed-sharding – Sammaye

+0

Кроме того, это больше похоже на вопрос системного администрирования ... –

+0

Я также рассмотрел хеш-ключи: «... заменить это с UserId + hashed _id (mongo internal id after hash) ... " – Alon1980

ответ

0

Какие запросы вы выполняете? Каковы шаблоны доступа.

В идеале вы хотите использовать ключ с хорошей мощностью, писать масштабирование и изолировать запрос.

В приведенных выше примерах вам нужно знать callstarttime или hash, чтобы избежать операций сбора рассеяния.

+0

не очень - чтобы избежать разброса, вам нужно иметь хотя бы первичный ключ, и все в порядке. – Alon1980

+0

Большинство наших запросов основаны на пользователе. у нас также могут быть запросы, которые будут использовать последнее время обновления, поэтому мы рассматриваем наш ключ осколка, чтобы быть userid + последним временем обновления. – Alon1980

Смежные вопросы