sql >> Database teknologi >  >> NoSQL >> MongoDB

runtime for at bruge indeksering i mongodb

MongoDB bruger B-tree til indeksering, som det kan ses i kildekoden til index.cpp . Det betyder, at opslag kan udtrykkes som O(log N) hvor N er antallet af dokumenter, men det er også O(D) hvis D er træets dybde (forudsat at træet er noget afbalanceret). D er normalt meget lille, fordi hver knude vil have mange børn.

Antallet af børn i en node i MongoDB er omkring 8192 (btree.h ) altså et indeks med et par milliarder dokumenter kan passe ind i et træ med kun 3 niveauer! Du indser nemt, at logaritmen ikke er log_2 (som i binære træer), men i stedet log_8192, som vokser ekstremt langsomt.

På grund af dette betragtes b-træer normalt som konstanttidsopslag, O(1) , i praksis.

En anden god grund til at holde mange børn i hver node er, at indekset er gemt på disken. Du vil prøve at udnytte al pladsen i en diskblok til én node for at forbedre cache-ydeevnen og reducere disksøgninger. B-træer har meget god diskydeevne, fordi du kun behøver at besøge meget få noder for at finde det, du leder efter.



  1. Hvordan opretter man mongoose-skema dynamisk?

  2. Mongodb Aggregation tæller array/sæt størrelse

  3. $elemmatch virker ikke i MongoDB

  4. mislykkedes med Modtaget hjerteslag fra medlem med samme medlems-id som os selv:0