IoT usando o Cosmos DB

Cosmos DB
Databricks
Funções
Hub IoT
Power BI

Dimensione de maneira instantânea e elástica para acomodar cargas de trabalho de IoT diversas e imprevisíveis sem sacrificar a ingestão ou o desempenho da consulta.

O Azure Cosmos DB é o banco de dados multimodelo da Microsoft distribuído globalmente. Ele foi criado do zero com distribuição global e escala horizontal em sua essência. Oferece distribuição global pronta para uso em qualquer quantidade de regiões do Azure, dimensionando e replicando seus dados de forma transparente onde quer que os usuários estejam. Você pode dimensionar a taxa de transferência e o armazenamento de maneira elástica em todo o mundo e pagar apenas pela taxa de transferência e pelo armazenamento de que precisar.

Cosmos O BD é ideal para soluções de IoT. Cosmos O BD pode ingerir dados de telemetria do dispositivo a altas taxas e pode atender a consultas indexadas com baixa latência e alta disponibilidade.

Cosmos O DB é um banco de dados de vários modelos com pontos de extremidade de API compatíveis com o protocolo wire para Cassandra, MongoDB, SQL, Gremlin, Etcd e Table, juntamente com suporte integrado para arquivos Jupyter Notebook.

Arquitetura

Arquitetura

Fluxo de dados

  1. Eventos gerados de dispositivos IoT são enviados para a camada de análise e transformação por meio Hub IoT do Azure como um fluxo de mensagens. Hub IoT do Azure armazena fluxos de dados em partições por um período configurável.
  2. Azure Databricks, executar Apache Spark Streaming, pega as mensagens em tempo real do Hub IoT, processa os dados com base na lógica de negócios e envia os dados para a camada De serviço para armazenamento. O Streaming do Spark pode fornecer análise em tempo real, como calcular médias móveis, valores mínimos e máximos durante períodos de tempo.
  3. As mensagens do dispositivo são armazenadas Cosmos DB como documentos JSON. Isso é considerado o armazenamento de dados quente. Diferentes esquemas JSON que representam diferentes fornecedores de dispositivos podem ser armazenados Cosmos DB ou convertidos em um esquema JSON canônico.
  4. A camada de armazenamento consiste em:
    • Armazenamento blob do Azure – o roteamento de mensagens do Hub IoT pode salvar as mensagens brutas do dispositivo IoT no Armazenamento de Blob do Azure, permitindo que o armazenamento de blob atue como um armazenamento de dados frio de longo prazo e barato.
    • Banco de Dados SQL do Azure - Utilize o Azure SQL para armazenar seus dados transacionais e relacionais (por exemplo, dados de cobrança, funções de usuário).
    • Azure Synapse Analytics (anteriormente Azure SQL Data Warehouse) – para sua solução data warehouse. Populou-o usando Azure Data Factory dados agregados do Cosmos DB e do Azure SQL.
  5. O Microsoft Power BI pode ser usado por seus usuários para analisar dados armazenados em depósito.
  6. Aplicativos Web, móveis e outros podem ser construídos na camada de armazenamento. Por exemplo, você pode expor APIs com base nos dados da camada de armazenamento para usos de terceiros.
  7. Use Cosmos feed de alterações do banco de dados para executar uma Função do Azure sempre que uma mensagem de dispositivo for adicionada ou atualizada no Cosmos DB.
  8. Algumas mensagens do dispositivo (por exemplo, um código de falha) podem exigir que uma ação seja executada no dispositivo. Usando a API Hub IoT do Azure Serviço de Hub IoT do Azure, a Função do Azure pode se conectar ao Hub IoT do Azure e executar uma ação no dispositivo (por exemplo, reinicializar) usando:
    • Dispositivos gêmeos
    • Mensagens da nuvem para o dispositivo
    • Métodos diretos

Componentes

