Azure Cosmos DB in IoT-Workloads

Azure Cosmos DB
Azure Databricks
Azure-Funktionen
Azure IoT Hub
Power BI

In diesem Artikel wird eine IoT-Workload (Internet of Things, Internet der Dinge) beschrieben, die auf mehreren Features des Azure Cosmos DB-Datenbankdiensts basiert. Azure Cosmos DB ist eine Datenbank mit mehreren Modellen, die für globale Verteilung und horizontale Skalierung konzipiert ist.

Die globale Verteilung skaliert und repliziert Daten transparent über Azure-Regionen hinweg. Durchsatz und Speicher können weltweit skaliert werden, und Sie bezahlen nur für die Menge, die Sie benötigen. Die unmittelbare und flexible Skalierung kann für verschiedene und unvorhersehbare IoT-Workloads genutzt werden, ohne die Leistung bei der Erfassung oder bei Abfragen zu beeinträchtigen.

Azure Cosmos DB bietet Folgendes und eignet sich daher perfekt für IoT-Workloads:

  • Schnelles Erfassen von Gerätetelemetriedaten und Zurückgeben indizierter Abfragen mit geringer Wartezeit und hoher Verfügbarkeit.
  • Speichern des JSON-Formats verschiedener Geräteanbieter, was für Flexibilität beim Nutzdatenschema sorgt.
  • Verwenden Wire Protocol-kompatibler API-Endpunkte für Cassandra, MongoDB, SQL, Gremlin, etcd und Tabellendatenbanken sowie integrierte Unterstützung für Jupyter Notebook-Dateien.

Mögliche Anwendungsfälle

  • Verwenden integrierter, global verteilter Azure Cosmos DB-Funktionen, um Lese-/Schreibvorgänge mit geringer Wartezeit für äußerst reaktionsschnelle IoT-Anwendungen zu ermöglichen.
  • Verarbeiten von Daten aus einem breiten Spektrum von Geräteanbietern und Datentypen

Aufbau

Diagramm, das die Rolle von Azure Cosmos DB in einer Azure IoT-Lösungsarchitektur zeigt.Laden Sie eine Visio-Datei dieser Architektur herunter.

Datenfluss

  1. IoT-Sensoren und Edgegeräte senden Ereignisse als Nachrichtendatenströme über Azure IoT Hub an die Analyse- und Transformationsebene. IoT Hub kann Datenströme für einen bestimmten Zeitraum in Partitionen speichern.

  2. Azure Databricks mit strukturiertem Apache Spark-Streaming ruft Nachrichten in Echtzeit von IoT Hub ab, verarbeitet die Daten gemäß der Geschäftslogik und sendet sie an den Speicher. Strukturiertes Streaming ermöglicht Echtzeitanalysen wie etwa die Berechnung von gleitenden Durchschnitten und Minimal- und Maximalwerten für Zeiträume.

  3. Azure Cosmos DB speichert Gerätenachrichten als JSON-Dokumente im heißen Datenspeicher. Azure Cosmos DB kann zur Validierung JSON-Schemas von verschiedenen Geräteanbietern verwenden.

    Die Speicherebene umfasst außerdem Folgendes:

    • „Azure Blob Storage“. Das Nachrichtenrouting von IoT Hub speichert unformatierte Gerätenachrichten in Blobspeicher und bietet so einen kostengünstigen, langfristigen kalten Datenspeicher.
    • Azure SQL-Datenbank zum Speichern transaktionsbezogener und relationaler Daten wie Abrechnungsdaten und Benutzerrollen
    • Azure Synapse Analytics Data Warehouse – gefüllt durch Azure Data Factory – zum Aggregieren von Daten von Azure Cosmos DB und Azure SQL-Datenbank
  4. Microsoft Power BI analysiert das Data Warehouse.

  5. Auf der Darstellungsebene werden Daten der Speicherebene verwendet, um Web-Apps, mobile Apps und API-Apps zu erstellen.

  6. Wenn eine neue oder aktualisierte Gerätenachricht eintrifft, wird durch den Änderungsfeed von Azure Cosmos DB eine Azure Functions-Funktion ausgelöst.

  7. Die Funktion bestimmt, ob die Nachricht eine Geräteaktion erfordert (beispielsweise einen Neustart). Falls ja, stellt die Funktion unter Verwendung der IoT Hub-Dienst-API eine Verbindung mit IoT Hub her und initiiert die Geräteaktion. Zum Initiieren der Aktion können Gerätezwillinge, Cloud-zu-Gerät-Nachrichten oder direkte Methoden verwendet werden.

Komponenten

Von dieser Workload werden die folgenden Azure-Komponenten verwendet:

Azure Cosmos DB

