Bin aus den gleichen Gründen hin und hergerissen...
sqlite kommt für mich nicht in Frage. Entweder MySQL/MariaDB, oder sonst etwas an das man mit SQL und JDBC ran kommt.
Bei meinen Eltern läuft seit Jahren eine MySQL-DB. Hier werden pro Minute rund 40 Werte (double, 2 byte) von Heizung und PV-Anlage geschrieben. Die DB juckt das nicht und bei einem korrekten Index auf der Tabelle geht eine Abfrage auch recht fix.
Die Berechnung der Datenmenge ist aber nicht ganz korrekt: Du vergisst den Overhead den die DB mit ihrer DB Struktur mitbringt. Aber selbst 5GB wären bei den heutigen Speicherpreisen absolut kein Thema.
Da du DB im RAM erwähnst: Es gibt Java Embedded Datenbanken die sich auch zyklisch auf die Platte persistieren lassen:
http://www.h2database.com/html/performance.html
Hab ich in einem anderen Projekt schon erfolgreich eingesetzt. Die H2 DB ist auch Netzwerkfähig. Somit also ideal zum auslagern auf eine andere Maschine.
Für das Zusammenfassen würde ich, auch wenn's schneller ist, eher nicht auf Stored Procedures setzen. Allein schon um sich nicht abhängig von der DB zu machen. Hab da in der Vergangenheit zu schlechte Erfahrungen mit gemacht.
So allgemein würde ich sagen: Wenn's eine SQL-DB wird, dann muss die Schnittstelle der JDBC Treiber sein. D.h. man kann sich frei entscheiden welche DB es sein soll. Hauptsache es gibt einen JDBC Treiber. Und für die "Einrichtungsfaulen" wo alles out-of-the-box laufen muss, könnte man die embedded H2 DB mitliefern.
Bei meinen Eltern wird die DB nicht zusammengefasst. Aber das Stück Software das einen Zeitraum abfragt fast dann entsprechend zusammen, bzw. lässt Werte die nicht in die Abgefragte Auflösung passen unter den Tisch fallen. Das macht die Sache zwar etwas "ungenauer", aber Tests haben gezeigt dass das irrelevant ist. Hatte auch das zusammenrechnen der Werte ausprobiert: Hat aber für die damalige Kiste (auch ein embedded ARM) zu viel Leustung gefressen und war zu langsam.
sqlite kommt für mich nicht in Frage. Entweder MySQL/MariaDB, oder sonst etwas an das man mit SQL und JDBC ran kommt.
Bei meinen Eltern läuft seit Jahren eine MySQL-DB. Hier werden pro Minute rund 40 Werte (double, 2 byte) von Heizung und PV-Anlage geschrieben. Die DB juckt das nicht und bei einem korrekten Index auf der Tabelle geht eine Abfrage auch recht fix.
Die Berechnung der Datenmenge ist aber nicht ganz korrekt: Du vergisst den Overhead den die DB mit ihrer DB Struktur mitbringt. Aber selbst 5GB wären bei den heutigen Speicherpreisen absolut kein Thema.
Da du DB im RAM erwähnst: Es gibt Java Embedded Datenbanken die sich auch zyklisch auf die Platte persistieren lassen:
http://www.h2database.com/html/performance.html
Hab ich in einem anderen Projekt schon erfolgreich eingesetzt. Die H2 DB ist auch Netzwerkfähig. Somit also ideal zum auslagern auf eine andere Maschine.
Für das Zusammenfassen würde ich, auch wenn's schneller ist, eher nicht auf Stored Procedures setzen. Allein schon um sich nicht abhängig von der DB zu machen. Hab da in der Vergangenheit zu schlechte Erfahrungen mit gemacht.
So allgemein würde ich sagen: Wenn's eine SQL-DB wird, dann muss die Schnittstelle der JDBC Treiber sein. D.h. man kann sich frei entscheiden welche DB es sein soll. Hauptsache es gibt einen JDBC Treiber. Und für die "Einrichtungsfaulen" wo alles out-of-the-box laufen muss, könnte man die embedded H2 DB mitliefern.
Bei meinen Eltern wird die DB nicht zusammengefasst. Aber das Stück Software das einen Zeitraum abfragt fast dann entsprechend zusammen, bzw. lässt Werte die nicht in die Abgefragte Auflösung passen unter den Tisch fallen. Das macht die Sache zwar etwas "ungenauer", aber Tests haben gezeigt dass das irrelevant ist. Hatte auch das zusammenrechnen der Werte ausprobiert: Hat aber für die damalige Kiste (auch ein embedded ARM) zu viel Leustung gefressen und war zu langsam.
Kommentar