Azure Cosmos DB dans des charges de travail IoT

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

Cet article décrit une charge de travail de l’internet des objets (IoT) qui repose sur plusieurs fonctionnalités du service de base de données Azure Cosmos DB. Azure Cosmos DB est une base de données multi-modèle conçue pour une distribution mondiale et une mise à l’échelle horizontale.

La distribution globale met à l’échelle et réplique en toute transparence des données entre les régions Azure. Vous pouvez faire évoluer le débit et le stockage au niveau mondiale et ne payer que pour ce dont vous avez besoin. La mise à l’échelle élastique instantanée peut prendre en charge diverses charges de travail IoT imprévisibles sans nuire aux performances d’ingestion ou de requête.

Azure Cosmos DB est idéal pour les charges de travail IoT, car il peut :

  • Ingérer des données de télémétrie d’appareil à des débits élevés et retourner des requêtes indexées avec une faible latence et une haute disponibilité.
  • Stocker le format JSON de différents types d’appareils, ce qui offre une certaine flexibilité dans le schéma de la charge utile.
  • Utiliser des points de terminaison d’API compatibles avec les protocoles filaires pour Cassandra, MongoDB, SQL, Gremlin, ETCD et tables de bases de données, ainsi qu’une prise en charge intégrée des fichiers Jupyter Notebook.

Cas d’usage potentiels

  • Utilisez les fonctionnalités d’Azure Cosmos DB intégrées et distribuées dans le monde entier pour permettre la lecture/écriture à faible latence pour les applications IoT hautement réactives.
  • Gérez les données à partir d’un large éventail de fournisseurs d’appareils et de types de données.

Architecture

Diagramme montrant le rôle d’Azure Cosmos DB dans une architecture de solution Azure IoT.Téléchargez un fichier Visio de cette architecture.

Dataflow

  1. Les capteurs IoT et les appareils de périphérie envoient les événements sous forme de flux de messages via Azure IoT Hub à la couche d’analyse et de transformation. IoT Hub peut stocker des flux de données dans des partitions pendant une durée spécifiée.

  2. Azure Databricks avec Apache Spark Streaming récupère le message en temps réel à partir d’IoT Hub, traite les données en fonction de la logique métier et envoie les données au stockage. Le flux structuré peut fournir une analyse en temps réel, par exemple le calcul des moyennes mobiles et les valeurs minimales et maximales sur des périodes données.

  3. Azure Cosmos DB stocke les messages de l’appareil en tant que documents JSON dans le magasin de données chaudes. Azure Cosmos DB peut effectuer des validations par rapport à des schémas JSON provenant de différents fournisseurs d’appareils.

    La couche de stockage se compose également des éléments suivants :

    • Stockage Blob Azure. Le routage de message IoT Hub enregistre les messages bruts des appareils dans le stockage d’objet Blob, pour un magasin de données à long terme peu coûteux.
    • Azure SQL Database, pour stocker des données transactionnelles et relationnelles, telles que des données de facturation et des rôles d’utilisateur.
    • L’entrepôt de données Azure Synapse Analytics, complété par Azure Data Factory, qui agrège les données d’Azure Cosmos DB et Azure SQL DB.
  4. Microsoft Power BI analyse l’entrepôt de données.

  5. La couche de présentation utilise les données de la couche de stockage pour créer des applications web, mobiles et API.

  6. Chaque fois qu’un message d’appareil nouveau ou mis à jour arrive, le flux de modification Azure Cosmos DB déclenche une fonction Azure Functions.

  7. Cette fonction détermine si le message requiert une action de l’appareil, par exemple un redémarrage. Si c’est le cas, la fonction se connecte à IoT Hub à l’aide de l’API de service IoT Hub et lance l’action de l’appareil. La fonction peut lancer l’action à l’aide des représentations d’appareil, du Cloud aux messages de l’appareil ou des méthodes directes.

Components

Cette charge de travail utilise les composants Azure suivants :

Azure Cosmos DB