Essa arquitetura usa os seguintes componentes do Azure:

  • Hub IoT do Azure atua como o gateway de nuvem, ingerindo telemetria do dispositivo em escala. O Hub IoT também dá suporte à comunicação bi-direcional de volta aos dispositivos, permitindo que as ações sejam enviadas da nuvem ou Azure IoT Edge para o dispositivo. Azure IoT Edge pode ser usado para executar aplicativos na borda, como modelos de machine learning.
  • Azure Databricks com Apache Spark Streaming está localizado na camada de transformação e análise. O Databricks usa a biblioteca Maven azure-eventhubs-spark_2.11:2.3.6 para se conectar ao ponto de extremidade compatível com o Hub de Eventos do Hub IoT. Apache Spark Streaming é um sistema de processamento de streaming escalonável tolerante a falhas que dá suporte nativo a cargas de trabalho de streaming e lote.
  • O Azure Cosmos DB é um banco de dados multimodelo distribuído globalmente.
    • Níveis de consistência – Cosmos DB dá suporte a 5 níveis de consistência (Forte, Desajuste Limitada, Sessão, Prefixo Consistente, Eventual), permitindo que você faça a troca entre a consistência de leitura versus a disponibilidade, a latência e a taxa de transferência.
    • TTL – O BD Cosmos Azure fornece a capacidade de excluir itens automaticamente de um contêiner após um determinado período de tempo. Isso permite que Cosmos DB atue como um armazenamento de dados quente para dados recentes, com dados de longo prazo armazenados no armazenamento frio de Blob do Azure.
    • Feed de Alterações – saídas de uma lista classificação de documentos que foram alterados na ordem em que foram modificados. Você pode criar pequenas Azure Functions reativas que serão disparadas automaticamente a cada novo evento no feed de alterações do contêiner do Azure Cosmos. Dependendo do conteúdo do documento JSON, a Função do Azure pode se conectar à API de Serviço do Hub IoT do Azure e executar uma ação no dispositivo usando o dispositivo Gêmeo, mensagens da nuvem para o dispositivo ou métodos diretos.
    • RU (Unidade de Solicitação) – é a medida da produtividade no banco de dados Cosmos Azure. As RUs são unidades de computação para desempenho e custo. Com as RUs, você pode escalar e redução dinamicamente, mantendo a disponibilidade, otimizando o custo, o desempenho e a disponibilidade ao mesmo tempo.
    • Particionamento – a chave de partição é o que determinará como os dados são roteados nas várias partições por Cosmos DB e precisa fazer sentido no contexto de seu cenário específico. A ID do Dispositivo IoT geralmente é a chave de partição "natural" para aplicativos IoT.
  • Banco de Dados SQL do Azure é o banco de dados relacional para dados transacionais e outros dados não IoT.
  • Azure Synapse Analytics é a data warehouse e a plataforma de relatórios, que contém dados agregados do Azure SQL e Cosmos DB. Para data warehousing corporativo e análise de Big Data.
  • O link do Azure Synapse para o BD Cosmos do Azure permite executar análises quase em tempo real em dados operacionais no BD Cosmos do Azure, sem nenhum impacto de desempenho ou custo em sua carga de trabalho transacional, usando os dois mecanismos de análise disponíveis no workspace do Azure Synapse: SQL Serverless e Spark Pools.
  • Power BI é um conjunto de ferramentas de análise de negócios para analisar dados e compartilhar insights. Power BI pode consultar um modelo semântico armazenado em Azure Analysis Services ou pode consultar Azure Synapse diretamente.
  • Azure App serviços podem ser usados para criar aplicativos Web e móveis. O Aplicativo de API do Azure pode ser usado para expor dados a terceiros, com base nos dados armazenados na Camada de Serviço.
  • Azure Functions pode ser usado para converter conteúdos de mensagem de IoT (por exemplo, de binário para JSON) ou disparar ações quando conectados ao feed de alterações Cosmos banco de dados. Azure Functions é uma plataforma de computação sem servidor controlada por eventos. Crie e depure localmente sem configuração adicional, implante e opere em escala na nuvem e integre serviços usando gatilhos e associações.

Alternativas

  • Na camada de transformação e análise, poderíamos usar o HDInsight Storm,o HDInsight Spark ou Azure Stream Analytics para executar a análise de streaming e Azure Functions para executar transformações de conteúdo de mensagem.
  • Na camada de armazenamento de serviço, Azure Data Explorer e time series Insights podem ser usados para armazenar mensagens de IoT. Esses dois serviços também fornecem recursos avançados de análise.
  • Link do Synapse é a solução preferencial da Microsoft para análise sobre dados Cosmos banco de dados.

Considerações

  • Cosmos O BD tem um limite de 20 GB (no passado era de 10 GB) para uma única partição lógica. Para a maioria das soluções de IoT, esse tamanho é suficiente. Caso não seja, recomendamos:
    • Definir a chave de partição como um campo artificial e atribuir um valor composto (por exemplo, ID do dispositivo + Mês Atual e Ano). Isso garantirá uma cardinalidade extremamente alta de valores.
    • Camadas de dados Cosmos db antigos para armazenamento frio (por exemplo, blob do Azure Armazenamento) usando uma combinação de TTL para remoção automática de dados do banco de dados Cosmos e feed de alterações para replicar dados para armazenamento frio.

Próximas etapas

Revise os seguintes artigos sobre IoT e Cosmos DB.