MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Ein Überblick über die WiredTiger-Speicher-Engine für MongoDB

Jedes Datenbanksystem verfügt über eine strukturierte Komponente, die dafür verantwortlich ist, wie Daten gespeichert und bereitgestellt werden, sowohl im Speicher als auch auf der Festplatte. Dies wird oft als Speicher-Engine bezeichnet. Bei der Bewertung der Architektur von Betriebsdatenbanken berücksichtigen Entwickler häufiger Faktoren aus erster Hand wie Datenmodellierung, reduzierte Latenzzeiten, verbesserte Durchsatzoperationen, Datenkonsistenz, einfache Skalierbarkeit und minimale Fehlertoleranz. Trotzdem muss man für eine bessere Abstimmung detaillierte und fortgeschrittene Kenntnisse über die zugrunde liegende Speicher-Engine haben, damit sie die hervorgehobenen Faktoren effizient erfüllt.

Ein einfacher Zyklus einer Anwendung auf ein DB-System ist unten dargestellt...

Beispiel einer allgemeinen Anwendungsarchitektur

WiredTiger Speicher-Engine

MongoDB unterstützt hauptsächlich 3 Speicher-Engines, deren Leistung sich in Übereinstimmung mit einigen spezifischen Workloads unterscheidet. Die Speicher-Engines sind:

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

Die WiredTiger-Speicher-Engine hat sowohl Konfigurationen einer B-Tree-basierten Engine als auch einer Log-Structured Merge Tree-basierten Engine.

B-Tree-basierte Engine

Dies ist eine der alten Speicher-Engines, von der andere hochentwickelte Setups abgeleitet sind. Es handelt sich um eine selbstausgleichende Baumdatenstruktur, die die Datensortierung sicherstellt und Suchen, sequenziellen Zugriff, Einfügungen und Löschungen auf logarithmische Weise ermöglicht. Es handelt sich um eine zeilenbasierte Speicherung, sodass jede Zeile als einzelner Datensatz in der Datenbank betrachtet wird

Vorteile einer B-Tree-Speicher-Engine

  • Hoher Durchsatz und Lesevorgänge mit geringer Latenz. B-Bäume neigen dazu, breit und flach zu werden, sodass nur sehr wenige Knoten durchlaufen werden.
  • Hält Schlüssel in sortierter Reihenfolge für sequentielles Durchlaufen und Indizes werden mit einem rekursiven Algorithmus ausgeglichen.
  • Die inneren Speicherknoten sind immer mindestens halb voll, was im Allgemeinen die Verschwendung reduziert.
  • Einfache Handhabung einer großen Anzahl von Einfügungen und Löschungen innerhalb kurzer Zeit.
  • Die hierarchische Indizierung wird mit dem Ziel verwendet, die Lesevorgänge auf der Festplatte zu reduzieren.
  • Beschleunigt Einfügungen und Löschungen durch Verwendung von teilweise vollen Blöcken.

Einschränkungen einer B-Tree-Speicher-Engine

  • Schlechte Schreibleistung aufgrund der Notwendigkeit, eine wohlgeordnete Datenstruktur mit zufälligen Schreibvorgängen sicherzustellen. Zufällige Schreibvorgänge sind teurer als sequentielle Schreibvorgänge in den Speicher.
  • Ready-Modify-Write-Strafe eines ganzen Blocks, selbst für eine geringfügige Aktualisierung einer Zeile in einem Block.

Logstrukturierte, baumbasierte Merge-Engine

Aufgrund der schlechten Schreibleistung der B-Baum-basierten Engine mussten Entwickler einen Weg finden, um mit größeren Datensätzen in DBMS fertig zu werden. Die Log Structured Merge Tree Based Engine (LSM Tree) wurde daher entwickelt, um die Leistung für den indizierten Zugriff auf Dateien mit hohem Schreibvolumen über einen längeren Zeitraum zu verbessern. In diesem Fall werden zufällige Schreibvorgänge in der ersten Stufe des kaskadierenden Speichers in sequentielle Schreibvorgänge in der festplattenbasierten ersten Komponente umgewandelt.

Vorteile einer LSM Tree Storage Engine

  • Die Fähigkeit, schnelle sequentielle Schreibvorgänge durchzuführen, verbessert die schnelle Handhabung großer, schnell wachsender Daten.
  • Gut geeignet für Tiered Storage, wodurch Unternehmen eine bessere Auswahl in Bezug auf Kosten und Leistung erhalten. Flash-basierte SSDs bieten in diesem Fall eine hervorragende Leistung.
  • Bessere Komprimierung und Speichereffizienz, wodurch Speicherplatz eingespart und fast vollständiger Speicherplatz verbessert wird
  • Daten stehen immer sofort zur Abfrage zur Verfügung.
  • Einfügungen sind sehr schnell.

Einschränkungen einer B-Tree-Speicher-Engine