Cette charge de travail IoT met en avant Azure Cosmos DB, une base de données multimodèle distribuée à l’échelle mondiale. La charge de travail utilise les fonctionnalités Azure Cosmos DB suivantes :

  • Niveaux de cohérence. Azure Cosmos DB prend en charge cinq niveaux de cohérence de lecture, du plus élevé au plus faible : fort, obsolescence limitée, session, préfixe cohérent et éventuel. En général, une cohérence plus forte permet de réduire la disponibilité, une latence plus longue et un débit inférieur. Vous pouvez choisir un niveau de cohérence en fonction des exigences de votre charge de travail.

  • Durée de vie (TTL). Azure Cosmos DB permet de supprimer automatiquement les éléments d’un conteneur après une période déterminée. Cette capacité à Azure Cosmos DB d’agir en tant que magasin de données chaudes pour les données récentes, les données à long terme étant stockées dans le stockage froid d’objets blob Azure.

  • Flux de modification. Le flux de modification génère une liste triée de documents qui ont été modifiés, dans l’ordre dans lequel ils ont été modifiés. Chaque nouvel événement dans le flux de modification du conteneur Azure Cosmos DB déclenche automatiquement une petite fonction réactive Azure Functions. Selon le contenu du document JSON, la fonction peut se connecter à l’API de service Azure IoT Hub et exécuter une action sur l’appareil.

  • Unités de requête (RU). Les unités de requête sont des unités de calcul mesurant le débit d’Azure Cosmos DB. Vous pouvez utiliser les unités de requête pour mettre à Azure Cosmos DB de manière dynamique, tout en maintenant la disponibilité et l’optimisation des coûts et des performances.

  • Partitionnement. La clé de partition détermine la façon dont Azure Cosmos DB achemine les données dans les partitions. L’ID d’appareil IoT est la clé de partition normale des applications IoT.

Autres composants Azure

Cette solution utilise également les composants Azure suivants :

  • Azure IoT Edge exécute des applications à la périphérie, telles que des modèles Machine Learning.

  • Azure IoT Hub agit en tant que passerelle cloud et ingère la télémétrie des appareils à grande échelle. IoT Hub prend en charge la communication vers les appareils, ce qui permet d’envoyer des actions du cloud ou d’IoT Edge vers l’appareil.

  • Azure Databricks avec Apache Spark Streaming est un système de traitement de streaming scalable et à tolérance de pannes qui prend en charge en mode natif les charges de travail par lot et en streaming. Azure Databricks est la couche de transformation et d’analyse, et se connecte au point de terminaison compatible avec le Event Hub de IoT Hub à l’aide de la bibliothèque Azure-eventhubs-spark_2.11:2.3.6 Maven.

  • Stockage Blob Azure fournit un stockage de données à froid évolutif, économique et à long terme pour les données non structurées.

  • Azure SQL Database est la base de données relationnelle pour les données transactionnelles et autres données non IoT.

  • Azure Synapse Analytics est un entrepôt de données et une plateforme de création de rapports pour l’entreposage de données d’entreprise et l’analyse des Big Data. Synapse Analytics contient les données agrégées à partir d’Azure SQL Database et Azure Cosmos DB.

    Azure Synapse Link pour Azure Cosmos DB permet des analyses en temps quasi-réel sur Azure Cosmos DB données opérationnelles, sans aucun impact sur les performances ou le coût des charges de travail transactionnelles. Synapse Link utilise les deux moteurs d’analyse de l’espace de travail Azure Synapse : SQL serverless et Spark Pools.

  • Power BI est une suite d’outils d’analyse métier permettant d’analyser des données et de partager des insights. Power BI peut interroger un modèle sémantique stocké dans Azure Analysis Services ou interroger directement Synapse Analytics.

  • Azure App Service crée des applications web et mobiles. L’application API Azure permet aux applications tierces de consommer des API basées sur les données de la couche service.

  • Azure Functions est une plateforme de calcul serverless pilotée par les événements qui peut fonctionner à grande échelle dans le Cloud et intégrer des services à l’aide de déclencheurs et de liaisons. Azure Functions peut traduire les formats de messages IoT ou déclencher des actions lors de la connexion au flux de modification Azure Cosmos DB.

Autres solutions

  • À la place d’Azure Databricks, la couche de transformation et d’analyse pourrait utiliser HDInsight Storm, HDInsight Spark ou Azure Stream Analytics pour effectuer une analyse en streaming, et Azure Functions pour effectuer la transformation des charges utiles des messages.

  • La couche de stockage du service peut utiliser Azure Data Explorer pour le stockage des messages IOT. Ce service dispose également de fonctionnalités d’analyse enrichies.

Considérations

Azure Cosmos DB a une limite de 20 Go par partition logique. Pour la plupart des solutions IoT, cette taille est suffisante. Sinon, vous pouvez :

  • Définir la clé de partition sur un champ artificiel et attribuer une valeur composite à ce champ, par exemple ID d’appareil + mois et année actuels. Cette stratégie garantit une cardinalité élevée pour une bonne conception de partition. Pour plus d’informations, consultez Choisir une clé de partition.

  • En fonction du cycle de vie des données, vous pouvez déplacer les anciennes données de Azure Cosmos DB vers le stockage à froid, par exemple le Stockage Blob Azure. Vous pouvez utiliser une combinaison de flux de modification pour répliquer les données vers le stockage à froid et appliquer la durée de vie pour supprimer automatiquement les données des conteneurs après une certaine période.

Étapes suivantes