Bei der Erfassung wis­sen­schaft­li­cher oder tech­ni­scher Messdaten mittels Sensoren fallen in kurzer Zeit große Da­ten­men­gen an, die zusammen mit einem Zeit­stem­pel des Mess­zeit­punkts ver­ar­bei­tet werden müssen. Für solche Zeit­rei­hen­da­ten sind spezielle Da­ten­ban­ken nötig. Dieser Artikel the­ma­ti­siert InfluxDB, ein Da­ten­bank­ma­nage­ment­sys­tem (DBMS), das eigens für diese Aufgabe ent­wi­ckelt wurde.

Was ist InfluxDB?

InfluxDB ist ein Datenbank-Ma­nage­ment-System, das von der Firma In­flux­Data, Inc ent­wi­ckelt wurde. InfluxDB ist Open Source und kann kostenlos ein­ge­setzt werden. Die kom­mer­zi­el­le Version „InfluxDB En­ter­pri­se“ bietet War­tungs­ver­trä­ge sowie spezielle Zu­gangs­kon­trol­len für Ge­schäfts­kun­den und wird auf einem Server innerhalb des Un­ter­neh­mens­net­zes in­stal­liert. Die neue Version InfluxDB 2.0 läuft zu­sätz­lich als flexibel an­pass­ba­rer Cloud-Dienst mit web­ba­sier­ter Be­nut­zer­ober­flä­che zur Da­ten­er­fas­sung und -vi­sua­li­sie­rung.

Das Datenbank-Ma­nage­ment-System InfluxDB ist in der Google-Pro­gram­mier­spra­che Go, auch als Golang bekannt, pro­gram­miert. In der ersten Version wurde für externe Da­ten­bank­ab­fra­gen die Ab­fra­ge­spra­che InfluxQL genutzt, eine Ei­gen­ent­wick­lung des Her­stel­lers.

InfluxDB 2.0 führt die neue Pro­gram­mier­spra­che Flux ein, die das Un­ter­neh­men In­flux­Data als Open Source unter der MIT-Lizenz auf GitHub ver­öf­fent­licht. Dort wird das Projekt auch von anderen Ent­wick­lern, die mit Zeit­rei­hen­da­ten arbeiten, wei­ter­ent­wi­ckelt. Flux ist eine ei­gen­stän­di­ge Script- und Ab­fra­ge­spra­che für Time-Series-Da­ten­ban­ken (TSDB). Sie kann ab der InfluxDB-Version 1.7 oder auch komplett ei­gen­stän­dig bzw. im Zu­sam­men­spiel mit Da­ten­ban­ken anderer Anbieter genutzt werden. Flux ist für den ETL-Prozess (Extract, Transform, Load) in Da­ten­ban­ken optimiert und nicht ab­wärts­kom­pa­ti­bel zur früher ver­wen­de­ten Ab­fra­ge­spra­che InfluxQL. Der Anbieter plant aber für Be­stands­kun­den einen Mi­gra­ti­ons­pfad, bei dem auch InfluxQL-Code in Flux übersetzt werden soll.

Die Syntax von Flux basiert auf der beliebten Skript­spra­che Ja­va­Script und ist daher leicht zu erlernen und flexibel er­wei­ter­bar. Ein zentrales Merkmal von Flux ist die Un­ter­stüt­zung un­ter­schied­li­cher Da­ten­quel­len, etwa mithilfe von APIs von Dritt­an­bie­tern. So kann Flux mit Ana­ly­se­werk­zeu­gen wie Jupyter zu­sam­men­ar­bei­ten. Die Da­ten­aus­tausch-Schnitt­stel­le Apache Arrow er­mög­licht die Kom­mu­ni­ka­ti­on mit anderen Systemen und die In­te­gra­ti­on in Big-Data-Um­ge­bun­gen.

Wann kommt InfluxDB zum Einsatz?

InfluxDB ist prä­de­sti­niert für Time-Series-Da­ten­ban­ken (TSDB), die Zeit­rei­hen speichern. Solche Da­ten­ban­ken verwendet man u. a., um Sen­sor­da­ten oder Pro­to­kol­le mit Zeit­stem­peln über einen be­stimm­ten Zeitraum zu speichern und aus­zu­wer­ten. Dabei kann es sich um Millionen ein­ge­hen­der Da­ten­sät­ze handeln, wie sie bei­spiels­wei­se Geräte des Internet of Things oder wis­sen­schaft­li­che Mess­in­stru­men­te in einem ständigen Da­ten­strom liefern. Diese Daten müssen nach ihrem Ein­tref­fen in der Datenbank zeitnah ver­ar­bei­tet werden. In InfluxDB ist deshalb ein Zeit­dienst in­te­griert, der über das Network Time Protocol (NTP) si­cher­stellt, dass die Zeit auf allen Systemen synchron läuft.

