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:
- Sie benötigen eine Verschlüsselung (nur Enterprise Edition!)
- Leistung ist nicht Ihr absolutes Hauptanliegen und Sie können mit Komprimierung auf lange Sicht Geld sparen (konservativ kalkulieren)
- Es werden viele Prozesse gleichzeitig geschrieben, da durch die Leistungssteigerung möglicherweise vertikale oder horizontale Skalierungen eingespart werden.
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.