MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Лошо ли е да промените типа _id в MongoDB на цяло число?

Не, изобщо не е лошо и всъщност е вграденият ObjectId е доста голям в индекса, така че ако смятате, че имате нещо по-добро, тогава сте повече от добре дошли да промените стойността по подразбиране на _id поле към каквото и да е.

Но и това е голямо но , има някои съображения, когато решавате да се отдалечите от формулирания по подразбиране ObjectId , особено когато използвате автоматично увеличаващите се _ids, както е показано тук:https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field

Многонишковата обработка не е толкова голям проблем, защото findAndModify и атомните ключалки всъщност могат да се погрижат за това, но тогава просто се сблъсквате с първия си проблем. findAndModify не е нито най-бързата, нито най-леката функция и има значителни спадове в производителността при редовното й използване.

Вие също така трябва да помислите за режийните разходи да направите това сами, дори без findAndModify . За всяка вложка ще ви трябва допълнителна заявка. Представете си, че имате уникален идентификатор, който трябва да заявявате за уникалността всеки път, когато искате да вмъкнете. В крайна сметка скоростта ви на вмъкване ще спадне до обхождане и времето за заключване ще се увеличи.

Разбира се ObjectId наистина е добър в това да бъде уникален, без да се налага да проверява или формулира собствената си уникалност, като докосва базата данни преди вмъкването, следователно няма тези допълнителни разходи.

Ако все още смятате, че един цяло число _id отговаря на вашия сценарий, тогава го направете, но имайте предвид описаните по-горе режийни разходи.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Spring Data MongoDB – индекси, анотации и конвертори

  2. Как да съхранявам/показвам параграфи с mongodb?

  3. Архитектура на приложения, базирана на Mongoose

  4. MongoDB $eq оператор на конвейера за агрегиране

  5. Как мога да споделям колекции на MongoDB между приложения на Meteor?