Индексы MongoDB

Я нахожусь в процессе преобразования своего приложения Rails для использования mongodb через mongoid. У меня есть два вопроса, касающихся индексов. Я думаю, что знаю ответ, но мне нужно подтверждение от кого-то, у кого больше опыта работы с mongodb.

Давайте посмотрим на следующий пример, где у меня есть одна реляционная ассоциация между Users и Posts.

пользователь.rb

class User  
    has_many_related :posts  
end

пост.рб

class Post  
    belongs_to_related :user  
end

Теперь, когда я смотрю на индексы, созданные через интерфейс MongoHQ, я замечаю следующие два:

  1. Имя ключа: _id_
    Индексируемое поле: _id
    Уникальный: <blank>
    Гарантируется ли уникальный идентификатор? Если да, то почему не уникальный набор. Если нет, то как я могу установить это и нужно ли это делать?

  2. Имя ключа: user_id_1
    Индексированное поле: user_id
    Уникальное: false
    Правильно ли я предполагаю, что индексированное поле — это имя поля в коллекции? Просто хочу подтвердить, что после имени ключа стоит _1.


person Jey Balachandran    schedule 27.06.2010    source источник


Ответы (3)


Да, _id в MongoDB всегда уникален. Это первичный ключ, поэтому установка UNIQUE не требуется.

person ceejayoz    schedule 27.06.2010

Если вы не укажете значение _id вручную в MongoDB, то для типа будет установлен специальный тип данных BSON, состоящий из 12-байтового двоичного значения.

12-байтовое значение состоит из 4-байтовой метки времени, 3-байтового идентификатора машины, 2-байтового идентификатора процесса и 3-байтового счетчика. Благодаря такому дизайну это значение имеет достаточно высокую вероятность того, что оно уникально.

Ссылка: Полное руководство по MongoDB: база данных NoSQL для облачных и настольных вычислений (книга)

person har    schedule 16.02.2012

person    schedule
comment
Попробуйте оставить полный ответ здесь, ссылки временные и годятся только для дальнейшей документации. - person Coral Doe; 12.10.2012