Editar

Processamento de dados lakehouse quase em tempo real

Azure AI Search
Azure Cosmos DB
Azure Data Lake
Azure Event Hubs
Azure Synapse Analytics

As empresas orientadas por dados precisam manter seus sistemas de back-end e análise em sincronia quase em tempo real com aplicativos voltados para o cliente. O impacto das transações, atualizações e alterações deve refletir com precisão por meio de processos de ponta a ponta, aplicativos relacionados e sistemas OLTP (processamento de transações online). A latência tolerável para alterações em aplicativos OLTP refletirem nos sistemas downstream que usam os dados pode ser de apenas alguns minutos.

Este artigo descreve uma solução completa para processamento de dados quase em tempo real para manter os dados do lakehouse sincronizados. A solução usa os Hubs de Eventos do Azure, o Azure Synapse Analytics e o Azure Data Lake Storage para processamento e análise de dados.

Apache® e Apache Spark são marcas registadas ou marcas comerciais da Apache Software Foundation nos Estados Unidos e/ou noutros países. Nenhum endosso da Apache Software Foundation está implícito no uso dessas marcas.

Arquitetura

Um diagrama que mostra o fluxo de dados para a solução de processamento de dados de ponta a ponta.

Transfira um ficheiro do Visio desta arquitetura.

Fluxo de dados

  1. A captura de dados de alteração é um pré-requisito para que os sistemas de origem ouçam as alterações. Os conectores Debezium podem se conectar a diferentes sistemas de origem e aproveitar as mudanças à medida que elas acontecem. Os conectores podem capturar alterações e produzir eventos de vários sistemas de gerenciamento de banco de dados relacional (RDBMS). A instalação de um conector Debezium requer um sistema de conexão Kafka.

  2. Os conectores extraem dados de alteração e enviam os eventos capturados para os Hubs de Eventos do Azure. Os Hubs de Eventos podem receber grandes quantidades de dados de várias fontes.

  3. Os Hubs de Eventos transmitem diretamente os dados para os pools do Azure Synapse Analytics Spark ou podem enviar os dados para uma zona de aterrissagem do Armazenamento do Azure Data Lake em formato bruto.

  4. Outras fontes de dados em lote podem usar os pipelines do Azure Synapse para copiar dados para o Armazenamento Data Lake e disponibilizá-los para processamento. Um fluxo de trabalho de extração, transformação e carregamento (ETL) de ponta a ponta pode precisar encadear diferentes etapas ou adicionar dependências entre as etapas. Os pipelines do Azure Synapse podem orquestrar dependências de fluxo de trabalho dentro da estrutura geral de processamento.

  5. Os pools do Azure Synapse Spark usam APIs de streaming estruturadas Apache Spark totalmente suportadas para processar dados na estrutura de streaming do Spark. A etapa de processamento de dados incorpora verificações de qualidade de dados e validações de regras de negócios de alto nível.

  6. O Data Lake Storage armazena os dados validados no formato aberto Delta Lake . O Delta Lake fornece semântica e transações de atomicidade, consistência, isolamento e durabilidade (ACID), manipulação de metadados escaláveis e streaming unificado e processamento de dados em lote para data lakes existentes.

    O uso de índices para aceleração de consultas aumenta o Delta com mais aprimoramentos de desempenho. Os dados da zona validada do Armazenamento Data Lake também podem ser uma fonte para análises avançadas e aprendizado de máquina.

  7. Os dados da zona validada do Armazenamento Data Lake, transformados e enriquecidos com mais regras em seu estado final processado, são carregados em um pool SQL dedicado para executar consultas analíticas em grande escala.

  8. O Power BI usa os dados expostos por meio do pool SQL dedicado para criar painéis e relatórios de nível empresarial.

  9. Você também pode usar dados brutos capturados na zona de aterrissagem do Repositório Data Lake e dados validados no formato Delta para:

    • Análise adicional ad-hoc e exploratória por meio de pools sem servidor SQL do Azure Synapse.
    • Aprendizagem automática através do Azure Machine Learning.
  10. Para algumas interfaces de baixa latência, os dados devem ser desnormalizados para latências de servidor de um dígito. Esse cenário de uso é principalmente para respostas de API. Este cenário consulta documentos em um armazenamento de dados NoSQL, como o Azure Cosmos DB, para obter respostas de milissegundos de um dígito.

  11. A estratégia de particionamento do Azure Cosmos DB pode não se prestar a todos os padrões de consulta. Se esse for o caso, você pode aumentar a solução indexando os dados que as APIs precisam acessar com a Pesquisa Cognitiva do Azure. O Azure Cosmos DB e a Pesquisa Cognitiva podem preencher a maioria dos cenários que exigem respostas de consulta de baixa latência.

Componentes

