Welche Hardware macht einen guten MongoDB Server aus? Wo kann man es bekommen?

13

Angenommen, Sie sind gerade auf dell.com und kaufen einen Server, auf dem Ihre MongoDB-Datenbank für Ihr kleines Startup ausgeführt wird. Sie müssen buchstäblich Zehntausende von Schreib- und Lesevorgängen pro Minute ausführen (aber kleine Objekte). Würden Sie für 2 Prozessoren gehen? Mehr in RAM investieren?

Ich habe gehört (korrigiere mich, wenn ich mich irre), dass MongoDB so gut wie möglich mit dem RAM umgeht und dann alles auf die Festplatte spült. In diesem Fall sollte ich in eine CPU mit einem großen L2-Cache investieren, wahrscheinlich> 40 GB RAM und ein Solid State Drive .. oder?

Wäre ich mit einem High-End-Server (ca. 11.309 USD, 2 teure Prozessoren, 96 GB RAM) oder zwei Servern (ca. 6.419 USD, 2 teure Prozessoren, 12 GB RAM) besser dran?

Geht es Dell gut oder haben Sie bessere Vorschläge? (Ich bin außerhalb der USA, auf Portugal)

João Pinto Jerónimo
quelle
3
Warum kaufen Sie Hardware, anstatt sich für Ihr Startup für etwas wie EC2 zu entscheiden? Zumindest zunächst, bis Sie wissen, was Ihre Anforderungen sein werden.
Stimme Tom zu. Warum nicht einige Instanzen in der Cloud ausführen?
1
@mixdev, du liegst falsch: "Linux, NUMA und MongoDB arbeiten normalerweise nicht gut zusammen." Quelle: mongodb.org/display/DOCS/NUMA
Shadok

Antworten:

19

Zunächst möchten Sie den Arbeitsspeicher aufbessern. Der RAM, den Sie benötigen, hängt von der Menge der gespeicherten Daten, der Anzahl der Sammlungen, den Indizes für diese Sammlungen, den Datenzugriffsmustern usw. ab. Viele Faktoren.

Das Wichtigste ist, genügend RAM zu haben, um Ihre Indizes im RAM zu halten. Andernfalls leidet Ihre Leistung dramatisch, da Ihre Server ständig ausgelastet sind, während Mongo Dateien mit Speicherzuordnung in den Arbeitsspeicher und aus dem Arbeitsspeicher verschiebt. Trotzdem haben wir keine Beeinträchtigung der Schreibgeschwindigkeit gesehen, aber alles andere ist so. Die Verarbeitung von Schreibvorgängen aus der Warteschlange, das Leeren von Daten, Speicherauszüge usw. ist dramatisch, sobald Ihre Indizes nicht mehr in den Arbeitsspeicher passen.

Es gibt also keine wirklich kurze Antwort. Seien Sie grundsätzlich schlau in Bezug auf Ihre Indizes. Verwenden Sie nur das, was Sie brauchen. Halten Sie Sammlungen klein, wenn Sie können (dh brechen Sie in mehrere auf, wo Sie können). Mit einer Kappe versehene Sammlungen sind auch interessant zu untersuchen.


quelle
1
Wenn Mongo nicht über genügend RAM für Abfragen verfügt, wird die Abfrage unserer Erfahrung nach nicht nur an die Dokumente gesendet (ewig ausgeführt, 5 Minuten, 15 Minuten, Stunde ...), sondern die Einfügungen schlagen auch fehl.
Jonesome setzt Monica
6

Mit MongoDB wollen Sie RAM. Und dann noch etwas RAM. RAM kaufen kann nicht schaden.

chx
quelle
3

Wenn Sie im Stadium des Kaufs von Produktionshardware sind, muss die Anwendung, die Sie ausführen, bereits geschrieben sein, oder? Führen Sie die App auf der Hardware aus, über die Sie verfügen, und erfassen Sie die Messdaten. Ändern Sie nach und nach einige Komponenten und nehmen Sie mehr Metriken auf. Wenn Sie fertig sind, wissen Sie, welche Schwerpunkte für Ihre Anwendung und Ihr Szenario am wichtigsten sind.

Sam
quelle
3

Kaufen Sie zuerst so viel RAM wie möglich. Der zweite begrenzende Faktor ist die Plattengeschwindigkeit. RAID hilft. SSD hilft. Mehr Scherben helfen. Messen Sie den Durchsatz im Vergleich zur Festplatteneffizienz und den erforderlichen Antwortzeiten und entscheiden Sie dann, was im Rahmen Ihres Budgets zu tun ist.


quelle
1

Ich würde mich fragen, ob eine Linux-Cluster-Lösung eine bessere, billigere Alternative wäre.

Mit MongoDB können Sie Daten auf viele Server verteilen. Das wird mit einem, hupenden Server unmöglich sein.

Ich dachte, MongoDB sei einer der nächsten Schritte, nachdem ich herausgefunden hatte, dass die Bereitstellung einer relationalen Datenbank auf einem Honking-Server nicht gut genug skaliert werden konnte.

Duffymo
quelle
1

Zehntausende schreiben pro Minute ist nichts. Sie können mit vernünftiger Hardware 50.000 oder mehr Schreibvorgänge pro Sekunde erzielen. Die Hardware-Spezifikationen hängen wirklich davon ab, was Sie tun möchten. Generell ist neben einer ordentlichen CPU genügend RAM für große Datenbanken und ein schnelles IO-System wichtig ...


quelle
0

Es ist wichtig, vor dem Entwerfen Ihrer Hardware eine solide Grundlinie festzulegen. Erwarten Sie im Allgemeinen, dass diese Art von Fragen von erfahrenen mongoDB-Leuten gestellt wird, bevor jemand überhaupt in Betracht ziehen kann, Ihre Frage zu beantworten.

Aktuelle Anwendungsstatistiken (falls vorhanden)

  • Bisherige Rekorde?
  • Speicherabschätzung starten?
  • Voraussichtliches Wachstum in% / Monat?
  • Durchschnittliche Dokumentengröße?

Arbeitsbelastung durch Datenaufnahme

  • Neue Einfügungen / Tag, Peak & Durchschnitt pro Sekunde?
  • Updates / Tag, Peak & Average pro Sekunde?
  • Liest / Tag, Spitze & Durchschnitt / Sekunde?
  • Durchschnittliche Anzahl der pro Abfrage zurückgegebenen Dokumente: 70
  • Löschvorgänge / Tag, Spitzenwert und Durchschnitt / Sekunde: Keine
  • Wird es Bulkladungen / Bulk-Updates geben? Wenn ja, wie groß und wie oft?
  • Wie viele verschiedene Arten von Dokumenten wird es geben?
  • Wie viele von jedem?
  • Wie sehen Ihre Dokumente aus (Beispieldokument)?

Abfragemuster und Leistungserwartungen

  • Antwort-SLA lesen?
  • Antwort schreiben SLA?
  • Werden bereichsbezogene oder zufällige Lesevorgänge erstellt?

Erwartete Zugriffsmuster

  • Anzahl der benötigten Sekundärindizes?
  • Anzahl der Attribute?
  • Bedingungen sortieren?
  • Single oder Compound?
Ostati
quelle