# CSV als Datenbank



## Fohnbit (6. Jul 2015)

Hallo!

Ich möchte mir statische Werte in einer Art CSV Datenbank halten.
Hintergrund:
Ich zeichne Temperaturen auf. Diese, wenn Sie mal geschrieben sind, ändern sich nie wieder.
Ich möchte in 15min Intervallen den gewichteten Durchschnitt in die:
Q_data.csv
schreiben. Das habe ich mal fertig.
Der Aufbau der CSV:
timestamp,value,min,max
(ich speichere pro 15min Intervall auch den min und max Wert ab).

Nun soll jede Stunde ein Backgroundworker starten, welcher mir die 15min Daten komprimiert und in eine neue CSV schreibt:
H_data.csv.

Ich lade also die CSV, suche den Timestamp für die vorherige Stunde und schreibe diese wiederum mit gewichteten Mittelwert in die CSV.

Wie würdet Ihr das Angehen?
Ich befürchte, wenn einmal der Timer um 15:59:59 auslöst, statt 16:00:01 und der nächste wieder um eine Sekunde um ist, kummuliert er mir eine Stunde nicht.

Hat das schon mal jemand umgesetzt und hat jemand eine gute Strategie für das Vorhaben?

Danke!


----------



## Tom299 (7. Jul 2015)

Du könntest 2 Zeiten speichern, eine Soll- und eine Ist-Zeit oder die Zeit auf-/abrunden. Aber ich würde sowas in eine DB schreiben und bei Bedarf die Daten in ein CSV exportieren. Mittels DB wären auch viel mehr Auswertungen denkbar.
Und evtl. ein Insert-Trigger, der bei 4 gefundenen 15min-Werten einen Stundenwert schreibt.


----------



## Fohnbit (7. Jul 2015)

Hi Tom,

ich habe nun mal als Strategie folgendes programmiert:
Speichern alle 15min den gewichteten Zeitdurchschnitt in Q_data.csv.

Jede Stunde wird das 15min File komplett abgearbeitet und nur Stundenbereiche die komplett sind, wieder mit einem gewichteten Zeitdurchschnitt in die H_data.csv geschrieben.

Wenn schon ein Stundeneintrag in der H_Data existiert ist, der Q Wert übersprungen.

Zeitgleich werden alte Einträge rausgelöscht.

Ich möchte keine DB nutzen, da alles auf einer SD Karte laufen soll, und auch die Werte von jedem User direkt verarbeitbar sein soll. Auch ein Backup auf Fileebene ist so einfach möglich.

Einzig wenn beim schreiben ein Fehler passiert ... da muss ich noch überlegen.


----------



## Tom299 (7. Jul 2015)

SQLite kannste als File-Datenbank auch auf SD-Karte laufen lassen, aber das mußt du letztendlich selbst entscheiden, was dir lieber ist. Aber wenn du mal Auswertungen machen willst wie z.B. wie war der Schnitt im August 2014 oder im 2. Quartal 2015 usw. dann biste mit dem CSV nicht so gut bedient wie mit einer DB. Kann natürlich sein, daß du nie solche Auswertungen brauchst, aber man weiß ja nie was noch so kommt ;-)

Und wenn einen Fehler beim Schreiben gibt, dann gibts halt ein Rollback


----------



## Fohnbit (7. Jul 2015)

Hmmm SQLite ... ja das könnte eine Alternative sein.
Die Auswertungen macht die Chart Javascript Komponente.

Danke!


----------

