MongoDB
Steckbare Storage Engines
Suche…
Bemerkungen
In MongoDB 3.0 sind MMAP (Standard) und WiredTiger die stabilen Speicher-Engines. Normalerweise verwenden Sie MMAP, wenn Ihre App lesebereit ist. Wenn es sehr schwer ist, verwenden Sie WiredTiger.
Ihre Lösung verfügt möglicherweise auch über gemischte Replikatsatzmitglieder, bei denen Sie einen Knoten mit MMAP und einen anderen mit WiredTiger konfigurieren können. Sie können eine verwenden, um umfangreiche Daten einzufügen, und die andere, um sie mit analytischen Werkzeugen zu lesen.
Nach MongoDB 3.2 wird WiredTiger zur Standard-Engine.
MMAP
MMAP ist eine steckbare Speicher-Engine, die nach dem Befehl mmap()
Linux benannt wurde. Es ordnet Dateien dem virtuellen Speicher zu und optimiert Leseaufrufe. Wenn Sie eine große Datei haben, aber nur einen kleinen Teil davon lesen müssen, ist mmap()
viel schneller als ein read()
Aufruf, der die gesamte Datei in den Speicher bringt.
Ein Nachteil besteht darin, dass nicht zwei Schreibaufrufe für dieselbe Sammlung parallel verarbeitet werden können. Daher verfügt MMAP über Sperren auf Sammlungsebene (und nicht wie von WiredTiger angebotene Sperren auf Dokumentebene). Diese Auflistungssperre ist erforderlich, da ein MMAP-Index auf mehrere Dokumente verweisen kann. Wenn diese Dokumente gleichzeitig aktualisiert werden könnten, wäre der Index inkonsistent.
WiredTiger
WiredTiger unterstützt LSM-Bäume zum Speichern von Indizes . LSM-Bäume sind schneller für Schreibvorgänge, wenn Sie große Arbeitslasten von zufälligen Einfügungen schreiben müssen.
In WiredTiger gibt es keine direkten Updates . Wenn Sie ein Element eines Dokuments aktualisieren müssen, wird ein neues Dokument eingefügt, während das alte Dokument gelöscht wird.
WiredTiger bietet auch Parallelität auf Dokumentebene . Es wird davon ausgegangen, dass sich zwei Schreibvorgänge nicht auf dasselbe Dokument auswirken. Andernfalls wird ein Vorgang zurückgespult und später ausgeführt. Das ist ein großer Leistungsschub, wenn Rückspulungen selten sind.
WiredTiger unterstützt die Algorithmen Snappy und zLib zur Komprimierung von Daten und Indizes im Dateisystem. Bissig ist die Standardeinstellung. Es ist weniger CPU-intensiv, hat jedoch eine niedrigere Komprimierungsrate als zLib.
So verwenden Sie die WiredTiger Engine
mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>
Hinweis:
- Nach mongodb 3.2 ist die Standard-Engine WiredTiger.
-
newWiredTigerDBPath
sollte keine Daten einer anderen Speicher-Engine enthalten. Um Ihre Daten zu migrieren, müssen Sie sie sichern und erneut in die neue Speicher-Engine importieren.
mongodump --out <exportDataDestination>
mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>
mongorestore <exportDataDestination>
In Erinnerung
Alle Daten werden im Arbeitsspeicher (RAM) gespeichert, um das Lesen zu erleichtern.
Mongo-Felsen
Eine Schlüsselwertmaschine, die zur Integration mit Facebooks RocksDB entwickelt wurde.
Fusion-io
Eine von SanDisk erstellte Speicher-Engine, die es ermöglicht, die Dateisystemschicht des Betriebssystems zu umgehen und direkt auf das Speichergerät zu schreiben.
TokuMX
Eine von Percona erstellte Speicher-Engine, die fraktale Baumindizes verwendet