JT Jeeraphun - stock.adobe.com
Datenbanken für IIoT: Performance für Maschinendatenströme
Ein IIoT-Projekt auf die bestehende SQL-Datenbank aufzusetzen, funktioniert selten. Allerdings sind auch NoSQL-Datenbanken nicht für alle IIoT-Projekte geeignet.
Im industriellen Umfeld zeigen sich sowohl die Potenziale des Internet der Dinge (Internet of Things, IoT) als auch seine extremen Anforderungen an die Infrastruktur. Um eine Produktionslinie oder sogar mehrere Produktionsstätten an verschiedenen Stellen remote zu steuern, bedarf es einer Vielzahl an Sensoren und Messungen in kurzen Zeitintervallen. Millionen von Sensordaten werden in Echtzeit-Daten-Streams erzeugt, müssen übertragen, gespeichert, aggregiert und analysiert werden.
Nur wenn es gelingt aus diesen Daten innerhalb kürzester Zeit Informationen zu gewinnen, lassen sich Produktionsabläufe optimieren: Messwertüberschreitungen, die einen Alarm auslösen etwa, selbständige dreidimensionale Maschinenbewegungen oder dynamische Energiesteuerungen. Die Use Cases sind vielfältig und sie basieren jeweils auf großen Datenmengen und deren extrem schneller Analyse.
Die Ansprüche an die Datenbank
Ebenso vielfältig sind die Anforderungen, die IIoT-Prozesse (Industrial Internet of Things) an die Datenbank stellen. Eine besondere Rolle spielt die Performance. Dabei ist nicht nur die Datenmenge an sich immens, es müssen zudem viele verschiedene Datenformate verarbeitet werden können.
Gerade wenn viele Sensoren im Spiel sind, laufen massenhaft Zeitreihendaten (Time Series) auf. Klassische relationale Daten wie JSON-Dokumente (Java Script Object Notation) fallen ebenso an, wie BLOBs (Binary Large Objects), unstrukturierte Daten aller Art wie etwa Bild- und Audiodateien, Geodaten und natürlich Daten aus anderen Anwendungen.
Eine IIoT-Datenbank muss es den aufsetzen Analyse-Tools einfach machen, Daten miteinander in Verbindung zu setzen. Es genügt nicht, sie nur in ihrem zeitlichen Ablauf zu erfassen und darzustellen, sie müssen vielmehr ins Verhältnis zu anderen Daten gesetzt werden.
Klassische Joins, Aggregationen und ähnliche Verknüpfungen sollten kein Problem sein. Um die Datenbank in komplexere Anwendungen integrieren oder weitere Tools anbinden zu können, sollte sie über offene Interfaces, wie Standard ANSI SQL oder Postgres-Protokoll-Kompatibilität verfügen. Hinzu kommt die flexible, bedarfsgesteuerte Skalierbarkeit: Bei IIoT-Projekten steigt der Ressourcenbedarf oft schnell, was neben Cluster-Erweiterungen auch Cloud-Optionen ins Spiel bringt.
SQL wäre schön, genügt aber nicht
Der Entscheidung für eine Datenbanktechnologie liegen immer mehrere Entscheidungskriterien zugrunde. Für SQL spricht zunächst, dass eine entsprechende Datenbank in den meisten Unternehmen bereits vorhanden ist und oft viel Know-how aufgebaut wurde.
SQL ist ein allgemein etablierter Standard, viele Anwendungen nutzen die ebenfalls standardisierten Schnittstellen JDBC und ODBC. Und – besonders wichtig im Zusammenhang mit analytischer Datenverarbeitung – die Arbeit von SQL-Datenbanken basiert auf Relationen. Auf diese Weise können Joins, Aggregationen und andere Verknüpfungen von Datenmengen ausgeführt werden.
Dieser Vorteil ist zugleich das Problem: Die Speicherung der Daten in Relationen und deren Bearbeitung kostet Zeit und erzeugt Overhead. Was für wenig zeitkritische Business-Anwendungen genügt, ist im IIoT-Bereich inakzeptabel.
Bei der Prozesssteuerung geht es darum, so nah wie möglich an die Echtzeit-Verarbeitung heran zu reichen. Auch die Erweiterung von klassischen SQL-Datenbanken kann zur Herausforderung werden. Oft ist die Anschaffung teurer, proprietärer Hardware notwendig.
NoSQL-Datenbanken schließen einige dieser Lücken. Sie verzichten auf Relationen und zumeist auch auf vordefinierte Schemen. Stattdessen nutzen sie verschiedene andere Modelle und arbeiten beispielsweise dokumentenorientiert, objektorientiert oder als Key-Value-Store-System.
NoSQL-Datenbanken erreichen damit eine hohe Performance und lassen sich leichter skalieren. Der Markt ist vielfältig: Er reicht von inzwischen etablierten Systemen wie MongoDB oder Elastic bis hin zu Streaming Engines wie Kafka, Flink oder RabbitMQ.
Letztere sind auf die Verarbeitung von Daten-Streams spezialisiert und stellen Schnittstellen für den Import und den Export von Datenströmen zu Drittsystemen bereit. Datenbanken wie Azure Time Series Insights sind sogar speziell für die Erfassung von Zeitreihen gedacht, mit Unterstützung zusätzlicher Tools können die Daten dann auch grafisch im Zeitverlauf dargestellt werden.
Dennoch sind diese verschiedenen Datenbankmodelle nur bedingt für komplexe IIoT-Projekte geeignet, denn Datenmengen miteinander analytisch in Verbindung zu bringen, erfordert eben doch Relationen. Zudem verwenden zwar viele NoSQL-Datenbanken SQL-ähnliche Syntax, zumeist müssen Nutzer aber trotzdem eine proprietäre Sprache lernen.
Ein Mix aus allem
Um die verschiedenen Vorteile zu einen, kann es eine Lösung sein, mehrere Datenbanken einzusetzen. So ist sichergestellt, dass proprietäre Anwendungen wie bisher laufen und bereits vorhandene Infrastruktur weiterverwendet werden kann. Beinahe automatisch führt dies jedoch zu Mehraufwand hinsichtlich Integration und Management.
Inzwischen hält der Markt auch Datenbanklösungen bereit, die die relationale SQL-Arbeitsweise durch verteilte, parallele Verarbeitung so performant wie bei NoSQL macht. Systeme wie beispielsweise CrateDB nutzen dafür eine Shared-Nothing-Architektur, bei der alle Anfragen auf mehrere Knoten verteilt werden.
„Eine IIoT-Datenbank muss es den aufsetzen Analyse-Tools einfach machen, Daten miteinander in Verbindung zu setzen. Es genügt nicht, sie nur in ihrem zeitlichen Ablauf zu erfassen und darzustellen, sie müssen vielmehr ins Verhältnis zu anderen Daten gesetzt werden.“
Christian Lutz, Crate.io
Jeder dieser Knoten nutzt ausschließlich seine eigenen Ressourcen und alle Knoten arbeiten parallel. Die Architektur erlaubt eine horizontale Skalierung auf Server-Clustern bei Bedarf bis zu mehreren Terabyte Clustergröße.
Verfügt die Datenbank über Schnittstellen, mit denen Cloud-Dienste angebunden werden können, lassen sich zudem flexiblere Sourcing-Modelle umsetzen. So stellt Microsoft zum Beispiel mit dem Azure IoT Hub, verschiedenen Event Hubs und seinem IoT-Edge-Angebot mehrere Services bereit, die die bidirektionale Kommunikation zwischen Geräten und Datenbank steuern, Daten puffern und sie für die weitere Verwendung bereitstellen. Bestenfalls ist auch die gewählte Datenbank selbst als Cloud-Service buchbar.
Ein IIoT-Projekt auf die bestehende SQL-Datenbank aufzusetzen, funktioniert eher selten. Sie sind schlicht nicht für die Abarbeitung von Maschinendatenströmen in Echtzeit konzipiert und verursachen minutenlange Verzögerungen. Dennoch muss zum Start eines IIoT-Projektes auch nicht gleich die gesamte Infrastruktur neu aufgesetzt werden. Mit der Unterstützung von Cloud-Services kann die Datenbank entsprechend mitwachsen.
Über den Autor:
Christian Lutz ist Mitgründer und Geschäftsführer von Crate.io. Seit über 15 Jahren ist er als erfolgreicher Serial-Entrepreneur und Operational-Manager mit umfangreichen Kenntnissen in den Bereichen Telekommunikation, (mobiles) Internet, Software, Medien und Konsumgüter tätig.
Die Autoren sind für den Inhalt und die Richtigkeit ihrer Beiträge selbst verantwortlich. Die dargelegten Meinungen geben die Ansichten der Autoren wieder.