Schaal direct en flexibel om diverse en onvoorspelbare IoT-workloads te kunnen afhandelen, zonder aan opname- of queryprestaties te moeten inleveren.
Azure Cosmos DB is de wereldwijd gedistribueerde, multimodeldatabase van Microsoft. Azure Cosmos DB is vanaf de basis opgebouwd met wereldwijde distributie en horizontale schaal in de kern. Het biedt kant-en-klare wereldwijde distributie over een groot aantal Azure-regio's door uw gegevens transparant te schalen en te repliceren, waar uw gebruikers zich ook kunnen vinden. U kunt doorvoer en opslag wereldwijd elastisch schalen en u betaalt alleen voor de doorvoer en opslag die u nodig hebt.
Cosmos DB is ideaal voor IoT-oplossingen. Cosmos DB kunnen telemetriegegevens van apparaten met hoge snelheid opnemen en geïndexeerde query's terug verwerken met lage latentie en hoge beschikbaarheid.
Cosmos DB is een database met meerdere modellen met wire-protocol compatibele API-eindpunten voor Cassandra, MongoDB, SQL, Gremlin, Etcd en Table, samen met ingebouwde ondersteuning voor Jupyter Notebook-bestanden.
Architectuur
Gegevensstroom
- Gebeurtenissen die worden gegenereerd op basis van IoT-apparaten, worden als een stroom berichten naar de analyse- en transformatielaag Azure IoT Hub verzonden. Azure IoT Hub gegevensstromen op in partities voor een configureerbare hoeveelheid tijd.
- Azure Databricks, die Apache Spark Streaming gebruikt, de berichten in realtime oppist van IoT Hub, verwerkt de gegevens op basis van de bedrijfslogica en verzendt de gegevens naar de laag Voor opslag. Spark Streaming kan realtime analyses bieden, zoals het berekenen van bewegende gemiddelden, minimum- en maximumwaarden in perioden.
- Apparaatberichten worden opgeslagen in Cosmos DB JSON-documenten. Dit wordt beschouwd als het hot-gegevensopslag. Verschillende JSON-schema's die verschillende leveranciers van apparaten vertegenwoordigen, kunnen worden opgeslagen in Cosmos DB of worden geconverteerd naar een canoniek JSON-schema.
- De opslaglaag bestaat uit:
- Azure Blob Storage: met IoT Hub-berichtroutering kunnen de onbewerkte IoT-apparaatberichten worden opgeslagen in Azure Blob Storage, zodat blobopslag kan fungeren als een goedkoop, langdurig koud gegevensopslag.
- Azure SQL Database: Gebruik Azure SQL voor het opslaan van uw transactionele en relationele gegevens (bijvoorbeeld factureringsgegevens, gebruikersrollen).
- Azure Synapse Analytics (eerder Azure SQL Data Warehouse) - voor uw oplossingsdatawarehouse. Deze is gevuld met behulp Azure Data Factory geaggregeerde gegevens uit Cosmos DB Azure SQL.
- Microsoft Power BI kunnen door uw gebruikers worden gebruikt voor het analyseren van datawarehouses.
- Web-, mobiele en andere toepassingen kunnen worden gebouwd op de opslaglaag. U kunt bijvoorbeeld API's beschikbaar maken op basis van de opslaglaaggegevens voor gebruik door derden.
- Gebruik Cosmos DB feed wijzigen om een Azure-functie uit te voeren telkens wanneer een apparaatbericht wordt toegevoegd of bijgewerkt in Cosmos DB.
- Voor sommige apparaatberichten (bijvoorbeeld een foutcode) moet mogelijk een actie worden uitgevoerd op het apparaat. Met behulp van de Azure IoT Hub Service-API kan de Azure-functie verbinding maken met Azure IoT Hub en een actie uitvoeren op het apparaat (bijvoorbeeld opnieuw opstarten) met behulp van:
- Apparaatdubbels
- Cloud-naar-apparaat-berichten
- Directe methoden
Onderdelen
Deze architectuur maakt gebruik van de volgende Azure-onderdelen:
- Azure IoT Hub fungeert als de cloudgateway en gebruikt de telemetrie van apparaten op schaal. IoT Hub ondersteunt ook bi-directionele communicatie naar apparaten, zodat acties kunnen worden verzonden vanuit de cloud of Azure IoT Edge naar het apparaat. Azure IoT Edge kunnen worden gebruikt om toepassingen aan de rand uit te voeren, zoals machine learning modellen.
- Azure Databricks met Apache Spark bevindt streaming zich in de transformatie- en analyselaag. Databricks maakt gebruik van de Maven-bibliotheek azure-eventhubs-spark_2.11:2.3.6 om verbinding te maken met het Event Hub-compatibele eindpunt van IoT Hub. Apache Spark Streaming is een schaalbaar fouttolerant streamingverwerkingssysteem dat systeemeigen ondersteuning biedt voor batch- en streamingworkloads.
- Azure Cosmos DB is een wereldwijd gedistribueerde database met meerdere modellen.
- Consistentieniveaus: Cosmos DB ondersteunt 5 consistentieniveaus (Sterk, Gebonden veroudering, Sessie, Consistent voorvoegsel, Mogelijk) zodat u een afweging kunt maken tussen de consistentie lezen versus beschikbaarheid, latentie en doorvoer.
- TTL: Azure Cosmos DB biedt de mogelijkheid om items na een bepaalde periode automatisch te verwijderen uit een container. Hierdoor kunnen Cosmos DB fungeren als een hot-gegevensopslag voor recente gegevens, waarbij gegevens op de lange termijn worden opgeslagen in koude Azure Blob-opslag.
- Wijzigingenfeed: uitvoer van een gesorteerde lijst met documenten die zijn gewijzigd in de volgorde waarin ze zijn gewijzigd. U kunt kleine reactieve Azure Functions die automatisch worden geactiveerd bij elke nieuwe gebeurtenis in de wijzigingsfeed van uw Azure Cosmos-container. Afhankelijk van de inhoud van het JSON-document kan de Azure-functie verbinding maken met Azure IoT Hub Service-API en een actie uitvoeren op het apparaat met behulp van Device Twin, Cloud to Device Messaging of Directe methoden.
- Aanvraageenheid (RU) : is de meting van de doorvoer in Azure Cosmos DB. DE's zijn rekeneenheden voor zowel prestaties als kosten. Met DE's kunt u dynamisch omhoog en omlaag schalen met behoud van beschikbaarheid, en tegelijkertijd optimaliseren voor kosten, prestaties en beschikbaarheid.
- Partitionering: de partitiesleutel bepaalt hoe gegevens in de verschillende partities worden gerouteerd door Cosmos DB en moet zinvol zijn in de context van uw specifieke scenario. De IoT-apparaat-id is doorgaans de 'natuurlijke' partitiesleutel voor IoT-toepassingen.
- Azure SQL Database is de relationele database voor transactionele en andere niet-IoT-gegevens.
- Azure Synapse Analytics is het datawarehouse en rapportageplatform, dat geaggregeerde gegevens uit Azure SQL en Cosmos DB. Voor zakelijke datawarehousing en big data analyse.
- met Azure Synapse Link voor Azure Cosmos DB kunt u bijna realtime analyses uitvoeren op operationele gegevens in Azure Cosmos DB, zonder dat dit invloed heeft op de prestaties of kosten van uw transactionele workload, met behulp van de twee analyse-engines die beschikbaar zijn in uw Azure Synapse-werkruimte: SQL Serverloze en Spark-pools.
- Power BI is een suite met hulpprogramma's voor bedrijfsanalyse om gegevens te analyseren en inzichten te delen. Power BI kan een query uitvoeren op een semantisch model dat is opgeslagen in Azure Analysis Services, of er kan rechtstreeks een query Azure Synapse uitgevoerd.
- Azure-app Services kunnen worden gebruikt voor het bouwen van webtoepassingen en mobiele toepassingen. De Azure API-app kan worden gebruikt om gegevens beschikbaar te maken voor derden, op basis van de gegevens die zijn opgeslagen in de serving-laag.
- Azure Functions kunnen worden gebruikt om nettoladingen van IoT-berichten te vertalen (bijvoorbeeld van binair naar JSON) of acties te activeren wanneer er verbinding wordt gemaakt met Cosmos DB-feed wijzigen. Azure Functions is een gebeurtenisgestuurd serverloos rekenplatform. Bouw en voer foutopsporing lokaal uit zonder extra instellingen, implementeer en werk op schaal in de cloud en integreer services met triggers en bindingen.
Alternatieven
- In de transformatie- en analyselaag kunnen we HDInsight Storm, HDInsight Spark of Azure Stream Analytics gebruiken om streaminganalyses uit te voeren en Azure Functions om nettoladingtransformaties voor berichten uit te voeren.
- In de serviceopslaglaag kunnen Azure Data Explorer Time Series-Insights worden gebruikt voor het opslaan van IoT-berichten. Beide services bieden ook uitgebreide analysemogelijkheden.
- Synapse Link is de voorkeursoplossing van Microsoft voor analyse boven op Cosmos DB gegevens.
Overwegingen
- Cosmos DB heeft een limiet van 20 GB (in het verleden was dit 10 GB) voor één logische partitie. Voor de meeste IoT-oplossingen is deze grootte voldoende. Als dat niet het probleem is, raden we het volgende aan:
- De partitiesleutel instellen op een kunstmatig veld en een samengestelde waarde toewijzen (bijvoorbeeld Apparaat-id + Huidige maand en jaar). Dit zorgt voor een zeer hoge kardinaliteit van waarden.
- Oude Cosmos DB gegevens in een koude opslag opslaan (bijvoorbeeld Azure Blob Storage) met behulp van een combinatie van TTL om automatisch gegevens uit Cosmos DB te verwijderen en de feed te wijzigen om gegevens te repliceren naar koude opslag.
Volgende stappen
Lees de volgende artikelen over IoT en Cosmos DB.