In mongoDB3 erschien eine neue Speicher-Engine: WiredTiger . Dennoch ist MMAPv1 in Mongo immer noch die Standardoption .
Eines ist vielleicht nicht besser als das andere, es ist oft eine Frage des Anwendungsfalls und der Auswahl des richtigen Werkzeugs für den Job. Aber welcher Motor passt zu welchem Job?
In der Tat, während MMAPv1 der Standard - Engine ist, scheint WiredTiger besser in fast allen Bereichen. Es hat die gleichen Funktionen wie MMAPv1 plus:
- bessere Schreibleistung,
- Parallelität auf Dokumentebene,
- Kompression,
- Schnappschüsse und Checkpoints-System.
Ich habe eine Vergleichstabelle im MongoDB-Blog gefunden :
Gibt es einen Grund, WiredTiger nicht zu wählen, es sei denn, Sie arbeiten unter Solaris?
BEARBEITEN
Hier sind zwei Videos, die detailliert die Interna von WiredTiger und MMAPv1 erklären .
Antworten:
Persönlich bevorzuge ich die mmapv1-Speicher-Engine ab sofort aus drei Gründen.
Grund 1: Fälligkeit
Es ist nicht so, dass WiredTiger noch nicht ausgereift ist. Aber mmapv1 ist gut verstanden und kampferprobt auf und ab, hin und her und darüber hinaus. WiredTiger hatte in letzter Zeit einige schwerwiegende Probleme (siehe http://jira.mongodb.com für Details), und ich bin nicht bereit, meine Kunden dazu zu bringen, das nächste Problem auf die harte Tour zu finden.
Grund 2: Eigenschaften
Gegeben, WT hat einige grundsätzliche fantastische Funktionen. Die Sache ist: Ich habe niemanden gesehen, der von ihnen profitiert. Kompression? In beiden Fällen opfern Sie ziemlich viel, um Leistung für relativ billigen Speicherplatz zu erzielen. Fehlt das Problem der Dokumentenmigration beim Erweitern von Dokumenten? Nun, wir haben immer noch die 16-MB-Größenbeschränkung und zusätzliche Komplexität für eingebettete Dokumente, insbesondere wenn das Einbetten übertrieben ist.
Es gibt noch andere Funktionen, aber im Allgemeinen: Ich sehe, dass sie von jetzt an nicht viel profitieren .
Grund 3: Gesamtbetriebskosten
Für neue Projekte ist WT möglicherweise in Ordnung, insbesondere seit 3.2, da das Folgende nicht zutrifft.
Datenmigrationen sind teuer. Es muss geplant werden, der Plan muss von allen Beteiligten vereinbart werden, Notfallpläne müssen erstellt und vereinbart werden, die Migration muss vorbereitet, durchgeführt und überprüft werden. Vervielfachen Sie nun den Zeitaufwand mit den Stakeholdern, die an diesem Prozess beteiligt sind, und die Kosten für die Datenmigration. Der Return on Investment erscheint dagegen eher gering. Sie können ziemlich viel skalieren, anstatt eine Migration durchzuführen, wenn Sie diese Faktoren berücksichtigen. Um Ihnen einen Eindruck zu vermitteln: Ich würde ungefähr eine "Mannwoche" pro Stakeholder veranschlagen, wenn eine Migration richtig geplant, durchgeführt und überprüft wird. Bei Kosten von 100 USD pro Stunde und Person und nur drei beteiligten Personen (Manager, DBA und Entwickler) belaufen sich diese auf 12.000 USD. Beachten Sie, dass dies eine vorsichtige Schätzung ist.
Fazit
All diese Faktoren haben mich zu dem Schluss gebracht, WT überhaupt nicht zu verwenden. Im Augenblick.
Aktualisieren
Dieser Beitrag ist einige Monate alt und verdient ein Update
Bei Reife
Meine ursprünglichen Kommentare zur Reife sind veraltet. WiredTiger hat seit einiger Zeit keine größeren Probleme mehr und ist seit MongoDB 3.2 die Standard-Speicher-Engine
Ein Funktionen
Meine ursprünglichen Kommentare sind immer noch gültig, imho.
Kompression
Wenn jedoch das Budget knapp ist oder die Leistung im Allgemeinen nicht das Hauptproblem ist, ist der Leistungskompromiss eher gering, und Sie tauschen im Allgemeinen geringfügige Leistungseinbußen (im Vergleich zu unkomprimiertem WT) gegen Speicherplatz aus, indem Sie das nutzen, was sonst im Leerlauf wäre um: die CPU.
Verschlüsselung
MongoDB 3.2 Enterprise hat die Möglichkeit eingeführt, WiredTiger-Speicher verschlüsseln zu lassen. Für Daten mit erhöhten Sicherheitsanforderungen ist dies eine Killer-Funktion und macht WT zur einzigen Speicher-Engine der Wahl, sowohl technisch (MMAPv1 unterstützt keine Verschlüsselung) als auch konzeptionell. Abgesehen von der Möglichkeit verschlüsselter Festplattenpartitionen, obwohl Sie diese Option in einigen Umgebungen möglicherweise nicht haben.
Sperren auf Dokumentebene
Ich muss zugeben, dass ich dieses Merkmal von WT in meiner obigen Analyse im Wesentlichen weggelassen habe, weil es weder für mich noch für meine Kunden zutraf, als ich die ursprüngliche Antwort schrieb.
Abhängig von Ihrem Setup, vor allem wenn Sie viele Schreibclients gleichzeitig haben, kann diese Funktion die Leistung erheblich steigern.
Ein Gesamtbetriebskosten
Migrationen sind immer noch teuer. Unter Berücksichtigung der Änderungen der Laufzeit und der geänderten Sicht auf die Funktionen kann sich eine Migration jedoch lohnen, wenn:
Aktualisierte Schlussfolgerung
Für neue Projekte verwende ich jetzt WiredTiger. Da die Migration von einem komprimierten auf einen unkomprimierten WiredTiger-Speicher relativ einfach ist, beginne ich eher mit der Komprimierung, um die CPU-Auslastung zu verbessern ("Mehr Leistung für wenig Geld"). Sollte sich die Komprimierung spürbar auf die Leistung oder UX auswirken, migriere ich zu unkomprimiertem WiredTiger.
Bei Projekten mit vielen gleichzeitigen Autoren lautet die Antwort auf die Frage, ob migriert werden soll oder nicht, fast immer "Ja" - es sei denn, das Budget des Projekts verbietet die Investition. Auf lange Sicht sollte sich die Leistungssteigerung amortisieren, wenn der Einsatz anderweitig sinnvoll geplant war. Sie müssen der Berechnung jedoch etwas Entwicklungszeit hinzufügen, da in einigen Fällen der Treiber aktualisiert werden muss und möglicherweise Probleme auftreten, die behoben werden müssen.
Für Projekte, bei denen das Budget knapp ist und die momentan nicht mehr Speicherplatz bieten, kann die Migration auf einen komprimierten WiredTiger eine Option sein, die Komprimierung belastet jedoch die CPU, wie es mit MMAPv1 noch nicht möglich ist. Darüber hinaus könnten die Migrationskosten für ein solches Projekt unerschwinglich sein.
quelle
Meine zwei Cent:
Bei der Aufzeichnung in WiredTiger können Aktualisierungen beim Herunterfahren verloren gehen, da für die Speicherung der Journaldatensätze die speicherinterne Pufferung verwendet wird.
Die Aufzeichnung in MMAPv1 schreibt Änderungen in die Journaldateien auf der Festplatte.
quelle
Wir sind von MMAPv1 auf WiredTiger umgestiegen, um eine 7- bis 10-fache Leistungssteigerung zu erzielen. Wir mussten zu MMAPv1 zurückkehren, da MongoDB abstürzt, wenn der WiredTiger-Cache 100% erreicht. Wir haben unsere Erfahrungen hier dokumentiert - https://blog.clevertap.com/sleepless-nights-with-mongodb-wiredtiger-and-our-return-to-mmapv1/
quelle