Ich arbeite an einer Anwendung, bei der es einen ziemlich dramatischen Unterschied in den Nutzungsmustern zwischen "heißen" Daten und anderen Daten gibt. Wir haben MongoDB als unser Daten-Repository ausgewählt, und in den meisten Fällen scheint es eine fantastische Übereinstimmung für die Art der Anwendung zu sein, die wir erstellen.
Hier ist das Problem. Es wird ein zentrales Dokument-Repository geben, das ziemlich oft durchsucht und aufgerufen werden muss: Die Größe beträgt jetzt ungefähr 2 GB und wird in den nächsten paar Jahren auf 4 GB anwachsen. Um die Leistung zu erhöhen, werden wir diese DB auf einem gespiegelten SSD-Array der Server-Klasse platzieren. Angesichts der Gesamtgröße der Daten sollten Sie sich nicht vorstellen, dass Speicher zu einem Problem wird.
Das System führt auch Protokollversionen, Audit Trail, Kundeninteraktionen, Benachrichtigungsdatensätze und dergleichen. Das wird nur selten referenziert und könnte ziemlich groß werden. Wir würden dies gerne auf traditionellere rotierende Festplatten legen, da es selten zugänglich wäre (wir vermuten, dass auf einen typischen Datensatz vier oder fünf Mal pro Jahr zugegriffen werden kann und nur dazu benötigt wird befriedigen Forschung und Kundendienstanfragen) und konnten ziemlich groß auch wachsen.
Ich habe kein Referenzmaterial gefunden, das angibt, ob MongoDB uns erlauben würde, verschiedene Datenbanken auf verschiedenen Platten zu platzieren (unter Windows lief Mongod), aber das muss nicht der Fall sein, wenn wir in Produktion gehen.
Entschuldigen Sie alle Einzelheiten hier, aber dies sind die wichtigsten Faktoren, über die wir uns Gedanken machen müssen, wenn wir die Bereitstellung planen. Angesichts der Vorliebe von Mongo, den gesamten verfügbaren Speicher zu nutzen, und dass es auf einem Rechner läuft, der mit 24 GB Arbeitsspeicher auskommt, versuchen wir, die beste Produktionskonfiguration für unsere Datenbank (en) zu erarbeiten.
Hier sind also unsere Optionen:
Einzelne Instanz von Mongo mit mehreren Datenbanken Dies scheint den Vorteil der Einfachheit zu haben, aber ich habe noch keine definitive Antwort darüber gefunden, wie man Datenbanken auf verschiedene physische Laufwerke aufteilt Maschine.
Zwei Instanzen von Mongo , einer für die "heißen" Daten und der andere für den Archivierungskram. Ich bin mir nicht sicher, wie gut Mongo mit zwei Instanzen von Mongod um Ressourcen konkurrieren wird, aber wir dachten, dass wir, da die 32-Bit-Version des Servers auf 2 GB Speicher beschränkt ist, diese für das Archiv verwenden könnten es überwältigt die Ressourcen der Maschine. Für die "heißen" Daten könnten wir dann einfach eine 64-Bit-Instanz der Datenbank-Engine für die Verwendung eines SSD-Arrays konfigurieren, und angesichts der relativ geringen Größe unserer Daten könnten die gesamte Datenbank und die Indizes direkt ohne Seitenfehler gespeichert werden .
Zwei Instanzen von Mongo in zwei separaten virtuellen Maschinen Würden mit VMWare oder ähnlichem zwei Linux-Maschinen erstellen, die Mongo separat hosten könnten. Obwohl dies die administrative Belastung möglicherweise etwas erhöht, scheint mir dies die feingranularste Kontrolle der Systemressourcennutzung zu bieten, während dem Windows Server-Host immer noch genug Speicher zum Ausführen von IIS und seinen eigenen Prozessen verbleibt.
Aber all dies ist Spekulation, da keiner von uns zuvor jemals bedeutende MongoDB-Implementierungen durchgeführt hat, so dass wir nicht über eine große Erfahrungsbasis verfügen, auf die wir zurückgreifen können.
Meine eigentliche Frage ist, ob es möglich ist, dass zwei Datenbanken in der gleichen mongod Server-Instanz komplett getrennte Laufwerke haben. Aber auch ein Einblick in die Vor- und Nachteile unserer drei identifizierten Einsatzmöglichkeiten wäre willkommen.
Das ist eigentlich eine ziemlich einfache Sache, wenn man Linux benutzt:
dbpath
-Verzeichnisses an (vergessen Sie nicht, die entsprechenden Zeilen zu /etc/fstab
hinzuzufügen!) Bearbeiten: Als Randnotiz möchte ich hinzufügen, dass Sie Windows nicht als Betriebssystem für eine MongoDB-Produktion verwenden sollten. Die verfügbaren Dateisysteme NTFS und ReFS funktionieren im Vergleich zu ext4 oder XFS (letzteres ist das empfohlene Dateisystem für die Produktion, siehe MongoDB-Produktionsnotizen für Details ). Aus diesem Grund würde ich Linux vorschlagen. Ein anderer Grund ist der RAM, der von eher unnötigen Subsystemen von Windows verwendet wird, wie die GUI.