Azure Cosmos DB nei carichi di lavoro IoT

Azure Cosmos DB
Azure Databricks
Funzioni di Azure
Hub IoT Azure
Power BI

Questo articolo descrive un carico di lavoro Internet delle cose (IoT) che si basa su diverse funzionalità del servizio di database di Azure Cosmos DB. Azure Cosmos DB è un database multimodelli creato per la distribuzione globale e la scalabilità orizzontale.

La distribuzione globale ridimensiona e replica i dati in modo trasparente tra aree di Azure. È possibile ridimensionare la velocità effettiva e l'archiviazione in tutto il mondo e pagare solo l'importo necessario. La scalabilità elastica immediata supporta carichi di lavoro IoT diversi e imprevedibili, senza sacrificare le prestazioni di inserimento o di query.

Azure Cosmos DB è ideale per i carichi di lavoro IoT perché è in grado di:

  • Inserimento di dati di telemetria dei dispositivi a velocità elevate e restituzione di query indicizzate con bassa latenza e disponibilità elevata.
  • Archiviazione del formato JSON da fornitori di dispositivi diversi, che offre flessibilità nello schema del payload.
  • Usando endpoint API compatibili con il protocollo wire per Cassandra, MongoDB, SQL, Gremlin, etcd e database di tabelle e il supporto predefinito per i file di Jupyter Notebook.

Potenziali casi d'uso

  • Usare le funzionalità predefinite e distribuite a livello globale di Azure Cosmos DB per abilitare la lettura/scrittura a bassa latenza per applicazioni IoT altamente reattive.
  • Gestire i dati da un'ampia gamma di fornitori di dispositivi e tipi di dati.

Architettura

Diagramma che mostra il ruolo di Azure Cosmos DB in un'architettura della soluzione Azure IoT.Scaricare un file di Visio di questa architettura.

Flusso di dati

  1. I sensori IoT e i dispositivi Edge inviano eventi come flussi di messaggi attraverso hub IoT di Azure al livello di analisi e trasformazione. hub IoT possibile archiviare i flussi di dati in partizioni per una durata specificata.

  2. Azure Databricks con Apache Spark Structured Streaming preleva i messaggi da hub IoT in tempo reale, elabora i dati in base alla logica di business e invia i dati all'archiviazione. Structured Streaming può fornire analisi in tempo reale, ad esempio il calcolo delle medie mobili o dei valori minimi e massimi nei periodi di tempo.

  3. Azure Cosmos DB archivia i messaggi del dispositivo come documenti JSON nell'archivio dati ad accesso frequente. Azure Cosmos DB può convalidare gli schemi JSON di fornitori di dispositivi diversi.

    Il livello di archiviazione è costituito anche da:

    • Archiviazione BLOB di Azure. hub IoT routing dei messaggi salva i messaggi non elaborati del dispositivo nell'archivio BLOB, fornendo un archivio dati ad accesso sporadico a lungo termine economico.
    • database SQL di Azure, per archiviare dati transazionali e relazionali, ad esempio dati di fatturazione e ruoli utente.
    • Data warehouse di Azure Synapse Analytics, popolato da Azure Data Factory, che aggrega i dati da Azure Cosmos DB e dal database SQL di Azure.
  4. Microsoft Power BI analizza il data warehouse.

  5. Il livello presentazione usa i dati del livello di archiviazione per creare app Web, per dispositivi mobili e per le API.

  6. Ogni volta che arriva un messaggio del dispositivo nuovo o aggiornato, il feed di modifiche di Azure Cosmos DB attiva una funzione di Funzioni di Azure.

  7. La funzione determina se il messaggio richiede un'azione del dispositivo, ad esempio un riavvio. In tal caso, la funzione si connette a hub IoT usando l'API del servizio hub IoT e avvia l'azione del dispositivo. La funzione può avviare l'azione usando dispositivi gemelli, messaggi da cloud a dispositivo o metodi diretti.

Componenti

Questo carico di lavoro usa i componenti di Azure seguenti:

Azure Cosmos DB

