sql >> Database >  >> NoSQL >> MongoDB

Een overzicht van WiredTiger Storage Engine voor MongoDB

Elk databasesysteem heeft een gestructureerd onderdeel dat verantwoordelijk is voor het onderhouden van de manier waarop gegevens worden opgeslagen en geserveerd, zowel in het geheugen als op de schijf. Dit wordt vaak een opslagmotor genoemd. Bij het evalueren van de architectuur van operationele databases hebben ontwikkelaars vaker factoren uit de eerste hand in rekening gebracht, zoals gegevensmodellering, verminderde latentie, verbeterde doorvoer, gegevensconsistentie, schaalbaarheid en minimale fouttolerantie. Desondanks moet men een gedetailleerde en geavanceerde kennis hebben van de onderliggende opslagengine voor een betere afstemming, zodat deze efficiënt voldoet aan de gemarkeerde factoren.

Een eenvoudige cyclus van een toepassing op db-systeem wordt hieronder geïllustreerd...

Voorbeeld van algemene toepassingsarchitectuur

WiredTiger Storage Engine

MongoDB ondersteunt voornamelijk 3 storage-engines waarvan de prestaties verschillen in overeenstemming met een aantal specifieke workloads. De opslag-engines zijn:

  1. WiredTiger Storage Engine
  2. In-Memory Storage Engine
  3. MMAPv1-opslagengine

De WiredTiger-opslagengine heeft beide configuraties van een B-Tree-gebaseerde engine en een Log Structured Merge Tree-gebaseerde engine.

B-Tree-gebaseerde engine

Dit is een van de oude opslag-engines waarvan andere geavanceerde opstellingen zijn afgeleid. Het is een zelfbalancerende boomgegevensstructuur die zorgt voor het sorteren van gegevens en zoeken, sequentiële toegang, invoegingen en verwijderingen op een logaritmische manier mogelijk maakt. Het is op rijen gebaseerde opslag, zodat elke rij wordt beschouwd als een enkel record in de database

Verdiensten van een B-Tree Storage Engine

  • Hoge doorvoer en lage latentie leesbewerkingen. B-Trees heeft de neiging om breed en ondiep te groeien, zodat er maar heel weinig knopen worden doorkruist.
  • Houdt sleutels in gesorteerde volgorde voor sequentiële verplaatsing en indexen worden gebalanceerd met een recursief algoritme.
  • De interne opslagknooppunten worden altijd ten minste halfvol gehouden, wat over het algemeen verspilling vermindert.
  • Gemakkelijk om een ​​groot aantal toevoegingen en verwijderingen binnen een korte tijdsduur af te handelen.
  • Hierarchische indexering wordt gebruikt met als doel het aantal schijflezen te verminderen.
  • Versnelt invoegingen en verwijderingen door het gebruik van gedeeltelijk volledige blokken.

Beperkingen van een B-Tree opslagengine

  • Slechte schrijfprestaties vanwege de noodzaak om te zorgen voor een goed geordende gegevensstructuur met willekeurige schrijfacties. Willekeurig schrijven is duurder dan sequentiële schrijfacties naar de opslag.
  • Ready-modify-write penalty van een heel blok, zelfs voor een kleine update van een rij in een blok.

Log Structured Merge Tree Based Engine

Vanwege de slechte schrijfprestaties van de B-Tree Based Engine moesten ontwikkelaars een manier bedenken om grotere datasets naar DBMS te verwerken. De Log Structured Merge Tree Based Engine (LSM Tree) is daarom opgericht om de prestaties voor geïndexeerde toegang tot bestanden met een hoog schrijfvolume gedurende een langere periode te verbeteren. In dit geval worden willekeurige schrijfacties in de eerste fase van cascading geheugen omgezet in sequentiële schrijfacties op de schijfgebaseerde eerste component.

Verdiensten van een LSM Tree Storage Engine

  • De mogelijkheid om snel achter elkaar te schrijven verbetert de snelle verwerking van grote snelgroeiende gegevens.
  • Zeer geschikt voor gelaagde opslag, waardoor organisaties een betere keuze hebben op het gebied van kosten en prestaties. Flash-gebaseerde SSD's bieden in dit geval geweldige prestaties.
  • Betere compressie en opslagefficiëntie, dus besparing op opslagruimte en verbetering van bijna volledige opslag
  • Gegevens zijn altijd direct beschikbaar om op te vragen.
  • Invoegen gaat erg snel.

Beperkingen van een B-Tree-opslagengine

Verbruik meer geheugen in vergelijking met B-Tree tijdens leesbewerkingen vanwege lees- en ruimteversterking. Sommige benaderingen, zoals bloeifilters, hebben dit effect in de praktijk echter verminderd, zodat het aantal bestanden dat moet worden gecontroleerd tijdens een puntquery wordt verminderd.