Eine Datenbank bei InfluxDB kann sehr kompakt sein und muss nur zwei oder drei Spalten umfassen. Hier sind bei­spiels­wei­se die Da­ten­quel­le, der ei­gent­li­che Wert sowie der zu­ge­hö­ri­ge Zeit­stem­pel ge­spei­chert.

Sensor Wert Zeit
Sensor 1 140,50 23/04/2020 @ 10:00
Sensor 2 110,02 23/04/2020 @ 10:00
Sensor 1 142,32 23/04/2020 @ 10:05
Sensor 2 110,50 23/04/2020 @ 10:05

InfluxDB un­ter­schei­det bei den Spalten zwischen tags und fields. Während es sich bei einem tag nur um Metadaten handelt, die in den Index auf­ge­nom­men werden, enthalten fields Werte, die an­schlie­ßend aus­ge­wer­tet werden können. In unserem Beispiel ist die erste Spalte also ein tag, während die zweite ein field ist. Diese Un­ter­schei­dung ver­ein­facht den Umgang mit der Datenbank und die Aus­wer­tung der Messdaten.

Was sind die Vorteile von InfluxDB?

Gegenüber ge­wöhn­li­chen re­la­tio­na­len Da­ten­ban­ken bieten TSDB wie InfluxDB klare Ge­schwin­dig­keits­vor­tei­le, wenn es um die Spei­che­rung und Ver­ar­bei­tung von Messdaten mit Zeit­stem­peln geht. Ein tra­di­tio­nel­les DBMS verliert Per­for­mance bei der Or­ga­ni­sa­ti­on eines komplexen Indexes, der in diesem An­wen­dungs­ge­biet aber gar nicht gebraucht wird. InfluxDB kann auch über einen langen Zeitraum die hohen Schreib­ge­schwin­dig­kei­ten bei­be­hal­ten, da ein sehr einfacher Index verwendet wird.

Gegenüber der Vor­gän­ger­ver­si­on 1.x bietet In­flux­Data mit der neuen InfluxDB Cloud 2.0 auf Amazon Web Services (AWS), der Google Cloud Platform (GCP) oder Microsoft Azure eine cloud­ba­sier­te Lösung an. Beim so­ge­nann­ten Ser­ver­less-Computing braucht der Kunde keine eigene Server-In­fra­struk­tur. In der Cloud-Variante muss man keine einzelnen Server buchen, statt­des­sen passt sich das System au­to­ma­tisch der Aus­las­tung an, was besonders bei in­dus­tri­el­len IoT-An­wen­dun­gen und Machine Learning wichtig ist, wo sich die an­fal­len­de Da­ten­men­ge kurz­fris­tig ändern kann.

Waren in der ersten Version noch ver­schie­de­ne Kom­po­nen­ten nötig – der so­ge­nann­te TICK-Stack mit den Produkten Telegraf, Chro­no­graf und Kapacitor –, ist in InfluxDB 2.0 alles Benötigte bereits in­te­griert. Auch in der lokalen, auf einem eigenen Server in­stal­lier­ba­ren Variante liegt das gesamte Datenbank-Ma­nage­ment-System in einer einzigen Pro­gramm­da­tei, die bis jetzt für 64-Bit-Linux, Linux für ARM-Pro­zes­so­ren, macOS und als Docker-Container verfügbar ist. Telegraf kann als Agent zum Sammeln von Daten für InfluxDB 2.0 neben anderen Agenten weiterhin verwendet werden.

Erste Schritte in InfluxDB

Zum Einstieg bietet InfluxDB einen kos­ten­lo­sen Zugang zur InfluxDB Cloud 2.0. Hier steht nicht nur die Datenbank zum Test bereit, sondern die komplette gehostete und mehr­be­nut­zer­fä­hi­ge Da­ten­platt­form für Zeit­rei­hen­da­ten. Die InfluxDB Cloud 2.0 enthält auch Module zum Sammeln, Auswerten und Vi­sua­li­sie­ren der ge­spei­cher­ten Daten.

Die kos­ten­lo­se Variante bietet ein­ge­schränk­te Da­ten­ra­ten beim Lesen und Schreiben, bis zu 10.000 Da­ten­sät­ze und eine maximale Spei­cher­dau­er von 30 Tagen. Diese Ein­schrän­kun­gen reichen für Hob­by­pro­jek­te in den meisten Fällen aus, sodass man hier auf die kos­ten­lo­se Version zu­rück­grei­fen kann. Ein kos­ten­lo­ser Plan lässt sich später ohne Da­ten­ver­lust zu einem nut­zungs­ba­sier­ten, kos­ten­pflich­ti­gen Plan erweitern.

Legen Sie in einem ersten Schritt auf der An­mel­de­sei­te der InfluxDB Cloud 2.0 ein kos­ten­lo­ses Be­nut­zer­kon­to an. Klicken Sie dann auf den Be­stä­ti­gungs­link in der E-Mail.