Esta solução utiliza os seguintes componentes do Azure:

  • Os Hubs de Eventos são um serviço de ingestão gerenciado e distribuído que pode ser dimensionado para ingerir grandes quantidades de dados. Com o mecanismo de subscritor-editor dos Hubs de Eventos, diferentes aplicações podem enviar mensagens para tópicos nos Hubs de Eventos e os consumidores a jusante podem ligar-se e processar mensagens. O recurso Captura de Hubs de Eventos pode gravar mensagens no Armazenamento Data Lake no formato AVRO à medida que chegam. Essa capacidade permite fácil processamento em microlotes e cenários de retenção de longo prazo. Os Hubs de Eventos também oferecem uma API compatível com Kafka e suportam o registro de esquema.

  • O Armazenamento Data Lake forma o subsistema de armazenamento que armazena todos os dados em formatos brutos e validados. O Armazenamento Data Lake pode lidar com transações em escala e suporta diferentes formatos e tamanhos de arquivo. Os namespaces hierárquicos ajudam a organizar os dados em uma estrutura de pastas familiar e suportam permissões de Interface de Sistema Operacional Portátil para UniX (POSIX). O driver do Sistema de Arquivos de Blob do Azure (ABFS) oferece uma API compatível com Hadoop.

  • O Azure Synapse Analytics é um serviço de análise ilimitado que reúne integração de dados, armazenamento de dados corporativos e análise de big data. Esta solução utiliza as seguintes funcionalidades do ecossistema do Azure Synapse Analytics:

    • Os pools do Azure Synapse Spark oferecem um tempo de execução do Spark sob demanda que adiciona aprimoramentos de desempenho internos ao Spark de código aberto. Os clientes podem definir configurações flexíveis de dimensionamento automático, enviar trabalhos remotamente através do endpoint Apache Livy e usar a interface do notebook Synapse Studio para experiências interativas.

    • Os pools sem servidor SQL do Azure Synapse fornecem uma interface para consultar dados lakehouse usando uma sintaxe T-SQL familiar. Não há infraestrutura para configurar, e a implantação do espaço de trabalho do Azure Synapse cria automaticamente o ponto de extremidade. Os pools SQL sem servidor do Azure Synapse permitem a descoberta básica e a exploração de dados no local e são uma boa opção para análise de consulta ad-hoc do usuário.

    • Os pools SQL dedicados do Azure Synapse armazenam dados em tabelas relacionais com armazenamento colunar. Pools SQL dedicados usam uma arquitetura de expansão para distribuir o processamento de dados entre vários nós. As consultas PolyBase trazem os dados para tabelas de pool SQL. As tabelas podem se conectar ao Power BI para análise e emissão de relatórios.

  • O Power BI fornece uma interface visual para criar e acessar relatórios e painéis. O Power BI Desktop pode se conectar a várias fontes de dados, combinar as fontes em um modelo de dados e criar relatórios ou painéis. Com o Power BI, você pode transformar dados com base em requisitos de negócios e compartilhar visuais e relatórios com outras pessoas por meio do serviço do Power BI.

  • O Azure Cosmos DB é um banco de dados NoSQL gerenciado e multimodal que dá suporte a APIs abertas, como MongoDB e Cassandra. Esta solução utiliza o Azure Cosmos DB para aplicações que requerem tempos de resposta de milissegundos de um dígito e alta disponibilidade. O Azure Cosmos DB oferece gravações em várias regiões em todas as regiões do Azure. Você pode usar o Azure Synapse Link for Azure Cosmos DB para derivar insights e executar análises sobre dados em tempo real.

  • A Pesquisa Cognitiva do Azure é um serviço de pesquisa na nuvem que pode indexar os dados de que as suas aplicações e APIs necessitam. A Pesquisa Cognitiva tem recursos opcionais de enriquecimento de IA que ajudam na extração de texto e inferem texto de arquivos que não são de texto. A Pesquisa Cognitiva integra-se com serviços como o Azure Data Lake Storage e o Azure Cosmos DB para aceder e indexar facilmente dados. Você pode consultar os dados indexados usando uma API REST ou o SDK do .NET. Para obter dados de dois índices separados, você pode combiná-los em um único índice ou usar tipos de dados complexos.

Detalhes do cenário

O fluxo de trabalho de ponta a ponta para processar alterações quase em tempo real exige:

  • Uma tecnologia de captura de dados de mudança (CDC). Os aplicativos OLTP podem ter diferentes armazenamentos de dados back-end, como SQL Server, MySQL e Oracle. O primeiro passo é ouvir as mudanças à medida que elas acontecem e propagá-las para a frente.
  • Um buffer de ingestão para publicar os eventos de alteração em escala. Este serviço deve ter a capacidade de lidar com grandes quantidades de dados à medida que as mensagens chegam. Os assinantes individuais podem se conectar a este sistema e processar os dados.
  • Armazenamento distribuído e escalável para dados no estado em que se encontram em formato bruto.
  • Um sistema de processamento de fluxo distribuído e eficiente que permite aos usuários reiniciar e gerenciar o estado.
  • Um sistema de análise que é executado em escala para poder decisões de negócios.
  • Uma interface de análise self-service.
  • Para respostas de API de baixa latência, um banco de dados NoSQL para armazenar a representação desnormalizada dos dados.
  • Para alguns casos, um sistema para indexar dados, atualizar o índice em intervalos regulares e disponibilizar os dados mais recentes para consumo a jusante.

