Azure Cosmos DB in IoT-workloads

Azure Cosmos DB
Azure Databricks
Azure Functions
Azure IoT Hub
Power BI

In dit artikel wordt een IoT-workload (Internet of Things) beschreven die afhankelijk is van verschillende functies van de Azure Cosmos DB-databaseservice. Azure Cosmos DB is een database met meerdere modellen die is gebouwd voor wereldwijde distributie en horizontale schaal.

Wereldwijde distributie schaalt en repliceert gegevens transparant in Azure-regio's. U kunt doorvoer en opslag wereldwijd schalen en alleen betalen voor het benodigde bedrag. Directe elastische schaalaanpassing biedt ruimte voor diverse en onvoorspelbare IoT-workloads, zonder dat dit ten koste gaat van opname- of queryprestaties.

Azure Cosmos DB is ideaal voor IoT-workloads omdat het geschikt is voor:

  • Telemetriegegevens van apparaten opnemen tegen hoge tarieven en geïndexeerde query's retourneren met lage latentie en hoge beschikbaarheid.
  • Het opslaan van de JSON-indeling van verschillende apparaatleveranciers, wat flexibiliteit biedt in het payloadschema.
  • Met behulp van wire-protocol compatibele API-eindpunten voor Cassandra-, MongoDB-, SQL-, Gremlin-, enzovoorts- en tabeldatabases, en ingebouwde ondersteuning voor Jupyter Notebook-bestanden.

Potentiële gebruikscases

  • Gebruik ingebouwde, wereldwijd gedistribueerde Azure Cosmos DB-mogelijkheden om lees-/schrijfbewerkingen met lage latentie in te schakelen voor zeer responsieve IoT-toepassingen.
  • Gegevens verwerken van een groot aantal leveranciers en gegevenstypen van apparaten.

Architectuur

Diagram met de rol van Azure Cosmos DB in een Azure IoT-oplossingsarchitectuur.Een Visio-bestand van deze architectuur downloaden.

Gegevensstroom

  1. IoT-sensoren en Edge-apparaten verzenden gebeurtenissen als berichtstromen via Azure IoT Hub naar de analyse- en transformatielaag. IoT Hub kan gegevensstromen gedurende een opgegeven duur opslaan in partities.

  2. Azure Databricks met Apache Spark Structured Streaming haalt in realtime berichten van IoT Hub op, verwerkt de gegevens op basis van bedrijfslogica en verzendt de gegevens naar de opslag. Structured Streaming kan realtime analyses bieden, zoals het berekenen van zwevende gemiddelden of minimum- en maximumwaarden gedurende perioden.

  3. Azure Cosmos DB slaat apparaatberichten op als JSON-documenten in het dynamische gegevensarchief. Azure Cosmos DB kan valideren op basis van JSON-schema's van verschillende apparaatleveranciers.

    De opslaglaag bestaat ook uit:

    • Azure Blob Storage. Met IoT Hub-berichtroutering worden onbewerkte apparaatberichten opgeslagen in Blob Storage, wat een goedkope, langdurige koude gegevensopslag biedt.
    • Azure SQL Database voor het opslaan van transactionele en relationele gegevens, zoals factureringsgegevens en gebruikersrollen.
    • Azure Synapse Analytics-datawarehouse, gevuld met Azure Data Factory, waarmee gegevens uit Azure Cosmos DB en Azure SQL DB worden samengevoegd.
  4. Microsoft Power BI analyseert het datawarehouse.

  5. De presentatielaag maakt gebruik van gegevens uit de opslaglaag om web-, mobiele en API-apps te bouwen.

  6. Wanneer een nieuw of bijgewerkt apparaatbericht binnenkomt, activeert Azure Cosmos DB-wijzigingenfeed een Azure Functions-functie.

  7. De functie bepaalt of voor het bericht een apparaatactie is vereist, zoals opnieuw opstarten. Zo ja, dan maakt de functie verbinding met IoT Hub met behulp van de IoT Hub Service-API en initieert de apparaatactie. De functie kan de actie initiëren met behulp van apparaatdubbels, cloud-naar-apparaatberichten of directe methoden.

Onderdelen

Deze workload maakt gebruik van de volgende Azure-onderdelen:

Azure Cosmos DB

