sql >> Databasteknik >  >> NoSQL >> MongoDB

En översikt över WiredTiger Storage Engine för MongoDB

Varje databassystem har en strukturerad komponent som ansvarar för att underhålla hur data lagras och serveras både i minne och disk. Detta kallas ofta för en lagringsmotor. När utvecklare utvärderar arkitekturen för operativa databaser lägger de oftare på förstahandsfaktorer som datamodellering, minskad latens, förbättrad genomströmningsoperationer, datakonsistens, enkel skalbarhet och minimal feltolerans. Trots det måste man ha en detaljerad och avancerad kunskap om den underliggande lagringsmotorn för en bättre inställning så att den levererar de markerade faktorerna effektivt.

En enkel cykel av en applikation till db-system illustreras nedan...

Exempel på vanlig applikationsarkitektur

WiredTiger Storage Engine

MongoDB stöder huvudsakligen 3 lagringsmotorer vars prestanda skiljer sig åt beroende på vissa specifika arbetsbelastningar. Lagringsmotorerna är:

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

WiredTiger-lagringsmotorn har både konfigurationer av en B-Tree-baserad motor och en Log Structured Merge Tree-baserad motor.

B-Tree Based Engine

Detta är en av de gamla lagringsmotorerna som andra sofistikerade inställningar härrör från. Det är en självbalanserande träddatastruktur som säkerställer datasortering och möjliggör sökningar, sekventiell åtkomst, infogning och borttagning på ett logaritmiskt sätt. Det är radbaserad lagring så att varje rad anses vara en enda post i databasen

Fördelarna med en B-Tree Storage Engine

  • Hög genomströmning och låg latens avläsningar. B-Trees har en tendens att växa sig breda och grunda så att väldigt få noder korsas.
  • Håller nycklar i sorterad ordning för sekventiell övergång och index balanseras med en rekursiv algoritm.
  • De invändiga förvaringsnoderna hålls alltid minst halvfulla vilket i allmänhet minskar svinnet.
  • Lätt att hantera ett stort antal infogningar och borttagningar inom kort tid.
  • Hierarkisk indexering används i syfte att minska diskläsningar.
  • Gör snabbare infogning och borttagning genom användning av delvis fullständiga block.

Begränsningar för en B-Tree-lagringsmotor

  • Dålig skrivprestanda på grund av behovet av att säkerställa en välordnad datastruktur med slumpmässiga skrivningar. Slumpmässiga skrivningar är dyrare än sekventiella skrivningar till lagringen.
  • Klar-modifiera-skriv-straff för ett helt block även för en mindre uppdatering av en rad i ett block.

Loggstrukturerad sammanslagningsträdbaserad motor

På grund av den dåliga skrivprestandan hos den B-Tree-baserade motorn, var utvecklare tvungna att komma på ett sätt att hantera större datamängder till DBMS. Log Structured Merge Tree Based Engine (LSM Tree) etablerades därför för att förbättra prestandan för indexerad åtkomst till filer med hög skrivvolym under en längre period. I det här fallet omvandlas slumpmässiga skrivningar i det första steget av kaskadminnet till sekventiella skrivningar vid den diskbaserade första komponenten.

Fördelarna med en LSM Tree Storage Engine

  • Möjligheten att göra snabba sekventiella skrivningar förbättrar snabb hantering av stora snabbväxande data.
  • Väl lämpad för lagring i nivåer, vilket ger organisationer ett bättre urval vad gäller kostnad och prestanda. Flash-baserade SSD:er ger bra prestanda i det här fallet.
  • Bättre komprimering och lagringseffektivitet vilket sparar lagringsutrymme och förbättrar nästan full lagring
  • Data är alltid tillgänglig för frågor omedelbart.
  • Infogningar går mycket snabbt.

Begränsningar för en B-Tree-lagringsmotor

Förbruka mer minne jämfört med B-Tree under läsoperationer på grund av läsning och utrymmesförstärkning. Vissa tillvägagångssätt som bloomfilter har dock mildrat denna effekt i praktiken så att antalet filer som ska kontrolleras under en punktförfrågan minskar.

