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

MongoDB Вътрешно внедряване на индексиране?

Мисля, че имате представа, че индексите се съхраняват в RAM. Ами ако кажа, че не са.

Преди всичко трябва да разберем какво представляват индексите, индексите са основно указател, който ни казва къде на диска е този документ. Точно както имаме индексиране в книгата, за по-бърз достъп можем да видим коя тема е на кой номер на страница.

Така че, когато се създават индекси, те също се съхраняват на диска, но когато дадено приложение работи, въз основа на честата употреба и дори по-бързия достъп те се зареждат в RAM, но има разлика между заредено и създадено.

Освен това зареждането на индекс не е същото като зареждането на колекция или записи в RAM. Ако имаме зареден индекс, ние знаем кои всички документи да вземем от диска, за разлика от зареждането на всички документи и проверката на всеки един от тях. Така че индексите избягват сканиране на колекция.

Създаването на индекси е еднократен процес, но всяко писане върху документа може потенциално да промени индексирането, така че може да се наложи част от частта да бъде преизчислена, тъй като записите може да бъдат разбъркани въз основа на промяната в данните. ето защо индексирането прави писането бавно и четенето бързо.

Отново помислете за книга, ако добавите нова тема на да речем 2 страници между книгата, всички индекси след този номер на тема трябва да бъдат преизчислени. съответно.

  • Не, записите не се съхраняват в RAM, докато го създава, обработва някак целия документ в колекцията и създава индексен лист, това би отнело много време, разбираемо, ако има твърде много документи, ето защо има опция за създаване на индекс във фонов режим.
  • Индексът се създава еднократно, можете да го изтриете и да създадете отново, но той няма да бъде пресъздаден при рестартиране на приложението или DB. това би било лудост за огромна колекция в шардирана среда.
  • Отново не е вярно. _id идва като индексирано поле, така че индексът вече е създаден за празна колекция, тъй като когато правите запис, той ще преизчисли индекса. Тъй като това е уникален индекс, обработката ще бъде по-бърза.
  • всички записи ще се съхраняват само в RAM, когато използвате in-memory engine на MongoDB, който според мен идва като корпоративно издание. Поради индексирането няма автоматично да зареди записа в RAM.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Относително импортиране на пакет в приложение на колба на python

  2. NoClassDefFoundError => ClassPath$JavaContext при използване на стартиране на възпроизвеждане

  3. Как бързо да извлечете всички документи MongoDB pymongo

  4. Какво не е наред със заявката за премахване на MongoDB, използвайки mongodb java за подмасив на документ?

  5. Как да създадете уебсайт с лента за търсене, за да правите заявки в база данни на mongo?