Inzicht in indexeren in MongoDB

TLDR: Indexeren is gewoon een manier van groeperen van documenten, het verdelen van collecties in groepen te versnellen prestaties

Overview

Indexen verhogen query prestaties en het wordt gebruikt voor zoekopdrachten

Het idee van indexeren in MongoDB is vergelijkbaar met index van een boek, Ze verhogen de snelheid van het vinden van een pagina. De index in MongoDB verhogen de snelheid van het vinden van documenten

Hoe werkt indexen?

Laten we eerst eens begrijpen hoe u verklaart index in MongoDB

collectionName.createIndex({field:value}) //for creating indexcollectionName.dropIndex({field:value}) //for removing index

Hier veld is de “fieldName” die zal worden geïndexeerd. “Waarde” kan -1 of 1 of “tekst” zijn.

Het bepaalt het type index, 1 of -1 verhogen find() query prestaties terwijl “tekst” wordt gebruikt voor het zoeken.

1 en -1 geven de volgorde van de index. Oplopend = -1 & Aflopend =1

Nu, hoe werken indexen onder de motorkap?

Stel je een verzameling gebruikers voor, elk document bevat verschillende informatie, een daarvan is score.

Laten we zeggen dat we willen dat alle gebruikers score 23 hebben.

Wanneer er geen index bestaat, MongoDB gaat door elk document om het opgevraagde document te vinden, Dit heet Collectie scan, MongoDB heeft een afkorting voor deze COLLSCAN (Dit heet tabel scan in relationele databases)

Hoe kunnen we dit optimaliseren?

Om dit te optimaliseren kunnen we een tabel met een kolom voor score en een andere kolom voor verwijzingen die ID’s van documenten met die bepaalde score zal bevatten. Nu hoeven we alleen die tabel te scannen in plaats van de hele database. Dit is veel sneller. Dit is precies wat een Index is.

Indexen helpen MongoDB verkleinen van de dataset die het zal moeten scannen. Dit heet Index Scan, MongoDB heeft hier ook een afkorting voor IXNSCAN

Hier een visuele weergave van een score Index en de mapping.

Verbetering van de prestaties door Index is pas zichtbaar als het aantal documenten de 100K of zo overschrijdt.

U kunt het zelf vergelijken door twee query’s te vergelijken, een met een geïndexeerd veld en een zonder een Index

db.<collection name>.find(query).explain()

Er wordt een Object geretourneerd

object.winingPlan.stage zal het type scan aangeven COLLSCAN of IXNSCAN

maar niet de tijd die de uitvoering in beslag neemt

gebruik de methode explain(‘executionStat’) vóór de query-methode zoals find

db.<collection name>explain('executionStat').find(query)

executionTimeMillis vertelt u de tijd die de uitvoering in beslag neemt

Kanten van Index

Indexen zijn niet gratis, Indexen kosten ruimte. Indexen kunnen de leessnelheid verhogen, maar telkens als er iets wordt geschreven, moet de index worden bijgewerkt om dit op te lossen gebruiken we B-boom we doen enkele berekeningen voor het invoegen, zodat het sneller is.

B-Tree

Indexen zijn niet een tabel van groepen, conceptueel is het eigenlijk een B-Tree (Binary Tree) niet alleen MongoDB, SQL database maakt ook gebruik van B Tree voor indexering

deze video legt het beste B Tree

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.