Editar

Azure Cosmos DB em cargas de trabalho de IoT

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

Este artigo descreve uma carga de trabalho de Internet das Coisas (IoT) que depende de vários recursos do serviço de banco de dados do Azure Cosmos DB. O Azure Cosmos DB é um banco de dados multimodelo criado para distribuição global e escala horizontal.

A distribuição global dimensiona e replica dados de forma transparente entre as regiões do Azure. Você pode dimensionar a taxa de transferência e o armazenamento em todo o mundo e pagar apenas pelo valor necessário. O escalonamento elástico instantâneo acomoda cargas de trabalho de IoT diversas e imprevisíveis, sem sacrificar a ingestão ou o desempenho da consulta.

O Azure Cosmos DB é ideal para cargas de trabalho de IoT porque é capaz de:

  • Ingerir dados de telemetria do dispositivo a altas taxas e retornar consultas indexadas com baixa latência e alta disponibilidade.
  • Armazenamento do formato JSON de diferentes fornecedores de dispositivos, o que proporciona flexibilidade no esquema de carga útil.
  • Usando pontos de extremidade de API compatíveis com protocolo wire para Cassandra, MongoDB, SQL, Gremlin, etcd e bancos de dados de tabela, e suporte interno para arquivos Jupyter Notebook.

Potenciais casos de utilização

  • Use os recursos internos e distribuídos globalmente do Azure Cosmos DB para habilitar leitura-gravação de baixa latência para aplicativos IoT altamente responsivos.
  • Lide com dados de uma ampla variedade de fornecedores de dispositivos e tipos de dados.

Arquitetura

Diagrama que mostra a função do Azure Cosmos DB em uma arquitetura de solução do Azure IoT.Transfira um ficheiro do Visio desta arquitetura.

Fluxo de dados

  1. Os sensores IoT e os dispositivos Edge enviam eventos como fluxos de mensagens através do Hub IoT do Azure para a camada de análise e transformação. O Hub IoT pode armazenar fluxos de dados em partições por uma duração especificada.

  2. O Azure Databricks com Apache Spark Structured Streaming recolhe mensagens do Hub IoT em tempo real, processa os dados com base na lógica empresarial e envia os dados para armazenamento. O Streaming Estruturado pode fornecer análises em tempo real, como o cálculo de médias móveis ou valores mínimos e máximos ao longo de períodos de tempo.

  3. O Azure Cosmos DB armazena mensagens de dispositivo como documentos JSON no armazenamento de dados ativo. O Azure Cosmos DB pode validar em relação a esquemas JSON de diferentes fornecedores de dispositivos.

    A camada de armazenamento também consiste em:

    • Armazenamento de Blobs do Azure. O roteamento de mensagens do Hub IoT salva mensagens brutas do dispositivo no armazenamento de Blob, fornecendo um armazenamento de dados frio barato e de longo prazo.
    • Banco de Dados SQL do Azure, para armazenar dados transacionais e relacionais, como dados de cobrança e funções de usuário.
    • Azure Synapse Analytics data warehouse, preenchido pelo Azure Data Factory, que agrega dados do Azure Cosmos DB e do Azure SQL DB.
  4. O Microsoft Power BI analisa o data warehouse.

  5. A camada de apresentação usa dados da camada de armazenamento para criar aplicativos da Web, móveis e API.

  6. Sempre que uma mensagem de dispositivo nova ou atualizada chega, o feed de alterações do Azure Cosmos DB aciona uma função do Azure Functions.

  7. A função determina se a mensagem requer uma ação do dispositivo, como uma reinicialização. Em caso afirmativo, a função se conecta ao Hub IoT usando a API do Serviço do Hub IoT e inicia a ação do dispositivo. A função pode iniciar a ação usando gêmeos de dispositivo, mensagens de nuvem para dispositivo ou métodos diretos.

Componentes

Essa carga de trabalho usa os seguintes componentes do Azure:

Azure Cosmos DB

