Dies ist sehr systemabhängig, aber die Chancen stehen gut, dass wir über eine beliebige Klippe hinaus in echte Schwierigkeiten geraten. Ich bin gespannt, welche Faustregeln es für ein gutes Verhältnis von RAM zu Festplattenspeicher gibt. Wir planen unsere nächste Runde von Systemen und müssen einige Entscheidungen in Bezug auf RAM, SSDs und die Menge der neuen Knoten treffen.
Nun aber zu einigen Details zur Leistung!
Während des normalen Workflows eines einzelnen Projektlaufs wird MongoDB mit einem sehr hohen Prozentsatz an Schreibvorgängen (70-80%) getroffen. Sobald die zweite Stufe der Verarbeitungspipeline erreicht ist, wird sie extrem häufig gelesen, da die in der ersten Hälfte der Verarbeitung identifizierten Datensätze dedupliziert werden müssen. Dies ist der Workflow, für den "Keep your working set in RAM" gemacht ist, und wir entwickeln nach dieser Annahme.
Der gesamte Datensatz wird ständig mit zufälligen Abfragen aus vom Endbenutzer abgeleiteten Quellen durchsucht. Obwohl die Häufigkeit unregelmäßig ist, ist die Größe normalerweise recht klein (Gruppen von 10 Dokumenten). Da dies dem Benutzer zugewandt ist, müssen die Antworten unter dem Schwellenwert für "gelangweiltes Jetzt" von 3 Sekunden liegen. Es ist viel unwahrscheinlicher, dass sich dieses Zugriffsmuster im Cache befindet, daher ist es sehr wahrscheinlich, dass Festplatten-Treffer auftreten.
Ein Sekundärverarbeitungsworkflow ist hochgelesen von früheren Verarbeitungsläufen, die Tage, Wochen oder sogar Monate alt sein können, und wird selten ausgeführt, muss aber dennoch schnell ausgeführt werden. Auf bis zu 100% der Dokumente des vorherigen Verarbeitungslaufs wird zugegriffen. Ich vermute, dass keine Menge an Cache-Erwärmung dabei helfen kann.
Die endgültigen Dokumentgrößen variieren stark, die mittlere Größe liegt jedoch bei etwa 8 KB.
Der häufig gelesene Teil der normalen Projektverarbeitung empfiehlt dringend die Verwendung von Replikaten, um den Leseverkehr zu verteilen. Ich habe an anderer Stelle gelesen , dass eine 1:10 RAM-GB auf HD-GB eine gute Faustregel für langsame Festplatten ist. Da wir ernsthaft über die Verwendung von viel schnelleren SSDs nachdenken, würde ich gerne wissen, ob es eine ähnliche Regel gibt Daumen für schnelle Festplatten.
Ich weiß, dass wir Mongo so verwenden, dass nicht wirklich alles im Cache läuft. Deshalb suche ich nach Möglichkeiten, ein System zu entwickeln, das eine solche Nutzung übersteht. Der gesamte Datensatz wird wahrscheinlich innerhalb eines halben Jahres die meisten TB umfassen und weiter wachsen.