WiredTiger-teknologin designades på ett sätt för att utnyttja både B-Tree- och LSM-fördelar, vilket gör den sofistikerad och den bästa lagringsmotorn för MongoDB. IT är faktiskt MongoDB:s standardlagringsmotor.

Severalnines Become a MongoDB DBA - Bringing MongoDB to ProductionLäs om vad du behöver veta för att distribuera, övervaka, hantera och skala MongoDBDownload gratis

WiredTiger Storage Engine Architecture

Som nämnts ovan involverar det konceptet med två grundläggande lagringsmotorer som är B-Tree- och LSM Tree-motorerna, så det är en lagringsmotor för multiversion concurrency control (MVCC). Fördelarna med de två kombinerade gör det möjligt för systemet att se en ögonblicksbild av databasen när det går åt en samling. Kontrollpunkter upprättas så att en konsekvent bild av data registreras på disken mellan kontrollpunkterna. Vid en krasch mellan checkpoints är det lätt att återställa med dessa checkpoints eller snarare, även om det inte finns några checkpoints för data kan man återställa det från diskjournalfiler.

Omfattande användning av cache snarare än disk för att förbättra låg latens. WiredTiger-lagringsmotorn förlitar sig starkt på OS-sidcachen så att komprimerad data hämtas utan att disken involveras. Dessutom rensas de minst nyligen använda data från RAM-minnet vilket bevarar mer utrymme för cachen.

B-Tree lagringskoncept erbjuder mycket effektiv läsning och bra skrivprestanda med låg CPU-användning. Den har också en låsningsimplementering på dokumentnivå som möjliggör mycket samtidiga arbetsbelastningar och denna samtidighet underlättar följaktligen servern att dra fördel av många kärn-CPU:er. I allmänhet förbättrar alla avhandlingar databasens höga skalbarhet.

Enterprise-utgåvan stöder kryptering på disk för WiredTiger-lagringsmotorn, vilket är en funktion som avsevärt förbättrar datasäkerheten.

WiredTiger-lagringsmotorn möjliggör en skrivningsloggning som säkerställer en automatisk kraschåterställning och gör skrivningen hållbar.

Fördelar med WiredTiger Storage Engine

  • Effektiv lagring tack vare ett flertal komprimeringstekniker som Snapp-, gzip- och prefixkomprimering.
  • Den är mycket skalbar med samtidiga läsningar och skrivningar. Detta förbättrar i slutändan genomströmningen och den allmänna databasprestanda.
  • Försäkra dig om datahållbarhet med loggbok och användning av kontrollpunkter.
  • Optimal minnesanvändning. WiredTiger använder både den interna cachen och filsystemets cache.
  • Med filsystemcachen kan MongoDB enkelt använda det lediga minnet som inte används av WiredTiger-cachen.

WiredTiger Storage Engine Bakslag

Svårigheter att uppdatera data. Samtidighetsschemat förhindrar uppdateringar på plats så att uppdatering av ett fältvärde i ett dokument omskriver hela dokumentet.

Slutsats

WiredTiger-lagringsmotorn integrerar koncept från två stora lagringsmotorer, B-Tree- och LSM-trädlagringsmotorn för att uppnå maximal och optimal prestanda. Att väga fördelarna från båda fallen och använda dem tillsammans gör WiredTiger till en generell lagringsmotor. Av denna anledning, i de nuvarande versionerna av MongoDB, är det standardlagringsmotorn. Detta innebär att om du verkligen inte har en stark anledning att avsky det, så är det det bästa för din data. Men valet av lagringsmotor är starkt beroende av ditt dataanvändningsfall eller snarare där WiredTiger inte kan uppfylla dina förväntningar. I allmänhet är detta den bästa standardlagringsmotorn.


  1. Geospatial $nära inom aktuellt dokumentfältvärde

  2. MongoDB-aggregation med Java-drivrutin

  3. MongoDB-sökning när främmande fält är en samling objekt

  4. Hur kan jag köra redis på en enda server på olika portar?