Messwerte speichern ohne zu ertrinken

Wie archiviert man Messwerte (Temperaturen, Zugriffszahlen, System-Auslastung) ohne dabei im Laufe der Zeit die Datenbank zu fluten? Bei meinem aktuellen Bastelprojekt werden die Temperatur-Messungen von 13 Sensoren im 5-Minuten-Takt gespeichert. Das ergibt 3.744 Messwerte. Täglich. Bereits nach einem Jahr enthielte die Datenbank über 1,3 Mio. Datensätze. Die Daten sollen aber über mehrere Jahre gespeichert werden, um auch grosse Zeiträume miteinander vergleichen zu können. War der letzte Winter beispielsweise strenger als der aktuelle? Falls noch weitere Sensoren hinzukommen, könnte mein Stubenserver schnell an seine Leistungsgrenzen stossen.
Die Lösung: RRDtool - speichert Messwerte in einem Round-Robin-Verfahren und kann selbst bereits Chart-Grafiken erzeugen. Es macht sich hierbei die Tatsache zu nutze, dass Messwerte mit zunehmendem Alter weniger hochauflösend sein müssen. Beispiel: Die Temperatur-Werte des aktuellen Tages sollten den tatsächlichen Verlauf abbilden. Bei denen des letzten Monats genügt jedoch ein 12h-Mittelwert. Bei noch älteren Werten reicht ein Tages- oder gar Wochen-Durchschnitt. Die Menge der zu speichernden Daten wird also mit zunehmendem Alter (z.Bsp. über eine Durchschnittsfunktion) "ausgedünnt". Eine RRD-Datei mit Messwerten von mehreren Jahren wird so kaum größer als 1MB. Positive Nebeneffekte:
  • Die Jahres-Graphen nehmen einen harmonischeren Verlauf und bilden die Veränderungen über längere Zeiträume besser ab - ohne dass es zu starken "Zickzack"-Linien durch hohe Kurzzeit-Schwankungen (z.Bsp. Tag- und Nacht-Temperaturen) kommt.
  • Chartgrafiken können aufgrund der geringeren Datenmenge viel schneller erzeugt werden.
  • Das Ermitteln von Durchschnittswerten übernimmt RRD - systembedingt - selbst.
Mit RRD4J gibt es sogar in 100% Java geschriebene Variante. Ich hab es inzwischen in mein Heizungs-Tool integriert - und es tut seinen Dienst bisher ganz hervorragend.

PS: Da das Erfassen, Archivieren und Aufbereiten von Messwerten ja irgendwie nichts Heizungs-spezifisches ist, hab ich das Tool gleich als generisches "Sensor-Framework" konzipiert - durch Implementieren des Device-Interfaces lassen sich weitere Datenquellen anbinden. Es ist ja nicht so, dass es nicht schon genügend andere Monitoring-Tools gibt. Sicher hätte ich auch ein Nagios-Plugin schreiben können. Dann wäre dieser Blog-Beitrag aber nicht entstanden ;)

Trackbacks

Trackback-URL für diesen Eintrag

Dieser Link ist nicht aktiv. Er enthält die Trackback-URI zu diesem Eintrag. Sie können diese URI benutzen, um Ping- und Trackbacks von Ihrem eigenen Blog zu diesem Eintrag zu schicken. Um den Link zu kopieren, klicken Sie ihn mit der rechten Maustaste an und wählen "Verknüpfung kopieren" im Internet Explorer oder "Linkadresse kopieren" in Mozilla/Firefox.

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Karl am :

Hallo Olaf,

sieh Dir doch mal flukso.net an. Ist sehr interessant und würde mich bei lokaler Datenspeicherung und Auswertung sehr interessieren.

Karl

Olaf am :

Naja, 85 EUR fuer ein Messgeraet zur Erfassung des Stromverbrauchs ist schon recht viel ;) Zumal ich die Daten ja am Stromzaehler ablesen kann ;)

Die Kommentarfunktion wurde vom Besitzer dieses Blogs in diesem Eintrag deaktiviert.