Bei dieser IoT-Workload steht Azure Cosmos DB im Mittelpunkt – eine global verteilte Datenbank mit mehreren Modellen. Von der Workload werden folgende Azure Cosmos DB-Features verwendet:

  • Konsistenzebenen: Azure Cosmos DB unterstützt fünf Lesekonsistenzebenen (von stark bis schwach): starke Konsistenz, begrenzte Veraltung, Sitzungskonsistenz, Präfixkonsistenz und letztliche Konsistenz. Eine stärkere Konsistenz führt im Allgemeinen zu geringerer Verfügbarkeit, längerer Wartezeit und geringerem Durchsatz. Sie können eine Konsistenzebene wählen, die zu Ihren Workloadanforderungen passt.

  • Gültigkeitsdauer (TTL): Azure Cosmos DB kann Elemente nach einem bestimmten Zeitraum automatisch aus einem Container löschen. Dadurch kann Azure Cosmos DB als heißer Datenspeicher für aktuelle Daten fungieren, während Azure Blob Storage als kalter Speicher für die langfristige Speicherung von Daten verwendet wird.

  • Änderungsfeed: Der Änderungsfeed gibt eine sortierte Liste geänderter Dokumente in der Reihenfolge aus, in der sie geändert wurden. Durch jedes neue Ereignis im Änderungsfeed des Azure Cosmos DB-Containers wird automatisch eine kleine reaktive Azure Functions-Funktion ausgelöst. Je nach Inhalt des JSON-Dokuments kann die Funktion eine Verbindung mit der Azure IoT Hub-Dienst-API herstellen und eine Aktion auf dem Gerät ausführen.

  • Anforderungseinheiten (Request Units, RUs): RUs sind Compute-Einheiten zur Messung des Azure Cosmos DB-Durchsatzes. Mit RUs können Sie Azure Cosmos DB dynamisch hoch- und herunterskalieren und gleichzeitig die Verfügbarkeit gewährleisten sowie die Kosten und die Leistung optimieren.

  • Partitionierung: Der Partitionsschlüssel bestimmt, wie Azure Cosmos DB Daten an Partitionen weiterleitet. Als Partitionsschlüssel für IoT-Anwendungen wird üblicherweise die IoT-Geräte-ID verwendet.

Weitere Azure-Komponenten

In dieser Lösung werden außerdem folgende Azure-Komponenten verwendet:

  • Azure IoT Edge führt Anwendungen am Edge aus (beispielsweise Machine Learning-Modelle).

  • Azure IoT Hub fungiert als Cloudgateway und erfasst Gerätetelemetriedaten im großen Stil. IoT Hub unterstützt die bidirektionale Kommunikation mit Geräten, sodass Aktionen aus der Cloud an IoT Edge und dann an das Gerät gesendet werden können.

  • Azure Databricks mit strukturiertem Apache-Streaming ist ein skalierbares, fehlertolerantes Streamverarbeitungssystem mit nativer Unterstützung von Batch- und Streamingworkloads. Azure Databricks ist die Transformations- und Analyseebene und stellt mithilfe der Maven-Bibliothek azure-eventhubs-spark_2.11:2.3.6 eine Verbindung mit dem Event Hub-kompatiblen Endpunkt von IoT Hub her.

  • Azure Blob Storage bietet skalierbaren, kostengünstigen und langfristigen kalten Datenspeicher für unstrukturierte Daten.

  • Azure SQL-Datenbank- ist die relationale Datenbank für Transaktionsdaten und sonstige Nicht-IoT-Daten.

  • Azure Synapse Analytics ist eine Data Warehouse- und Berichterstellungsplattform für Data Warehousing in Unternehmen und für Big Data-Analysen. Synapse Analytics enthält aggregierte Daten von Azure SQL-Datenbank und Azure Cosmos DB.

    Azure Synapse Link für Azure Cosmos DB ermöglicht Analysen für Azure Cosmos DB-Betriebsdaten in Quasi-Echtzeit und ohne Auswirkungen auf die Leistung oder auf die Kosten von Transaktionsworkloads. Synapse Link verwendet die beiden Analyse-Engines im Azure Synapse-Arbeitsbereich: SQL (serverlos) und Spark Pools.

  • Power BI ist eine Suite mit Business Analytics-Tools zum Analysieren von Daten und Teilen von Erkenntnissen. Power BI kann ein in Azure Analysis Services gespeichertes Semantikmodell oder direkt Azure Synapse abfragen.

  • Azure App Service dient zum Erstellen von Webanwendungen und mobilen Anwendungen. Azure-API-Apps ermöglichen Drittanbieter-Apps die Nutzung von APIs basierend auf Daten der Bereitstellungsebene.

  • Azure Functions ist eine ereignisgesteuerte serverlose Computeplattform, die im großen Stil in der Cloud betrieben werden und Dienste über Trigger und Bindungen integrieren kann. Azure Functions kann IoT-Nachrichtenformate übersetzen oder Aktionen auslösen, wenn eine Verbindung mit dem Änderungsfeed von Azure Cosmos DB besteht.

Alternativen

  • Anstelle von Azure Databricks kann auf der Transformations- und Analyseebene HDInsight Storm, HDInsight Spark oder Azure Stream Analytics für Streaminganalysen verwendet werden. Die Nachrichtennutzdaten können mithilfe von Azure Functions transformiert werden.

  • Auf der Dienstspeicherebene kann Azure Data Explorer zum Speichern von IoT-Nachrichten genutzt werden. Dieser Dienst verfügt auch über umfassende Analysefunktionen.

Überlegungen

In Azure Cosmos DB gilt ein 20-GB-Limit für eine einzelne logische Partition. Für die meisten IoT-Lösungen ist diese Größe ausreichend. Falls nicht, haben Sie folgende Möglichkeiten:

  • Sie können den Partitionsschlüssel auf ein künstliches Feld festlegen und dem Feld einen zusammengesetzten Wert zuweisen (z. B. Geräte-ID + aktueller Wert für Monat und Jahr). Diese Strategie gewährleistet eine hochwertige Kardinalität für einen guten Partitionsentwurf. Weitere Informationen finden Sie unter Auswahl eines Partitionsschlüssels.

  • Basierend auf dem Datenlebenszyklus können Sie ältere Azure Cosmos DB-Daten in Cold Storage verschieben (beispielsweise in Azure Blob Storage). Sie können eine Kombination aus Änderungsfeed (zum Replizieren der Daten in Cold Storage) und TTL (zum automatischen Löschen von Daten aus einem Container nach einem bestimmten Zeitraum) verwenden.

Nächste Schritte