Essa carga de trabalho de IoT destaca o Azure Cosmos DB, um banco de dados multimodelo distribuído globalmente. A carga de trabalho usa os seguintes recursos do Azure Cosmos DB:

  • Níveis de consistência. O Azure Cosmos DB suporta cinco níveis de consistência de leitura, do mais forte ao mais fraco: Forte, obsoletos limitados, sessão, prefixo consistente e eventual. Em geral, uma consistência mais forte leva a menor disponibilidade, maior latência e menor taxa de transferência. Você pode escolher um nível de consistência com base em seus requisitos de carga de trabalho.

  • Tempo de vida (TTL). O Azure Cosmos DB pode excluir itens automaticamente de um contêiner após um determinado período de tempo. Esse recurso permite que o Azure Cosmos DB atue como um armazenamento de dados ativo para dados recentes, com dados de longo prazo armazenados no armazenamento frio de Blob do Azure.

  • Alterar feed. O recurso de feed de alterações gera uma lista ordenada de documentos alterados, na ordem em que foram modificados. Cada novo evento no feed de alterações do contêiner do Azure Cosmos DB aciona automaticamente uma pequena função reativa do Azure Functions. Dependendo do conteúdo do documento JSON, a função pode se conectar à API do Serviço de Hub IoT do Azure e executar uma ação no dispositivo.

  • Unidades de solicitação (RUs). As RUs são unidades de computação que medem a taxa de transferência do Azure Cosmos DB. Você pode usar RUs para dimensionar dinamicamente o Azure Cosmos DB para cima e para baixo, mantendo a disponibilidade e otimizando para custo e desempenho.

  • Particionamento. A chave de partição determina como o Azure Cosmos DB roteia dados em partições. O ID do dispositivo IoT é a chave de partição usual para aplicativos IoT.

Outros componentes do Azure

A solução também usa os seguintes componentes do Azure:

  • O Azure IoT Edge executa aplicativos na borda, como modelos de aprendizado de máquina.

  • O Hub IoT do Azure atua como o gateway de nuvem, ingerindo telemetria de dispositivo em escala. O Hub IoT suporta comunicação de volta aos dispositivos, permitindo que ações sejam enviadas da nuvem para o IoT Edge para o dispositivo.

  • O Azure Databricks com Spark Structured Streaming é um sistema de processamento de fluxo escalável e tolerante a falhas que suporta nativamente cargas de trabalho em lote e streaming. O Azure Databricks é a camada de transformação e análise e se conecta ao ponto de extremidade compatível com o hub de eventos do Hub IoT usando a biblioteca azure-eventhubs-spark_2.11:2.3.6 Maven.

  • O Armazenamento de Blobs do Azure fornece armazenamento de dados frio escalável, barato e de longo prazo para dados não estruturados.

  • O Banco de Dados SQL do Azure é o banco de dados relacional para dados transacionais e outros dados não IoT.

  • O Azure Synapse Analytics é um armazém de dados e uma plataforma de relatórios para armazenamento de dados empresariais e análise de big data. O Synapse Analytics contém dados agregados do Banco de Dados SQL do Azure e do Azure Cosmos DB.

    O Azure Synapse Link for Azure Cosmos DB permite análises quase em tempo real nos dados operacionais do Azure Cosmos DB, sem qualquer impacto no desempenho ou no custo das cargas de trabalho transacionais. O Synapse Link usa os dois mecanismos de análise no espaço de trabalho do Azure Synapse: SQL Serverless e Spark Pools.

  • O Power BI é um conjunto de ferramentas de análise de negócios para analisar dados e compartilhar insights. O Power BI pode consultar um modelo semântico armazenado no Azure Analysis Services ou pode consultar o Synapse Analytics diretamente.

  • O Serviço de Aplicativo do Azure cria aplicativos Web e móveis. O Aplicativo de API do Azure permite que aplicativos de terceiros consumam APIs com base em dados da camada de serviço.

  • O Azure Functions é uma plataforma de computação sem servidor orientada por eventos que pode operar em escala na nuvem e integrar serviços usando gatilhos e associações. O Azure Functions pode traduzir formatos de mensagem IoT ou acionar ações quando conectado ao feed de alterações do Azure Cosmos DB.

Alternativas

  • Em vez do Azure Databricks, a camada de transformação e análise pode usar o HDInsight Storm, o HDInsight Spark ou o Azure Stream Analytics para fazer análises de streaming e usar o Azure Functions para transformar as cargas úteis de mensagens.

  • A camada de armazenamento de serviço pode usar o Azure Data Explorer para armazenar mensagens IoT. Este serviço também tem recursos de análise avançados.

Considerações

O Azure Cosmos DB tem um limite de 20 GB para uma única partição lógica. Para a maioria das soluções de IoT, esse tamanho é suficiente. Caso contrário, pode:

  • Defina a chave de partição como um campo artificial e atribua ao campo um valor composto, como ID do dispositivo + Mês e ano atuais. Esta estratégia garante cardinalidade de alto valor para um bom design de partição. Para obter mais informações, consulte Escolher uma chave de partição.

  • Com base no ciclo de vida dos dados, você pode mover dados mais antigos do Azure Cosmos DB para armazenamento frio, como o Armazenamento de Blobs do Azure. Você pode usar uma combinação de feed de alterações para replicar os dados para armazenamento a frio e TTL para excluir dados automaticamente de um contêiner após um determinado período de tempo.

Próximos passos