Komprimierte Zeitreihen
Was ist Komprimierung
In HAKOM Terminologie ist Zeitreihen-Komprimierung eine Technology zur resourcenschonenden Speicherung von Zeitreihendaten. Komprimierte Zeitreihen benötigen nicht nur deutlich weniger Speicherplatz in der Datenbank, sondern daraus folgend auch kürzere Zugriffszeiten bei größeren Datenmengen.
Wie funktioniert Komprimierung
Zeitreihenwerte (also bei HAKOM Zeitreihen bestehend aus Wert und Flag) werden bei herkömmlichen (nicht komprimierten) Zeitreihen als Zeitstempel-Wert-Paare abgespeichert. Bei Komprimierung werden mehrere zeitlich angrenzende Zeitreihenwerte zu einem fixen Block mit nur einem Anfangszeitstempel zusammengefasst und als Binärwert abgespeichert. Durch das Entfallen der einzelnen Zeitstempelinformationen innerhalb eines Blocks wird die Einsparung an Speicherplatz realisiert:
Für welche Zeitreihentypen kann eine Komprimierung verwendet werden
Komprimierung wird für jede zyklische (zeitsynchrone) mit einem fixen Intervall, d.h. "Anfang" und "End" Zeitreihen, unterstützt.
Spontane Zeitreihen ohne fixes Intervall können hingegen derzeit nicht sinnvoll zu einem Block zusammengefasst werden und sind daher nicht unterstützt.
Wie kann ich Komprimierung aktivieren
Komprimierung kann einzeln pro Zeitreihe aktiviert werden. Entweder in TSM Plugin - Zeitreihe Bearbeiten Bereich oder via REST API (compression=true), siehe entsprechende Bereiche in den jeweiligen Dokumentationen.
Was sind die Vorteile einer komprimierten Zeitreihe
Komprimierung, wenn richtig eingesetzt (siehe nächstes Kapitel), bringt folgende Vorteile:
- Reduzierter Datenbankspeicherverbrauch
Beispiel: im Falle einer Viertelstundenzeitreihe kann 80% der Datenmenge erspart werden - Erhöhte Lesegeschwindigkeit
Beispiel: im Falle einer Viertelstundenzeitreihe können Daten für ein Jahr mit bis zu 20% schneller abgerufen werden - Deutlich erhöhte Schreibegeschwindigkeit
Beispiel: im Falle einer Viertelstundenzeitreihe können Daten für ein Jahr mit bis zu 80% schneller geschrieben werden
Für welche Anwendungen ist eine Komprimierung sinnvoll
Da Komprimierung Zeitreihendaten blockweise abspeichert, ist die höchste Performance-Steigerung (neben reduzierter Speicherverbrauch, welche immer auftritt) dann zu erzielen, wenn ganze Blöcke ausgelesen werden. Das ist zum Beispiel der Fall, wenn Stundenzeitreihen Tageweise (oder als Ganzes Mehrfaches eines Tages) abgerufen werden.
In diesem Sinne, je öfter auch Teile eines Blocks verarbeitet werden müssen, desto geringer wird der Performance-Gewinn.
Blockgrößen
Blockgrößen für einige typische Standard-Intervall-Längen
Intervall-Länge | Blockgröße |
---|---|
Viertelstunde | Day |
Halbe Stunde | Day |
Stunde | Day |
Tag | Month |
Woche | Year |
Monat | Year |
Quartal | Year |
Halbjahr | Year |
Jahr | Year |
Blockgrößen für Intervall-Längen auf Sekundenbasis
Intervall-Länge | Blockgröße |
---|---|
< 60 Sekunden | 60 Sekunden |
< 900 Sekunden | Stunde |
>= 900 Sekunden | Tag |