Deze IoT-workload spotlightt Azure Cosmos DB, een wereldwijd gedistribueerde database met meerdere modellen. De workload maakt gebruik van de volgende Azure Cosmos DB-functies:

  • Consistentieniveaus. Azure Cosmos DB ondersteunt vijf leesconsistentieniveaus, van sterkste tot zwakste: Sterke, gebonden veroudering, sessie, consistent voorvoegsel en uiteindelijk. Over het algemeen leidt sterkere consistentie tot lagere beschikbaarheid, langere latentie en lagere doorvoer. U kunt een consistentieniveau kiezen op basis van uw workloadvereisten.

  • Time to live (TTL). Azure Cosmos DB kan items na een bepaalde periode automatisch uit een container verwijderen. Met deze mogelijkheid kan Azure Cosmos DB fungeren als een dynamisch gegevensarchief voor recente gegevens, met langetermijngegevens die zijn opgeslagen in koude opslag van Azure Blob.

  • Wijzigingenfeed. De functie wijzigingenfeed voert een gesorteerde lijst met gewijzigde documenten uit, in de volgorde waarin ze zijn gewijzigd. Elke nieuwe gebeurtenis in de wijzigingenfeed van de Azure Cosmos DB-container activeert automatisch een kleine reactieve Azure Functions-functie. Afhankelijk van de inhoud van het JSON-document kan de functie verbinding maken met de Azure IoT Hub Service-API en een actie uitvoeren op het apparaat.

  • Aanvraageenheden (RU's). RU's zijn rekeneenheden waarmee azure Cosmos DB-doorvoer wordt gemeten. U kunt RU's gebruiken om Azure Cosmos DB dynamisch omhoog en omlaag te schalen, terwijl u de beschikbaarheid en optimalisatie voor kosten en prestaties behoudt.

  • Partitioneren. De partitiesleutel bepaalt hoe Azure Cosmos DB gegevens in partities routeert. De IoT-apparaat-id is de gebruikelijke partitiesleutel voor IoT-toepassingen.

Andere Azure-onderdelen

De oplossing maakt ook gebruik van de volgende Azure-onderdelen:

  • Azure IoT Edge voert toepassingen uit aan de rand, zoals machine learning-modellen.

  • Azure IoT Hub fungeert als de cloudgateway, waarbij telemetriegegevens van apparaten op schaal worden opgenomen. IoT Hub biedt ondersteuning voor communicatie naar apparaten, zodat acties vanuit de cloud naar IoT Edge naar het apparaat kunnen worden verzonden.

  • Azure Databricks met Spark Structured Streaming is een schaalbaar, fouttolerant stroomverwerkingssysteem dat systeemeigen ondersteuning biedt voor batch- en streamingworkloads. Azure Databricks is de transformatie- en analyselaag en maakt verbinding met het ioT Hub event hub-compatibele eindpunt met behulp van de Maven-bibliotheek azure-eventhubs-spark_2.11:2.3.6 .

  • Azure Blob Storage biedt schaalbare, goedkope, langdurige koude gegevensopslag voor ongestructureerde gegevens.

  • Azure SQL Database is de relationele database voor transactionele en andere niet-IoT-gegevens.

  • Azure Synapse Analytics is een datawarehouse en rapportageplatform voor zakelijke datawarehousing en big data-analyses. Synapse Analytics bevat geaggregeerde gegevens uit Azure SQL Database en Azure Cosmos DB.

    Met Azure Synapse Link voor Azure Cosmos DB kunt u bijna realtime analyses uitvoeren op operationele gegevens van Azure Cosmos DB, zonder dat dit gevolgen heeft voor de prestaties of kosten van transactionele workloads. Synapse Link maakt gebruik van de twee analyse-engines in de Azure Synapse-werkruimte: SQL Serverloze en Spark-pools.

  • Power BI is een suite met hulpprogramma's voor bedrijfsanalyse voor het analyseren van gegevens en het delen van inzichten. Power BI kan query's uitvoeren op een semantisch model dat is opgeslagen in Azure Analysis Services of kan rechtstreeks query's uitvoeren op Synapse Analytics.

  • Azure-app Service bouwt web- en mobiele toepassingen. Met De Azure API-app kunnen apps van derden API's gebruiken op basis van gegevens uit de ondersteunende laag.

  • Azure Functions is een gebeurtenisgestuurd, serverloos rekenplatform dat op schaal in de cloud kan werken en services kan integreren met behulp van triggers en bindingen. Azure Functions kan IoT-berichtindelingen vertalen of acties activeren wanneer deze zijn verbonden met azure Cosmos DB-wijzigingenfeed.

Alternatieven

  • In plaats van Azure Databricks kan de transformatie- en analyselaag HDInsight Storm, HDInsight Spark of Azure Stream Analytics gebruiken om streaminganalyses uit te voeren en Azure Functions gebruiken om de nettoladingen van berichten te transformeren.

  • De serviceopslaglaag kan Azure Data Explorer gebruiken voor het opslaan van IoT-berichten. Deze service biedt ook uitgebreide analysemogelijkheden.

Overwegingen

Azure Cosmos DB heeft een limiet van 20 GB voor één logische partitie. Voor de meeste IoT-oplossingen is deze grootte voldoende. Zo niet, dan kunt u het volgende doen:

  • Stel de partitiesleutel in op een kunstmatig veld en wijs het veld een samengestelde waarde toe, zoals apparaat-id + huidige maand en jaar. Deze strategie zorgt voor een hoge waarde kardinaliteit voor een goed partitieontwerp. Zie Een partitiesleutel kiezen voor meer informatie.

  • Op basis van de levenscyclus van gegevens kunt u oudere Azure Cosmos DB-gegevens verplaatsen naar koude opslag, zoals Azure Blob Storage. U kunt een combinatie van wijzigingenfeed gebruiken om de gegevens te repliceren naar koude opslag en TTL om gegevens na een bepaalde periode automatisch uit een container te verwijderen.

Volgende stappen