Editar

Economia de custos por meio do HTAP com o Azure SQL

Azure Databricks
Azure Event Hubs
Azure Functions
Azure SQL Database
Azure Stream Analytics

Este artigo descreve uma solução para uma arquitetura híbrida de transação / processamento analítico (HTAP). Para processar transações, a maioria dos sistemas usa cargas de trabalho operacionais de baixa latência e alto volume. Para análises, cargas de trabalho de maior latência e menor volume são mais típicas. As arquiteturas HTAP oferecem uma solução para ambos os tipos de carga de trabalho. Usando bancos de dados na memória, o HTAP consolida tecnologias para otimizar consultas em grandes volumes de dados.

Arquitetura

Architecture diagram showing how data flows through an HTAP solution with Azure SQL Database at its center.

Transfira um ficheiro do Visio desta arquitetura.

Fluxo de dados

  1. Os Hubs de Eventos ingerem telemetria de instalações locais.
  2. O Armazenamento de Blobs captura os dados dos Hubs de Eventos e os armazena para análise futura.
  3. O Stream Analytics processa os dados. No caminho ativo da solução, o Azure Cosmos DB consulta dados dos dois meses anteriores. O Azure Cosmos DB garante tempos de resposta de milissegundos de um dígito.
  4. Se ocorrerem erros durante o processamento ou armazenamento de dados, o sistema os registrará no Armazenamento de Tabela do Azure.
  5. O Azure Functions usa a biblioteca cliente de banco de dados elástico do Banco de Dados SQL para arquivar os dados. Este processo particiona os dados para otimizar as operações de inserção. A solução forma fragmentos distribuindo horizontalmente os dados em vários bancos de dados SQL do Azure. Cada banco de dados usa um índice colunar clusterizado particionado para compactar tabelas. Os tempos de resposta neste caminho frio são geralmente inferiores a um segundo.
  6. Um cluster do Azure Databricks reprocessa os dados do Armazenamento de Blob. Especificamente, o Azure Databricks desserializa arquivos Avro e envia os dados para Hubs de Eventos para análise opcional.

Componentes

  • Os Hubs de Eventos são uma plataforma de streaming totalmente gerenciada para big data.

  • O Stream Analytics fornece processamento de fluxo sem servidor em tempo real executando consultas na nuvem e em dispositivos de borda.

  • O Azure Cosmos DB é um banco de dados multimodelo distribuído globalmente. Com o Azure Cosmos DB, suas soluções podem dimensionar elasticamente a taxa de transferência e o armazenamento em qualquer número de regiões geográficas.

  • O Armazenamento de Tabela faz parte do Armazenamento do Azure. Este serviço armazena dados NoSQL estruturados na nuvem.

  • O Banco de Dados SQL é um serviço de banco de dados relacional que faz parte da família SQL do Azure. Como um serviço totalmente gerenciado, o Banco de dados SQL lida com funções de gerenciamento de banco de dados. O Banco de dados SQL também fornece recursos automatizados alimentados por IA que otimizam o desempenho e a durabilidade. As opções de computação sem servidor e armazenamento Hyperscale dimensionam automaticamente os recursos sob demanda.

  • As ferramentas de banco de dados elástico ajudam a criar e gerenciar bancos de dados escalonados. Esse recurso do Banco de dados SQL inclui uma biblioteca de cliente que você pode usar para desenvolver aplicativos fragmentados.

  • O Armazenamento de Blobs é um serviço que faz parte do Armazenamento. O Blob Storage oferece armazenamento otimizado de objetos na nuvem para grandes quantidades de dados não estruturados.

  • O Azure Databricks é uma plataforma de análise de dados. Seus clusters Spark totalmente gerenciados processam grandes fluxos de dados de várias fontes. O Azure Databricks limpa e transforma conjuntos de dados sem estrutura. Combina os dados processados com dados estruturados de bases de dados operacionais ou armazéns de dados. O Azure Databricks também treina e implanta modelos escaláveis de aprendizado de máquina e aprendizado profundo.

  • O Power BI é uma coleção de serviços e aplicativos de análise. Você pode usar o Power BI para conectar e exibir fontes de dados não relacionadas.

Detalhes do cenário

O Banco de Dados SQL do Azure forma o núcleo dessa solução HTAP. A abordagem divide os dados em bancos de dados distribuídos horizontalmente, ou fragmentos. Outros componentes principais incluem:

  • Hubs de Eventos do Azure para ingestão de dados.
  • Azure Stream Analytics para processamento de dados.
  • Azure Functions para particionamento.
  • Armazenamento de Blobs do Azure para armazenamento de eventos.

