Ich habe ein paar Fragen in der gleichen Art und Weise wie diese, aber sie enthalten nicht viel Details über die Art der Daten gespeichert, wie es abgefragt wird, usw. ... so dachte ich, dies wäre es wert, zu posten.Beste (NoSQL?) DB für kleine Dokumente/Datensätze, unveränderliche Daten, viele Schreibvorgänge, schnelle Lesevorgänge?
sind meine Daten sehr einfach, drei Felder: - ein "Datetimestamp" Wert (Datum/Uhrzeit) - zwei Saiten, "A" und "B", beide < 20 Zeichen
sehr Meine Anwendung ist schreibstark (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 Löschlisten, die älter als 10 Tage sind, entweder durch manuelles Löschen oder durch Verwendung einer Cache-Ablauf-Technik untersuchen, wenn die Datenbank dies unterstützt.
Ich habe dies ursprünglich in MongoDB implementiert, ohne zu wissen, wie es das Sperren behandelt (schreibt Blocklesevorgänge). 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 Anzahl von Schreibarbeiten meine Lesevorgänge verhungern lässt.
Ich habe die kkovacs.eu Post nach dem Vergleich verschiedener NoSQL-Optionen gelesen, 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!
Was aufzeichnen Sie, dass Sie Hunderte von Schreibvorgänge pro Sekunde benötigen, um eine db für Echtzeit-Dashboards zu füllen? – eaolson
Haben Sie SQLite überprüft? –
@eaolson Ich nehme Ereignisse auf, sobald sie auftreten, und ich habe keine Kontrolle über die Eingaben, die zu mir kommen. Die zwei Saiten identifizieren ein "Was" und ein "Wo". Bei den Abfragen handelt es sich meist um Dinge wie "Wähle alle Ereignisse an Ort [x] in den letzten 5 Minuten aus". Die Ergebnisse werden zwischengespeichert und mit den Ergebnissen früherer Abfragen (aus früheren Zeitscheiben) kombiniert und im Dashboard aufgezeichnet. –