Nach Ve­ri­fi­zie­rung des Be­nut­zer­kon­tos melden Sie sich an und wählen zuerst einen Cloud-Anbieter aus. In Europa läuft die InfluxDB Cloud 2.0 bis jetzt nur über Amazon Web Services (AWS), was aber bei der kos­ten­lo­sen Nutzung keine Rolle spielt. Wenn Sie Amazon Web Services oder Google Cloud Platform (GCP) bereits nutzen, können Sie über die Mar­ket­places der Cloud-Anbieter die InfluxDB-Cloud-Produkte abon­nie­ren.

Nach der Anmeldung zeigt InfluxDB das per­sön­li­che Dashboard, auf dem Ihre Daten gesammelt und vi­sua­li­siert werden. Die Da­ten­samm­lung ist über Telegraf-Plugins, die InfluxDB v2-API, die Influx-Be­fehls­zei­len­schnitt­stel­le (CLI) oder direkt auf der InfluxDB-Be­nut­zer­ober­flä­che möglich. Weiterhin stehen Client-Bi­blio­the­ken für ver­schie­de­ne beliebte Pro­gram­mier­spra­chen zur Verfügung.

Sie können Telegraf-Kon­fi­gu­ra­tio­nen in­ter­ak­tiv erstellen oder vor­han­de­ne Kon­fi­gu­ra­tio­nen über­neh­men, um Daten in die InfluxDB-Cloud-2.0-Instanz zu senden. Nachdem Sie die InfluxDB-Cloud zum Sammeln von Daten ein­ge­rich­tet haben, erstellen Sie per­sön­li­che Da­sh­boards, um die Daten ab­zu­fra­gen und dar­zu­stel­len.

Im InfluxDB-Daten-Explorer erkunden und vi­sua­li­sie­ren Sie die ge­sam­mel­ten Daten. Dabei lassen sich Refresh-Zeiten und Zeiträume für die Dar­stel­lung je nach Projekt beliebig anpassen. Die InfluxDB-Be­nut­zer­ober­flä­che bietet ver­schie­de­ne, grafisch an­spre­chen­de Vi­sua­li­sie­rungs­op­tio­nen. Über die Web­ober­flä­che wechseln Sie nahtlos zwischen dem Flux Builder und der manuellen Be­ar­bei­tung von Da­ten­bank­ab­fra­gen.

Auf der Seite „Usage“ können Sie jederzeit die aktuelle Nutzung der Datenbank einsehen, um ab­zu­schät­zen, ob sich ein kos­ten­pflich­ti­ger Plan lohnt.

Die wich­tigs­ten neuen Mög­lich­kei­ten der InfluxDB Cloud 2.0 im Überblick

Kos­ten­lo­ser Plan (mit Ein­schrän­kun­gen): Kein Download, keine In­stal­la­ti­on und keine eigene In-House-Server-In­fra­struk­tur mehr nötig; direkter Einstieg in die InfluxDB-2.0-Tech­no­lo­gie; der kos­ten­lo­se Plan ist zum Ken­nen­ler­nen von InfluxDB und für kleine Hob­by­pro­jek­te kon­zi­piert.

Un­ter­stüt­zung von Flux: Flux ist eine ei­gen­stän­di­ge Skript- und Ab­fra­ge­spra­che für Zeit­rei­hen-Da­ten­ban­ken, die durch leichte Wie­der­ver­wend­bar­keit von Code die Pro­duk­ti­vi­tät erhöht. Flux wurde für die Arbeit mit Daten in InfluxDB 2.0 ent­wi­ckelt und optimiert, lässt sich aber auch zusammen mit anderen Da­ten­quel­len verwenden.

Ein­heit­li­che API: Die ein­heit­li­che InfluxDB-v2-API bietet Zugriff auf alle Kom­po­nen­ten von InfluxDB wie Da­ten­er­fas­sung, Abfrage, Spei­che­rung und Vi­sua­li­sie­rung. Damit ist ein nahtloser Übergang zwischen der in­stal­lier­ten Open-Source-Version und der InfluxDB Cloud 2.0 möglich.

Vi­sua­li­sie­rung und Da­sh­boards: Basierend auf dem bewährten Chro­no­graf-Projekt der ersten InfluxDB-Version bietet die neue Be­nut­zer­ober­flä­che der Cloud deutlich schnel­le­re Er­geb­nis­se bei der Vi­sua­li­sie­rung und Echt­zeit­ab­fra­ge der Daten.

Nut­zungs­ba­sier­te Preis­plä­ne: Die nut­zungs­ba­sier­te Ab­rech­nung bietet mehr Fle­xi­bi­li­tät als ein selbst ge­hos­te­tes Da­ten­bank­sys­tem und ga­ran­tiert, dass man nur bezahlt, was man auch tat­säch­lich nutzt.

Zum Hauptmenü