Verbrauchen Sie während Lesevorgängen aufgrund von Lese- und Speicherplatzverstärkung mehr Speicher als B-Tree. Allerdings haben einige Ansätze wie Bloomfilter diesen Effekt in der Praxis dahingehend abgemildert, dass die Anzahl der zu prüfenden Dateien bei einer Punktabfrage reduziert wird.

Die WiredTiger-Technologie wurde so konzipiert, dass sie sowohl B-Tree- als auch LSM-Vorteile nutzt, was sie hoch entwickelt und zur besten Speicher-Engine für MongoDB macht. IT ist eigentlich die Standardspeicher-Engine von MongoDB.

Multiplenines Become a MongoDB DBA – Bringing MongoDB to ProductionErfahren Sie, was Sie wissen müssen, um MongoDBDownload for Free bereitzustellen, zu überwachen, zu verwalten und zu skalieren

WiredTiger Speicher-Engine-Architektur

Wie oben erwähnt, beinhaltet es das Konzept von zwei grundlegenden Speicher-Engines, nämlich den B-Tree- und LSM-Tree-Engines, daher ist es eine Multiversion Concurrency Control (MVCC)-Speicher-Engine. Die Vorzüge der beiden kombiniert ermöglichen es dem System, eine Momentaufnahme der Datenbank zu sehen, wenn es auf eine Sammlung zugreift. Checkpoints werden so eingerichtet, dass zwischen den Checkpoints eine konsistente Ansicht der Daten auf der Festplatte aufgezeichnet wird. Im Falle eines Absturzes zwischen Checkpoints ist es einfach, diese Checkpoints wiederherzustellen, oder besser gesagt, selbst wenn es keine Checkpoints für Daten gibt, kann man sie aus Festplatten-Journaldateien wiederherstellen.

Umfassende Nutzung des Caches anstelle der Festplatte, um die niedrige Latenz zu verbessern. Die WiredTiger-Speicher-Engine verlässt sich stark auf den Seiten-Cache des Betriebssystems, sodass komprimierte Daten ohne Beteiligung der Festplatte abgerufen werden. Außerdem werden die am längsten verwendeten Daten aus dem RAM gelöscht, wodurch mehr Speicherplatz für den Cache erhalten wird.

Das B-Tree-Speicherkonzept bietet hocheffiziente Lesevorgänge und eine gute Schreibleistung bei geringer CPU-Auslastung. Es verfügt auch über eine Sperrimplementierung auf Dokumentebene, die hochgradig gleichzeitige Arbeitslasten ermöglicht, und diese Parallelität erleichtert es dem Server folglich, viele Kern-CPUs zu nutzen. Im Allgemeinen fördern all diese Thesen die hohe Skalierbarkeit der Datenbank.

Die Enterprise-Edition unterstützt die Festplattenverschlüsselung für die WiredTiger-Speicher-Engine, eine Funktion, die die Datensicherheit erheblich verbessert.

Die WiredTiger-Speicher-Engine ermöglicht eine Write-Ahead-Protokollierung, die eine automatische Wiederherstellung nach einem Absturz gewährleistet und Schreibvorgänge dauerhaft macht.

Vorteile der WiredTiger Storage Engine

  • Effiziente Speicherung aufgrund einer Vielzahl von Komprimierungstechnologien wie Snapp, gzip und Präfix-Komprimierung.
  • Es ist hochgradig skalierbar mit gleichzeitigen Lese- und Schreibvorgängen. Dies verbessert letztendlich den Durchsatz und die allgemeine Datenbankleistung.
  • Sichern Sie die Dauerhaftigkeit der Daten mit Write-Ahead-Protokoll und Verwendung von Checkpoints.
  • Optimale Speichernutzung. Der WiredTiger verwendet sowohl den internen Cache als auch den Dateisystem-Cache.
  • Mit dem Dateisystem-Cache kann MongoDB problemlos den freien Speicher nutzen, der nicht vom WiredTiger-Cache verwendet wird.

WiredTiger Speicher-Engine-Rückschläge

Schwierigkeiten beim Aktualisieren von Daten. Das Parallelitätsschema verhindert direkte Aktualisierungen, sodass durch die Aktualisierung eines Feldwerts in einem Dokument das gesamte Dokument neu geschrieben wird.

Schlussfolgerung

Die WiredTiger-Speicher-Engine integriert Konzepte von zwei großen Speicher-Engines, der B-Tree- und der LSM-Tree-Speicher-Engine, um eine maximale und optimale Leistung zu erzielen. Das Abwägen der Vorteile aus beiden Fällen und deren gemeinsame Nutzung macht den WiredTiger zu einer Allzweck-Speichermaschine. Aus diesem Grund ist es in den aktuellen Versionen von MongoDB die Standardspeicher-Engine. Dies bedeutet, dass es das Beste für Ihre Daten ist, wenn Sie wirklich keinen triftigen Grund haben, es zu verabscheuen. Die Wahl der Speicher-Engine hängt jedoch stark von Ihrem Datenanwendungsfall ab, bzw. wo der WiredTiger Ihre Erwartungen nicht erfüllen kann. Im Allgemeinen ist dies die beste Standard-Speicher-Engine.