Questo carico di lavoro IoT mette in evidenza Azure Cosmos DB, un database multimodello distribuito a livello globale. Il carico di lavoro usa le funzionalità di Azure Cosmos DB seguenti:

  • Livelli di coerenza. Azure Cosmos DB supporta cinque livelli di coerenza in lettura, dal più sicuro al più debole: assoluta, decadimento ristretto, sessione, prefisso coerente e finale. In generale, la coerenza più forte comporta una maggiore disponibilità, una latenza più lunga e una velocità effettiva inferiore. È possibile scegliere un livello di coerenza in base ai requisiti del carico di lavoro.

  • Durata (TTL). Azure Cosmos DB può eliminare automaticamente gli elementi da un contenitore dopo un determinato periodo di tempo. Questa funzionalità consente ad Azure Cosmos DB di fungere da archivio dati ad accesso frequente per i dati recenti, con dati a lungo termine archiviati nell'archiviazione a freddo BLOB di Azure.

  • Feed di modifiche. La funzionalità feed di modifiche restituisce un elenco ordinato di documenti modificati, nell'ordine in cui sono stati modificati. Ogni nuovo evento nel feed di modifiche del contenitore di Azure Cosmos DB attiva automaticamente una piccola funzione di Funzioni di Azure reattiva. A seconda del contenuto del documento JSON, la funzione può connettersi all'API del servizio hub IoT di Azure ed eseguire un'azione nel dispositivo.

  • Unità richiesta (UR). Le UR sono unità di calcolo che misurano la velocità effettiva di Azure Cosmos DB. È possibile usare le UR per ridimensionare in modo dinamico Azure Cosmos DB, mantenendo al contempo la disponibilità e ottimizzando i costi e le prestazioni.

  • Partizionamento. La chiave di partizione determina il modo in cui Azure Cosmos DB instrada i dati nelle partizioni. L'ID dispositivo IoT è la normale chiave di partizione per le applicazioni IoT.

Altri componenti di Azure

La soluzione usa anche i componenti di Azure seguenti:

  • Azure IoT Edge esegue applicazioni perimetrali, ad esempio modelli di Machine Learning.

  • hub IoT di Azure funge da gateway cloud, l'inserimento dei dati di telemetria del dispositivo su larga scala. hub IoT supporta la comunicazione con i dispositivi, consentendo l'invio di azioni dal cloud a IoT Edge al dispositivo.

  • Azure Databricks con Spark Structured Streaming è un sistema di elaborazione di flussi scalabile e a tolleranza di errore che supporta in modo nativo carichi di lavoro batch e di streaming. Azure Databricks è il livello di trasformazione e analisi e si connette all'endpoint compatibile con l'hub eventi hub IoT usando la libreria Maven azure-eventhubs-spark_2.11:2.3.6.

  • Archiviazione BLOB di Azure offre un'archiviazione dati a freddo scalabile, economica e a lungo termine per i dati non strutturati.

  • database SQL di Azure è il database relazionale per i dati transazionali e altri dati non IoT.

  • Azure Synapse Analytics è un data warehouse e una piattaforma di creazione di report per data warehousing aziendale e analisi di Big Data. Synapse Analytics contiene dati aggregati da database SQL di Azure e Azure Cosmos DB.

    Azure Collegamento a Synapse per Azure Cosmos DB consente l'analisi quasi in tempo reale sui dati operativi di Azure Cosmos DB, senza alcun impatto sulle prestazioni o sui costi sui carichi di lavoro transazionali. Collegamento a Synapse usa i due motori di analisi nell'area di lavoro di Azure Synapse: Pool di SQL Serverless e Spark.

  • Power BI è una suite di strumenti di analisi aziendale per l'analisi dei dati e la condivisione di informazioni dettagliate. Power BI può eseguire query su un modello semantico archiviato in Azure Analysis Services o eseguire direttamente query su Synapse Analytics.

  • app Azure Service compila applicazioni Web e per dispositivi mobili. L'app per le API di Azure consente alle app di terze parti di usare le API in base ai dati del livello di gestione.

  • Funzioni di Azure è una piattaforma di calcolo serverless basata su eventi che può operare su larga scala nel cloud e integrare i servizi usando trigger e associazioni. Funzioni di Azure possibile convertire i formati di messaggi IoT o attivare azioni quando si è connessi al feed di modifiche di Azure Cosmos DB.

Alternative

  • Invece di Azure Databricks, il livello di trasformazione e analisi può usare HDInsight Storm, HDInsight Spark o Analisi di flusso di Azure per eseguire analisi di streaming e usare Funzioni di Azure per trasformare i payload dei messaggi.

  • Il livello di archiviazione del servizio può usare azure Esplora dati per l'archiviazione dei messaggi IoT. Questo servizio offre anche funzionalità di analisi avanzate.

Considerazioni

Azure Cosmos DB ha un limite di 20 GB per una singola partizione logica. Per la maggior parte delle soluzioni IoT, questa dimensione è sufficiente. In caso contrario, è possibile:

  • Impostare la chiave di partizione su un campo artificiale e assegnare al campo un valore composito, ad esempio ID dispositivo + Mese corrente e Anno. Questa strategia garantisce una cardinalità di valore elevato per una progettazione di partizione ottimale. Per altre informazioni, vedere Scegliere una chiave di partizione.

  • In base al ciclo di vita dei dati, è possibile spostare i dati di Azure Cosmos DB meno recenti nell'archiviazione ad accesso sporadico, ad esempio Archiviazione BLOB di Azure. È possibile usare una combinazione di feed di modifiche per replicare i dati nell'archiviazione ad accesso sporadico e TTL per eliminare automaticamente i dati da un contenitore dopo un determinato periodo di tempo.

Passaggi successivi