Beste (NoSQL?) DB für kleine Dokumente / Datensätze, unveränderliche Daten, viele Schreibvorgänge, schnelle Lesevorgänge?

8

fand ich ein paar Fragen in die gleiche Richtung wie diese, aber sie haben nicht viele Details über die Art der Daten gespeichert sind, wird, wie es abgefragt wird, etc ... so dass ich dachte, das sich lohnen würde zu schreiben.

Meine Daten sind sehr einfach, drei Felder: - ein "datetimestamp" -Wert (Datum / Uhrzeit) - zwei Saiten, "A" und "B", beide & lt; 20 Zeichen

Meine Anwendung ist sehr schreibintensiv (Hunderte pro Sekunde). Alle Schreibvorgänge sind neue Datensätze; Einmal eingefügt, werden die Daten nie geändert.

Regelmäßige Lesevorgänge finden alle paar Sekunden statt und werden dazu verwendet, einige Fast-Echtzeit-Dashboards zu füllen. Ich frage nach dem Datum / Uhrzeit-Wert und einem der String-Werte. z.B. alle Datensätze erhalten, bei denen der Datumstempel in einem bestimmten Bereich liegt und das Feld "B" einem bestimmten Suchwert entspricht. Diese Abfragen geben normalerweise jeweils einige tausend Datensätze zurück.

Schließlich muss meine Datenbank nicht unbegrenzt wachsen; Ich würde bei Spülen Aufzeichnungen suchen, die 10+ Tage alt sind entweder manuell durch sie zu löschen oder eine Cache-Ablauf-Technik, wenn die DB ein unterstützt.

I umgesetzt zunächst dies in MongoDB, ohne sich dessen bewusst die Art und Weise ist es Griffe Verriegelung (schreibt Block liest). Während ich skaliere, dauern meine Abfragen länger und länger (30+ Sekunden, sogar bei richtiger Indizierung). Nun, mit dem, was ich gelernt habe, glaube ich, dass die große Zahl von Schreibarbeiten meine Lesevorgänge verhungern lässt.

ich gelesen habe die kkovacs.eu Post verschiedene NoSQL Optionen zu vergleichen und Während ich viel gelernt habe, weiß ich nicht, ob es einen klaren Gewinner für meinen Anwendungsfall gibt. Ich würde eine Empfehlung von jemandem, der mit den Optionen vertraut ist, sehr schätzen.

Vielen Dank im Voraus!

    
Brad Gagne 16.05.2012, 00:31
quelle

2 Antworten

1

Ich habe ein Problem wie dieses zuvor in einem System, das Prozesskontrollmessungen aufzeichnet, gesehen. Dies wurde mit 5 MHz IBM PCs gemacht, also ist es definitiv möglich. Die Anwendungsfälle waren vielfältiger - Zusammenfassung nach Minute, Stunde, Acht-Stunden-Schicht, Tag, Woche, Monat oder Jahr -, so dass das System alle Rohdaten aufzeichnete, aber auch für die häufigsten Abfragen aggregiert wurde ( das waren fünf Minuten Durchschnitt). Im Fall Ihres Dashboards scheint es, als wäre eine fünfminütige Aggregation ebenfalls ein Hauptziel.

Vielleicht könnte das gelöst werden, indem man für jeden Eingabestrom ein Paar Textdateien schreibt: Eines mit allen Rohdaten; ein anderes mit der multi-minuten Aggregation. Das Dashboard würde die Rohdaten ignorieren. Um das Gleiche zu tun, könnte natürlich auch eine Datenbank verwendet werden. Eine Vereinfachung der Anwendung könnte jedoch bedeuten, dass kein RDB benötigt wird. Einfacher zu entwickeln und zu warten, einfacher auf einem Mikrocontroller, einem eingebetteten System usw. oder einem freundlicheren Nachbarn auf einem gemeinsam genutzten Host zu installieren.

    
wallyk 26.05.2012 06:36
quelle
0

Die Entscheidung für ein richtiges NoSQL-Produkt ist keine leichte Aufgabe. Ich würde Ihnen empfehlen, mehr über NoSQL zu erfahren, bevor Sie Ihre Wahl treffen, wenn Sie wirklich sicherstellen wollen, dass Sie nicht auf die Vorschläge oder Favoriten anderer Leute vertrauen.

Es gibt ein gutes Buch, das wirklich gute Hintergrundinformationen über NoSQL liefert und jeder, der mit NoSQL startet, sollte dies lesen.

Ссылка

Ich hoffe, dass Ihnen das Lesen einiger Kapitel in diesem Buch wirklich hilft. Es gibt Vergleiche und Erklärungen darüber, was für welchen Job und vieles mehr gut ist.

Viel Glück.

    
deej 26.05.2012 06:07
quelle

Tags und Links