NEWS
SQL-Adapter mit TimescaleDB
-
Hallo zusammen,
Für die Visualisierung mit Grafana und die Auswertung meiner Daten nutze ich seit x Jahren InfluxDB.
Anfangs mit InfluxDB v1.x und einiger Zeit mit InfluxDB 2.x. Wobei ich mit der Version 2 nie so richtig warm geworden bin.
Das Youtube-Video von Matthias [InfluxDB 3.x - Das Ende von Flux?](https://www.youtube.com /watch?v=hW7tCNAoJvM) hat mich auf den Gedanken gebracht mich mal nach Alternativen umzuschauen.
Die Fragestellung war: Welche Timeseries-DB funktioniert einfach zusammen mit ioBroker. Bei der Suche bin ich auf die Kombination SQL-Adapter und TimescaleDB gekommen.
TimescaleDB (docs.timescale.com) ist "einfach" nur eine Erweiterung zur bekannten Postfresql-Datenbank. Die Daten können ganz normal über Postgrsql und somit mit dem ioBroker SQL-Adapter geschrieben und ausgewertet werden. SQL-Tabellen mit einem Zeitstempel (wie eben "ts" von ioBroker) werden von TimescaleDB im Hintergrund zu Timeseries "gewandelt". Der Vorteil ist, dass dies auch nachträglich einfach möglich ist. Die Postgresql-Tabellen bleiben unverändert.
Hat man also eine Postgresql-DB installiert man die die TimescaleDB-Erweiterung oder verwendet einen passenden Docker Container (z.B. timescale/timescaledb:latest-pg15).Für die Werte legt der SQL-Adapter folgende Tabellen an:
- ts_bool
- ts_counter
- ts_number
- ts_string
Diese Tabellen können für TimescaleDB verwendet werden.
Dafür müssen sogenannte Hypertables erzeugt werden.
Man verbindet sich mit der Postgresql-Datenbank und setzt für jede Tabelle folgendes SQL-Kommando ab:SELECT create_hypertable('Tabellenname','ts',migrate_data => true,chunk_time_interval => 86400000);
Dabei werden auch vorhandene Daten migriert. Je nach Anzahl der vorhandenen Daten kann dies einige Zeit dauern.
Nochmal erwähnt: Auch nach dem Erzeugen der Hypertables sind die Daten ganz normal wie vorher auch über Postgresql verfügbar.Vielleicht wäre es möglich die Postgresql-Konfiguration des SQL-Adapters um die Option TimescaleDB zu erweitern?
Soweit ich es sehe, ist dafür "nur" eine Checkbox und beim Anlegen der Tabellen ein zusätzlicher SQL-Befehl notwendig.
Noch ein Wunsch zum SQL-Adpater:
Bisher stehen die Namen der Datenpunkte in der Tabelle "datapoints".
Die Zuordung zu den Tabellen mit den Werten erfolgt dann über die id.
Wäre es möglich den Namen des Datenpunkt auch (optional) in die ts-Tabellen zu schreiben.
Natürlich werden die Datenmengen größer, aber die Auswertung wäre etwas einfacher.So nun genug geschrieben
Kommentare, Meinung Anregungen?
Viele Grüße
Blockmove