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

време на изпълнение на използване на индексиране в mongodb

MongoDB използва B-дърво за индексиране, както може да се види в изходния код за index.cpp . Това означава, че справките могат да бъдат изразени като O(log N) където N е броят на документите, но също така е O(D) ако D е дълбочината на дървото (приемайки, че дървото е донякъде балансирано). D обикновено е много малък, защото всеки възел ще има много деца.

Броят на децата във възел в MongoDB е около 8192 (btree.h ), така че индекс с няколко милиарда документите могат да се поберат в дърво само с 3 нива! Лесно разбирате, че логаритъма не е log_2 (както в двоичните дървета), а вместо това log_8192, който расте изключително бавно.

Поради това b-дърветата обикновено се разглеждат като търсене в постоянно време, O(1) , на практика.

Друга добра причина за поддържане на много деца във всеки възел е, че индексът се съхранява на диск. Искате да опитате да използвате цялото пространство в дисковия блок за един възел, за да подобрите производителността на кеша и да намалите търсенето на диск. B-дърветата имат много добра дискова производителност, защото трябва да посетите много малко възли, за да намерите това, което търсите.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да замените елемент в поле на масив в mongodb

  2. Mongoose / mongoDb търсене, където имам нужда от стойности на непопълнено свойство

  3. Какъв е максималният размер на пакетната операция на MongoDB?

  4. използване на secureIndex в схема на mongodb с помощта на mongoose

  5. MongoDB $toUpper