Juntos, esses serviços fornecem uma solução HTAP que:

  • Reduz os custos fornecendo acesso rápido a informações sobre dados arquivados. As latências no caminho frio caem de horas para menos de segundos com esta solução.
  • Simplifica o arquivamento adicionando automaticamente dados ao armazenamento de longo prazo.
  • Maximiza a escalabilidade fragmentando dados e usando um banco de dados elástico.

Potenciais casos de utilização

Essa solução se aplica a organizações que precisam de acesso de baixa latência a grandes volumes de dados históricos. Exemplos incluem:

  • Varejistas on-line que acessam o histórico do cliente e informações demográficas para fornecer experiências personalizadas.
  • Fornecedores de energia que combinam dados de dispositivos com análises para gerir redes elétricas inteligentes.
  • Empresas que se envolvem na prevenção de fraudes, identificando padrões em dados históricos e em tempo real. Este cenário aplica-se aos setores financeiro e de serviços financeiros.
  • Fabricantes que dependem do processamento de eventos em tempo real para identificar problemas. Este cenário aplica-se à indústria transformadora.

Considerações

Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que podem ser usados para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.

Esta solução parte dos seguintes pressupostos:

  • Depois de arquivar os dados, não é necessário atualizá-los ou excluí-los.
  • O esquema de dados só muda minimamente ao longo do tempo.

Tenha em mente as seguintes considerações ao implementar esta solução:

Eficiência de desempenho

Eficiência de desempenho é a capacidade da sua carga de trabalho para dimensionar para satisfazer as exigências que os utilizadores lhe colocam de forma eficiente. Para obter mais informações, consulte Visão geral do pilar de eficiência de desempenho.

  • Para otimizar o desempenho:

    • Combine fragmentação com compressão de mesa.
    • Tabelas de partição por data. Cada fragmento contém dados de um período diferente.
    • Alinhe os índices com o particionamento de data.
  • Para dimensionar até mais de 50.000 mensagens por segundo, use a biblioteca cliente de banco de dados elástico de dentro do Functions para:

    • Agrupe mensagens por partição.
    • Divida as instruções de inserção em pequenos lotes.

    Essa abordagem é adequada para sistemas que usam 10 bancos de dados Standard S3 do tipo Banco de dados SQL. Para hospedar um índice colunar, você precisa de pelo menos a camada Padrão.

  • Para obter o melhor desempenho durante as operações de inserção, use parâmetros com valor de tabela com procedimentos armazenados.

  • Ao usar a instrução CREATE COLUMNSTORE INDEX, use a opção COLUMNSTORE_ARCHIVE . Esta opção fornece o mais alto nível possível de compressão. Um alto nível de compactação aumenta o tempo necessário para armazenar e recuperar dados. Mas o desempenho de E/S resultante ainda deve ser satisfatório.

Escalabilidade

  • Use fragmentos para que você possa expandir seu sistema para atender a cargas de trabalho exigentes. Ao usar bancos de dados fragmentados, você pode adicionar ou remover fragmentos para expandir ou aumentar. A ferramenta de divisão e mesclagem ajuda você a dividir e mesclar partições.
  • Aproveite a funcionalidade de dimensionamento no Functions. Crie funções que são dimensionadas com base no uso da CPU e da memória. Configure as funções para iniciar novas instâncias para acomodar cargas de trabalho inesperadas.
  • Aumente o tamanho do cluster do Azure Databricks para aumentar a escala do reprocessamento de arquivos Avro. A solução usa o Azure Databricks para reprocessar arquivos Avro que o Armazenamento de Blob capturou. Os clusters Spark no Azure Databricks podem processar todo ou parte do caminho do arquivo Avro. Ao aumentar o tamanho do cluster do Azure Databricks, você pode reprocessar todos os dados dentro de um período de tempo necessário. Para lidar com o aumento do volume do Azure Databricks, adicione instâncias de Hubs de Eventos ao namespace conforme necessário.

Resiliência

  • Todos os componentes neste cenário são gerenciados. A nível regional, oferecem resiliência integrada.
  • Para obter orientações gerais sobre a conceção de soluções resilientes, consulte Visão geral do pilar da fiabilidade.

Otimização de custos

A otimização de custos consiste em procurar formas de reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Visão geral do pilar de otimização de custos.

Para explorar o custo de execução desse cenário, use a calculadora de preços do Azure, que pré-configura todos os serviços do Azure. Ajuste os parâmetros para corresponder ao tráfego que você espera receber.

A tabela a seguir lista perfis de custo de exemplo para quantidades variáveis de mensagens de 1 kilobyte:

Tamanho Volume de mensagens Profile
Pequena Menos de 500 mensagens por segundo Perfil pequeno
Meio 1.500 mensagens por segundo Perfil médio
Grande Mais de 5.000 mensagens por segundo Perfil grande

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Autor principal:

Próximos passos