Datenbank zum Durchsuchen vieler einfacher Daten

Ich verwende derzeit MySQL und Sphinx, um eine ziemlich einfache Datenbank mit fast 350.000.000 Datensätzen zu verwalten. Es wird erwartet, dass es in weniger als 200 Tagen eine Milliarde Datensätze erreicht (zwischen 2000 und 5000 Datensätzen pro Minute). MySQL ist furchtbar langsam und Sphinx verbessert die Geschwindigkeit um einiges, aber die Delta-Indizierung ist mühsam und ich bin mir nicht sicher, ob RT-Indizes eine Option sind.

Die Daten bestehen aus mehreren Integer-Werten und einem Float-Wert. Wir durchsuchen die Datenbank basierend auf ganzzahligen Übereinstimmungen und ganzzahligen Bereichen (z. B. Übereinstimmung mit vielleicht 4 ganzzahligen Spalten genau, und wir geben einer anderen ganzzahligen Spalte einen Bereich zwischen xund x+20000000).

Im Idealfall wäre die beste Software kostenlos (sowohl in der Freiheit als auch im Freibier), einfach zu konfigurieren und Suchvorgänge schnell zurückzugeben (<0,5 Sekunden). Es sollte auch Bibliotheken für NodeJS oder jede andere Skriptsprache verfügbar haben (nicht wirklich erforderlich).

Da Sie so schnell wachsen, reicht Ihre Hardware vielleicht nicht mehr für die Arbeitslast?
Siehe auch ähnliche Frage zu StackOverflow, Datenbank, die >500 Millionen Zeilen verarbeiten kann .

Antworten (2)

Zwei Vorschläge: 1) Oracle Database 11gR2 , 2) MongoDB .

1) Oracle-Datenbank 11gR2:

Das fortschrittlichste und leistungsstärkste DBMS für transaktionsintensive Lösungen. Kann kostenlos heruntergeladen und verwendet werden (der Support ist kommerziell).

Ich habe es auf einem gewöhnlichen Laptop mit einem Datensatz von ungefähr 90 Millionen Datensätzen getestet. Suchen basierend auf dem Id-Feld (das Integer war) wurden innerhalb von 0,1 Sekunden zurückgegeben.

2) MongoDB:

Das beliebteste NoSQL-BasedDBMS mit hervorragender Integrationsfähigkeit in Node.Js. Tatsächlich ist es ein Document-BasedDBMS, das für die Big Data.

Wo lang geht es?

1) Wenn Sie das Gefühl haben möchten, mit einem RDBMS zu arbeiten (genau wie MySQL) und wenn Ihre Suche auf ganzzahligen Werten basiert (Sie sollten mit Bedacht Indizes für diese Spalten erstellen).

2) Wenn die Integration mit Node.Js für Sie wichtig ist und Ihre Daten unstrukturiert wachsen.

Postgres

Postgres ist die ideale Lösung, wenn Sie eine Datenbank in Unternehmensqualität benötigen, die sowohl „Freiheit“ (Open Source) als auch „Freibier“ (kostenlos) bietet.

Aber keine Wunderwaffe, keine Möglichkeit, die Notwendigkeit zu umgehen:

  • Sehr gesunde Menge an Arbeitsspeicher (RAM) , die mit einem 64-Bit- Betriebssystem installiert ist.
  • Sorgfältige Gestaltung von Tabellen/Spalten und Indizes.
    Ihre extremen Anforderungen können die Denormalisierung von Daten rechtfertigen.
  • Lernen und üben Sie mit verschiedenen Speicher- und Cache-Einstellungen in Postgres und OS.
    Für die meisten Menschen und die meisten Projekte sind die Standardeinstellungen in Postgres gut genug. Aber Ihr Fall wird wahrscheinlich durch einige Optimierungen und Profilerstellung unterstützt. Die Postgres-Community bietet eine hervorragende Dokumentation, Mailinglisten, Handelsbücher und fachkundige Beratungsunternehmen zur Unterstützung.