2014-01-09 6 views
0

Так как-то MongoDB не поддерживает автоинкремент для масштабирования.Отношения MongoDB/NoSQL без AutoIncrement?

Мой вопрос в том, что тогда я использую для ограничений?

Должен ли я использовать Object-id в качестве ограничения для поиска чего-то? Разве это не будет медленным? (Это поле 12-BYTE!)

Должен ли я использовать уникальный ключ как своего рода «первичный ключ»? например Books.find('actual-author-name')? Будет ли это быстрее?

В общем, каков общий/принятый способ сделать это?

+0

Если у вас есть очень мало данных (в этом случае я не знаю, почему вы используете MongoDB), то 12 байт не будет, что «медленный» – Sammaye

ответ

1

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

1

Вы, , можете использовать использовать поля с автоматическим приращением. Смотрите этот код в документации MongoDB в:

http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/#a-counters-collection

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

0

Точка автоматического инкремента - это, как правило, автоматическое генерирование значений ключа, которые гарантированно будут уникальными.

MongoDB ObjectID s может заполнить эту роль, будучи не только уникальным для коллекции, но даже уникальным по всему миру. Они также находятся в порядке возрастания, потому что они начинаются с текущей метки времени.

Они не гарантированы на последовательные, но столбцы автоматического наращивания в базах данных SQL также не являются, поскольку при удалении записи этот идентификатор не будет использоваться повторно.

Обратите внимание, что поле _id MongoDB необязательно должно быть ObjectID. Вы также можете представить любые другие данные. Поэтому, когда ваши наборы данных уже имеют уникальные идентификаторы, вы можете использовать их, заполнив _id вручную, прежде чем вставлять документы. Поле _id даже не должно быть примитивным значением. Это может быть даже объект. Таким образом, вы можете иметь первичные ключи нескольких полей, как это:

_id: { first_name = "John", last_name = "Smith" } 
Смежные вопросы