Todas as tecnologias anteriores devem usar construções de segurança relevantes para segurança de perímetro, autenticação, autorização e criptografia de dados.

Potenciais casos de utilização

Esta solução é adequada para:

  • Setores que precisam propagar mudanças do OLTP para o processamento de análise on-line (OLAP).
  • Aplicativos que exigem transformação ou enriquecimento de dados.

O cenário de processamento de dados em tempo real é especialmente importante para os setores de serviços financeiros. Por exemplo, se um cliente de seguro, cartão de crédito ou banco fizer um pagamento e, em seguida, entrar em contato imediatamente com o atendimento ao cliente, o agente de suporte ao cliente precisa ter as informações mais recentes.

Cenários semelhantes se aplicam aos setores de varejo, comércio e saúde. Viabilizar esses cenários agiliza as operações, levando a uma maior produtividade organizacional e aumento da satisfação do cliente.

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.

Fiabilidade

A confiabilidade garante que seu aplicativo possa atender aos compromissos que você assume com seus clientes. Para obter mais informações, consulte Visão geral do pilar de confiabilidade.

  • Os Hubs de Eventos oferecem retenção de dados por 90 dias nos níveis premium e dedicado. Para cenários de failover, você pode configurar um namespace secundário na região emparelhada e ativá-lo durante o failover.

  • Os trabalhos do pool do Azure Synapse Spark são reciclados a cada sete dias à medida que os nós são removidos para manutenção. Considere essa atividade ao trabalhar nos SLAs (Service Level Agreements, contratos de nível de serviço) vinculados ao sistema. Essa limitação não é um problema para muitos cenários em que o RTO (Recovery Time Objetive, objetivo de tempo de recuperação) é de cerca de 15 minutos.

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.

  • Você pode selecionar entre diferentes camadas de Hubs de Eventos com base nas características da carga de trabalho. Os Hubs de Eventos faturam o armazenamento de captura separadamente, com base na quantidade de dados armazenados no Armazenamento Data Lake.

  • Considere o gerenciamento do ciclo de vida do objeto por meio de camadas no Armazenamento Azure Data Lake. À medida que os dados envelhecem, você pode mover dados de um nível quente, onde precisa acessar dados recentes para análise, para um nível de armazenamento frio com preço muito mais baixo. O nível de armazenamento refrigerado é uma opção econômica para retenção a longo prazo.

  • Você pode pausar o pool SQL dedicado quando não estiver usando-o em seus ambientes de desenvolvimento ou teste. Você pode agendar um script para pausar o pool conforme necessário ou pode pausar o pool manualmente através do portal.

  • O Azure Cosmos DB oferece diferentes modelos de provisionamento, como sem servidor, taxa de transferência provisionada manual e dimensionamento automático. Considere o uso do provisionamento sem servidor para suas cargas de trabalho de desenvolvimento e teste. Você também pode usar o dimensionamento automático, onde pode definir o máximo de unidades de solicitação por segundo (RU/s) no contêiner. A taxa de transferência no contêiner escala automaticamente entre 10% do máximo de RU/s como um limite inferior e o máximo configurado de RU/s.

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.

  • Você pode dimensionar Hubs de Eventos por meio de particionamento. Considere particionar seus dados para preservar a ordem dos eventos por meio de um log de confirmação. O particionamento permite criar vários logs paralelos maximizando a capacidade de taxa de transferência disponível.

  • Você pode configurar pools do Azure Synapse Spark com SKUs de máquina virtual (VM) pequenas, médias ou grandes, com base na carga de trabalho. Você também pode configurar o dimensionamento automático nos pools do Azure Synapse Spark para levar em conta cargas de trabalho espinhosas. Se você precisar de mais recursos de computação, os clusters serão dimensionados automaticamente para atender à demanda e reduzidos após a conclusão do processamento.

  • Use as práticas recomendadas para criar tabelas no pool SQL dedicado. Aplicam-se limites de desempenho e escalabilidade associados, com base na camada em que o pool SQL está sendo executado.

  • O Azure Cosmos DB usa partições para dimensionar contêineres, com base em uma chave de partição. Todos os dados baseados em uma chave de partição formam uma partição lógica. Certifique-se de escolher a estratégia de particionamento correta com base nos requisitos de carga de trabalho. Você também pode usar índices para recuperação de dados mais rápida.

Contribuidores

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

Autor principal:

Outros contribuidores:

Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.

Próximos passos