De WiredTiger-technologie is zo ontworpen dat het gebruikmaakt van zowel B-Tree- als LSM-voordelen, waardoor het geavanceerd is en de beste opslagengine voor MongoDB. IT is eigenlijk de standaard opslagengine van MongoDB.

Multiplenines Word een MongoDB DBA - MongoDB naar productie brengenLeer over wat u moet weten om MongoDB gratis te implementeren, bewaken, beheren en schalen

WiredTiger Storage Engine-architectuur

Zoals hierboven vermeld, omvat het het concept van twee basisopslagengines, de B-Tree- en LSM Tree-engines, en daarom is het een multiversion concurrency control (MVCC) -opslagengine. De verdiensten van de twee gecombineerd stellen het systeem in staat een momentopname van de database te zien op het moment dat het toegang krijgt tot een verzameling. Controlepunten zijn zo opgezet dat een consistent beeld van gegevens tussen controlepunten op schijf wordt vastgelegd. In het geval van een crash tussen controlepunten, is het gemakkelijk te herstellen met deze controlepunten of liever, zelfs als er geen controlepunten voor gegevens zijn, kan men deze herstellen van schijfjournaalbestanden.

Uitgebreid gebruik van cache in plaats van schijf om lage latentie te verbeteren. De WiredTiger-opslagengine is sterk afhankelijk van de paginacache van het besturingssysteem, zodat gecomprimeerde gegevens worden opgehaald zonder de schijf erbij te betrekken. Bovendien worden de minst recent gebruikte gegevens uit het RAM-geheugen gewist, waardoor er meer ruimte voor de cache overblijft.

Het B-Tree-opslagconcept biedt zeer efficiënte lees- en schrijfprestaties met een laag CPU-gebruik. Het heeft ook een vergrendelingsimplementatie op documentniveau die zeer gelijktijdige workloads mogelijk maakt en deze gelijktijdigheid vergemakkelijkt bijgevolg de server om te profiteren van veel kern-CPU's. Over het algemeen verbeteren al deze stellingen de hoge schaalbaarheid van de database.

De enterprise-editie ondersteunt codering op de schijf voor de WiredTiger-opslagengine, een functie die de gegevensbeveiliging aanzienlijk verbetert.

De WiredTiger-opslagengine maakt een vooruitschrijvende logboekregistratie mogelijk die zorgt voor een automatisch herstel na een crash en het schrijven duurzaam maakt.

Voordelen van de WiredTiger Storage Engine

  • Efficiënte opslag dankzij een veelvoud aan compressietechnologieën zoals de Snapp-, gzip- en prefix-compressies.
  • Het is zeer schaalbaar met gelijktijdige lees- en schrijfbewerkingen. Dit verbetert uiteindelijk de doorvoer en de algemene databaseprestaties.
  • Verzeker de duurzaamheid van gegevens met vooruitschrijvend logboek en gebruik van controlepunten.
  • Optimaal geheugengebruik. De WiredTiger gebruikt zowel de interne cache als de cache van het bestandssysteem.
  • Met de bestandssysteemcache kan MongoDB gemakkelijk het vrije geheugen gebruiken dat niet wordt gebruikt door de WiredTiger-cache.

Tegenslagen WiredTiger Storage Engine

Moeilijkheden bij het bijwerken van gegevens. Het gelijktijdigheidsschema voorkomt interne updates, zodat het bijwerken van een veldwaarde in een document het hele document opnieuw schrijft.

Conclusie

WiredTiger storage engine integreert concepten van twee grote storage engines, de B-Tree en LSM tree storage engine om maximale en optimale prestaties te bereiken. Door de voordelen van beide gevallen af ​​te wegen en ze gezamenlijk te gebruiken, is de WiredTiger een opslagmotor voor algemeen gebruik. Om deze reden is dit in de huidige versies van MongoDB de standaard opslagengine. Dit houdt in dat als je echt geen sterke reden hebt om het te verafschuwen, dit het beste is voor je gegevens. De keuze voor de opslagengine is echter sterk afhankelijk van uw gegevensgebruik, of liever gezegd waar de WiredTiger niet aan uw verwachtingen kan voldoen. Over het algemeen is dit de beste standaard opslagengine.


  1. Maak een databasecluster in de cloud met MongoDB Atlas

  2. Gegevens maken, lezen, bijwerken en verwijderen met Node.js - Mongoose

  3. Sleutels vinden die niet verlopen zijn in Redis

  4. HBase-prestaties CDH5 (HBase1) versus CDH6 (HBase2)