Direkt zum Hauptinhalt

InfluxDB

"InfluxDB ist eine Datenbank für Zeitreihen" (Wikipedia)

Im Gegensatz zu einer klassischen relationellen Datenbank wie z.B. MySQL, ist InfluxDB dafür optimiert,  Daten mit einem Zeitbezug zu speichern, und ist bei der Wiedergabe sehr effizient

  • Daten aus einem spezifischen Zeitbereich zu liefern, z.B. “Werte der letzten 2 Tage”
  • Daten aus einem Datensatz zu verarbeiten, z.B: “Maximalwerte der letzen 2Tage, über ein 1-stündiges Fenster”
  • Datensätze anhand von Tags zu selektieren, z.B. “Werte der letzten 2 Tage der Sensoren sens1 und sens2”

Im Oberlab wird Projektbezogen eine InfluxDB in einer virtuellen Maschine auf dem Oberlab Server betrieben.

InfluxDB ist mittlerweile in der Version 2 verfügbar, die von den Daten und der InfluxQL Sprache  sind mit der Version 1 und der Sprache Flux inkompatibel.

Datenstrukturen

In MySQL muß die Datenstruktur beim Erstellen der Tabellen festgelegt werden. Danach werden pro Zeile die verschiedenen Spalten mit Daten befüllt.

Bei InfluxDB werden die Strukturen der Tabellen (nennt sich “bucket”) dynamisch angepasst, d.h. neue “Spalten” werden automatisch erzeugt wenn der Datensatz neue “Spalten” beinhalten.

An sich gibt es keine “Spalten”, sondern 2 verschiedene Datentypen: Werte und Tags

InfluxDB Befehle

Bucket erstellen

CREATE DATABASE openhab_db

Benutzer anlegen

CREATE USER openhab WITH PASSWORD 'AnotherSuperbPassword456-'

GRANT ALL ON openhab_db TO openhab

GRANT READ ON openhab_db TO grafana

Passwort eines Benutzers ändern

influx user password -n johndoe -t My5uPErSecR37t0k3n

set password for "testuser" = 'testing'

Backup/restore

influxd backup -portable -database db <path-to-backup>

influxd restore -portable -db db <path-to-backup>

Daten einspeisen

Siehe auch https://docs.influxdata.com/influxdb/v2/write-data/

Datenstruktur einsehen

show measurements

show series

show tag keys

show field keys

show retention policies

Daten selektieren

Siehe auch https://docs.influxdata.com/influxdb/v2/query-data/

Datenexport zu csv

influx -username USER -password PASSWORD -database "oberlab" -execute 'SELECT *
FROM "autogen"."counter" WHERE ("sensor" =~ /^(pxc-0001-oberlab)$/) AND time >= 1669845600000ms and time <= 17
01295200000ms' -format csv > /etc/influxdb2/test2.csv