InfluxDB: Erklärung, Vorteile und erste Schritte
Bei der Erfassung wissenschaftlicher oder technischer Messdaten mittels Sensoren fallen in kurzer Zeit große Datenmengen an, die zusammen mit einem Zeitstempel des Messzeitpunkts verarbeitet werden müssen. Für solche Zeitreihendaten sind spezielle Datenbanken nötig. Dieser Artikel thematisiert InfluxDB, ein Datenbankmanagementsystem (DBMS), das eigens für diese Aufgabe entwickelt wurde.
Was ist InfluxDB?
InfluxDB ist ein Datenbank-Management-System, das von der Firma InfluxData, Inc entwickelt wurde. InfluxDB ist Open Source und kann kostenlos eingesetzt werden. Die kommerzielle Version „InfluxDB Enterprise“ bietet Wartungsverträge sowie spezielle Zugangskontrollen für Geschäftskunden und wird auf einem Server innerhalb des Unternehmensnetzes installiert. Die neue Version InfluxDB 2.0 läuft zusätzlich als flexibel anpassbarer Cloud-Dienst mit webbasierter Benutzeroberfläche zur Datenerfassung und -visualisierung.
Das Datenbank-Management-System InfluxDB ist in der Google-Programmiersprache Go, auch als Golang bekannt, programmiert. In der ersten Version wurde für externe Datenbankabfragen die Abfragesprache InfluxQL genutzt, eine Eigenentwicklung des Herstellers.
InfluxDB 2.0 führt die neue Programmiersprache Flux ein, die das Unternehmen InfluxData als Open Source unter der MIT-Lizenz auf GitHub veröffentlicht. Dort wird das Projekt auch von anderen Entwicklern, die mit Zeitreihendaten arbeiten, weiterentwickelt. Flux ist eine eigenständige Script- und Abfragesprache für Time-Series-Datenbanken (TSDB). Sie kann ab der InfluxDB-Version 1.7 oder auch komplett eigenständig bzw. im Zusammenspiel mit Datenbanken anderer Anbieter genutzt werden. Flux ist für den ETL-Prozess (Extract, Transform, Load) in Datenbanken optimiert und nicht abwärtskompatibel zur früher verwendeten Abfragesprache InfluxQL. Der Anbieter plant aber für Bestandskunden einen Migrationspfad, bei dem auch InfluxQL-Code in Flux übersetzt werden soll.
Die Syntax von Flux basiert auf der beliebten Skriptsprache JavaScript und ist daher leicht zu erlernen und flexibel erweiterbar. Ein zentrales Merkmal von Flux ist die Unterstützung unterschiedlicher Datenquellen, etwa mithilfe von APIs von Drittanbietern. So kann Flux mit Analysewerkzeugen wie Jupyter zusammenarbeiten. Die Datenaustausch-Schnittstelle Apache Arrow ermöglicht die Kommunikation mit anderen Systemen und die Integration in Big-Data-Umgebungen.
Wann kommt InfluxDB zum Einsatz?
InfluxDB ist prädestiniert für Time-Series-Datenbanken (TSDB), die Zeitreihen speichern. Solche Datenbanken verwendet man u. a., um Sensordaten oder Protokolle mit Zeitstempeln über einen bestimmten Zeitraum zu speichern und auszuwerten. Dabei kann es sich um Millionen eingehender Datensätze handeln, wie sie beispielsweise Geräte des Internet of Things oder wissenschaftliche Messinstrumente in einem ständigen Datenstrom liefern. Diese Daten müssen nach ihrem Eintreffen in der Datenbank zeitnah verarbeitet werden. In InfluxDB ist deshalb ein Zeitdienst integriert, der über das Network Time Protocol (NTP) sicherstellt, 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 beispielsweise die Datenquelle, der eigentliche Wert sowie der zugehörige Zeitstempel gespeichert.
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 unterscheidet bei den Spalten zwischen tags und fields. Während es sich bei einem tag nur um Metadaten handelt, die in den Index aufgenommen werden, enthalten fields Werte, die anschließend ausgewertet werden können. In unserem Beispiel ist die erste Spalte also ein tag, während die zweite ein field ist. Diese Unterscheidung vereinfacht den Umgang mit der Datenbank und die Auswertung der Messdaten.
Was sind die Vorteile von InfluxDB?
Gegenüber gewöhnlichen relationalen Datenbanken bieten TSDB wie InfluxDB klare Geschwindigkeitsvorteile, wenn es um die Speicherung und Verarbeitung von Messdaten mit Zeitstempeln geht. Ein traditionelles DBMS verliert Performance bei der Organisation eines komplexen Indexes, der in diesem Anwendungsgebiet aber gar nicht gebraucht wird. InfluxDB kann auch über einen langen Zeitraum die hohen Schreibgeschwindigkeiten beibehalten, da ein sehr einfacher Index verwendet wird.
Gegenüber der Vorgängerversion 1.x bietet InfluxData mit der neuen InfluxDB Cloud 2.0 auf Amazon Web Services (AWS), der Google Cloud Platform (GCP) oder Microsoft Azure eine cloudbasierte Lösung an. Beim sogenannten Serverless-Computing braucht der Kunde keine eigene Server-Infrastruktur. In der Cloud-Variante muss man keine einzelnen Server buchen, stattdessen passt sich das System automatisch der Auslastung an, was besonders bei industriellen IoT-Anwendungen und Machine Learning wichtig ist, wo sich die anfallende Datenmenge kurzfristig ändern kann.
Waren in der ersten Version noch verschiedene Komponenten nötig – der sogenannte TICK-Stack mit den Produkten Telegraf, Chronograf und Kapacitor –, ist in InfluxDB 2.0 alles Benötigte bereits integriert. Auch in der lokalen, auf einem eigenen Server installierbaren Variante liegt das gesamte Datenbank-Management-System in einer einzigen Programmdatei, die bis jetzt für 64-Bit-Linux, Linux für ARM-Prozessoren, 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 kostenlosen Zugang zur InfluxDB Cloud 2.0. Hier steht nicht nur die Datenbank zum Test bereit, sondern die komplette gehostete und mehrbenutzerfähige Datenplattform für Zeitreihendaten. Die InfluxDB Cloud 2.0 enthält auch Module zum Sammeln, Auswerten und Visualisieren der gespeicherten Daten.
Die kostenlose Variante bietet eingeschränkte Datenraten beim Lesen und Schreiben, bis zu 10.000 Datensätze und eine maximale Speicherdauer von 30 Tagen. Diese Einschränkungen reichen für Hobbyprojekte in den meisten Fällen aus, sodass man hier auf die kostenlose Version zurückgreifen kann. Ein kostenloser Plan lässt sich später ohne Datenverlust zu einem nutzungsbasierten, kostenpflichtigen Plan erweitern.
Legen Sie in einem ersten Schritt auf der Anmeldeseite der InfluxDB Cloud 2.0 ein kostenloses Benutzerkonto an. Klicken Sie dann auf den Bestätigungslink in der E-Mail.
Nach Verifizierung des Benutzerkontos 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 kostenlosen Nutzung keine Rolle spielt. Wenn Sie Amazon Web Services oder Google Cloud Platform (GCP) bereits nutzen, können Sie über die Marketplaces der Cloud-Anbieter die InfluxDB-Cloud-Produkte abonnieren.
Nach der Anmeldung zeigt InfluxDB das persönliche Dashboard, auf dem Ihre Daten gesammelt und visualisiert werden. Die Datensammlung ist über Telegraf-Plugins, die InfluxDB v2-API, die Influx-Befehlszeilenschnittstelle (CLI) oder direkt auf der InfluxDB-Benutzeroberfläche möglich. Weiterhin stehen Client-Bibliotheken für verschiedene beliebte Programmiersprachen zur Verfügung.
Sie können Telegraf-Konfigurationen interaktiv erstellen oder vorhandene Konfigurationen übernehmen, um Daten in die InfluxDB-Cloud-2.0-Instanz zu senden. Nachdem Sie die InfluxDB-Cloud zum Sammeln von Daten eingerichtet haben, erstellen Sie persönliche Dashboards, um die Daten abzufragen und darzustellen.
Im InfluxDB-Daten-Explorer erkunden und visualisieren Sie die gesammelten Daten. Dabei lassen sich Refresh-Zeiten und Zeiträume für die Darstellung je nach Projekt beliebig anpassen. Die InfluxDB-Benutzeroberfläche bietet verschiedene, grafisch ansprechende Visualisierungsoptionen. Über die Weboberfläche wechseln Sie nahtlos zwischen dem Flux Builder und der manuellen Bearbeitung von Datenbankabfragen.
Auf der Seite „Usage“ können Sie jederzeit die aktuelle Nutzung der Datenbank einsehen, um abzuschätzen, ob sich ein kostenpflichtiger Plan lohnt.
Die wichtigsten neuen Möglichkeiten der InfluxDB Cloud 2.0 im Überblick
Kostenloser Plan (mit Einschränkungen): Kein Download, keine Installation und keine eigene In-House-Server-Infrastruktur mehr nötig; direkter Einstieg in die InfluxDB-2.0-Technologie; der kostenlose Plan ist zum Kennenlernen von InfluxDB und für kleine Hobbyprojekte konzipiert.
Unterstützung von Flux: Flux ist eine eigenständige Skript- und Abfragesprache für Zeitreihen-Datenbanken, die durch leichte Wiederverwendbarkeit von Code die Produktivität erhöht. Flux wurde für die Arbeit mit Daten in InfluxDB 2.0 entwickelt und optimiert, lässt sich aber auch zusammen mit anderen Datenquellen verwenden.
Einheitliche API: Die einheitliche InfluxDB-v2-API bietet Zugriff auf alle Komponenten von InfluxDB wie Datenerfassung, Abfrage, Speicherung und Visualisierung. Damit ist ein nahtloser Übergang zwischen der installierten Open-Source-Version und der InfluxDB Cloud 2.0 möglich.
Visualisierung und Dashboards: Basierend auf dem bewährten Chronograf-Projekt der ersten InfluxDB-Version bietet die neue Benutzeroberfläche der Cloud deutlich schnellere Ergebnisse bei der Visualisierung und Echtzeitabfrage der Daten.
Nutzungsbasierte Preispläne: Die nutzungsbasierte Abrechnung bietet mehr Flexibilität als ein selbst gehostetes Datenbanksystem und garantiert, dass man nur bezahlt, was man auch tatsächlich nutzt.