Entwerfen für das Internet der Dinge
Wenn Sie darüber nachdenken, eine ideale Datenstruktur für Ihre Internet-of-Things-Anwendung zu entwerfen, sollten Sie Folgendes tun: Tun Sie es nicht.
Wie sich herausstellt, erfordert das Internet der Dinge ein enormes Maß an Flexibilität. Warum? Denn es gibt Millionen – wenn nicht Milliarden – heterogener Objekte, die auf eine Weise miteinander interagieren, die wir nicht vorhersagen können. Die strukturierten und starren Tabellen, die herkömmliche Datenbanken bieten, helfen uns nicht weiter, da sie einen vordefinierten Satz von Eigenschaften und Tabellen erfordern, den wir wiederum nicht vorhersagen können.
Um zu verstehen, warum dies wichtig ist, betrachten wir ein Beispiel einer Wassermanagementanwendung.
Das Problem
Nehmen wir an, wir möchten den Wasserstand in einer großen Anzahl von Brunnen messen. Eine vereinfachte Datenarchitektur für diese Anwendung würde wie folgt aussehen:
Das sieht gut aus und sollte mit einer relationalen Datenbank perfekt funktionieren. Doch dann, zwei Jahre nachdem das System in Betrieb ist, hat jemand eine Idee:
„Hey, jetzt, da wir diese neuen internetfähigen Dieselgeneratoren gekauft haben, um die Wasserpumpen anzutreiben, schauen wir uns ihre Live-Daten an!“.
Um diese Änderung vorzunehmen, müssten wir eine neue Tabelle mit dem Namen „Kraftwerke“ und eine neue Spalte zur Tabelle „Brunnen“ hinzufügen, die unten rot markiert ist:
In einer relationalen Datenbank würde diese Änderung jedoch erfordern, dass wir alle Zeilen der Tabelle neu schreiben, damit sie einen Wert in der neuen Spalte enthalten. Bei historischen Daten von zwei Jahren kann dies einige Stunden dauern und die Datenbank blockieren.
Können Sie sich dieses Vorgehen bei jeder künftigen Änderung vorstellen? Wie wirkt es sich auf die Stabilität des Systems, die Betriebszeit und den technischen Personalbedarf aus?
Die Lösung
Eine interessante Art des Umgangs IoT Daten ist der dokumentenorientierte Ansatz. Anstelle fester Tabellen, Spalten und Zeilen verfügen Sie über Dokumente, die jedes Objekt beschreiben. Man kann sich das so vorstellen, als ob Tausende von Papieren (Dokumenten) auf dem Boden herumliegen, anstatt sie perfekt in den Ordnern verschiedener Schränke zu organisieren.
So chaotisch es auch klingen mag, diese Dokumente verfügen nicht über ein vordefiniertes Schema wie relationale Datenbanken, was perfekt für heutige und zukünftige IoT Anwendungen ist. Dies trägt auch dazu bei, die Daten auf mehrere Server zu verteilen, wodurch sie cloudfreundlicher werden.
Um auf unser Beispiel zurückzukommen: Die Daten zu jedem Brunnen werden jetzt in einem Dokument und nicht in einer Tabelle gespeichert:
Wie Sie sehen, haben wir alle Eigenschaften des Brunnens in einem einzigen Dokument zusammengefasst, unabhängig von den Beziehungen zwischen dem Brunnen (Wasserstand, Niederschlag, Luftfeuchtigkeit), seiner Umgebung (Stadt, Land) und dem Stromgenerator (Öldruck, Energie) Nutzung usw.).
Diese Vereinfachung ermöglicht jede zukünftige Änderung der Dokumenteigenschaften.
Wie macht man das in der realen Welt?
Bei Ubidots war es unsere Priorität, ein flexibles Datenschema anzubieten und es unseren Benutzern über eine RESTful-API (und wir verwenden dafür MongoDB
Wir haben ein Basisschema, das mit den meisten IoT Anwendungen kompatibel ist:
- Datenquellen, Variablen enthalten
- Variablen, Werte enthalten
- Werte sind zeitgestempelte Datenpunkte, die die Sensorinformationen enthalten.
Benutzer können aber auch zusätzliche Attribute und Eigenschaften angeben, um ihren Anforderungen gerecht zu werden. In unserem Beispiel könnten dies zusätzliche Informationen zu jeder Datenquelle , Variablen oder jedem Wert :
Es ist erwähnenswert, dass die letzten Werte ( Werte ) im Laufe der Zeit gespeichert werden, was bedeutet, dass Sie ihre historischen Spuren behalten können.
Sehen Sie sich unsere Dokumentation an, um zu erfahren, wie Sie Ihren Daten einen solchen Kontext hinzufügen:
- Erstellen Sie eine Datenquelle
- Erstellen Sie eine Variable innerhalb einer Datenquelle
- Erstellen Sie einen Wert innerhalb einer Variablen
- Senden der Geodaten der ISS an Ubidots
Ich schließe es ab
Es gibt eine Vielzahl von IoT Anwendungen, die jeweils unterschiedliche Datenschemata erfordern. In diesem Artikel haben wir dokumentenorientierte Datenbanken als gute Alternative für zukünftige IoT Entwicklungen untersucht und wie Ubidots sie unterstützen kann.
Sie eine IoT Anwendung? Melden Sie sich an und erstellen Sie noch heute Ihre eigenen Anwendungen!