Este artigo apresenta uma solução para obter insights dos dados operacionais do MongoDB Atlas. A solução conecta o MongoDB Atlas ao Azure Synapse Analytics. A conexão possibilita a transferência de dados em lotes e em tempo real. A abordagem em tempo real mantém os pools SQL dedicados do Azure Synapse Analytics sincronizados com as alterações na fonte de dados do MongoDB Atlas.
Apache®, Apache Spark e o logotipo flame são marcas registradas ou marcas comerciais da Apache Software Foundation nos Estados Unidos e/ou em outros países. Nenhum endosso da Apache Software Foundation está implícito no uso dessas marcas.
O logotipo MongoDB Atlas é uma marca comercial da MongoDB. O uso desta marca não implica qualquer endosso.
Arquitetura
O diagrama a seguir mostra como sincronizar dados do MongoDB Atlas com o Azure Synapse Analytics em tempo real.
Baixe um arquivo do PowerPoint de todos os diagramas neste artigo.
Fluxo de dados
A solução apresenta duas opções para acionar os pipelines que capturam as alterações em tempo real no armazenamento de dados operacionais (ODS) do MongoDB Atlas e sincronizam os dados. As etapas a seguir descrevem ambas as opções.
Ocorrem alterações nos dados operacionais e transacionais armazenados no MongoDB Atlas. As APIs de fluxo de alterações do Mongo Atlas notificam os aplicativos inscritos sobre as alterações em tempo real.
Um aplicativo Web personalizado do Serviço de Aplicativo do Azure assina o fluxo de alterações do MongoDB. Há duas versões do aplicativo Web, Grade de Eventos e armazenamento, uma para cada versão da solução. Ambas as versões do aplicativo escutam as alterações causadas por uma operação de inserção, atualização ou exclusão no Atlas. Quando os aplicativos detetam uma alteração, eles gravam o documento alterado como um blob no Armazenamento do Azure Data Lake, que é integrado ao Azure Synapse Analytics. A versão da Grade de Eventos do aplicativo também cria um novo evento na Grade de Eventos do Azure quando deteta uma alteração no Atlas.
Ambas as versões da solução acionam o pipeline do Azure Synapse Analytics:
- Na versão Grade de Eventos, um gatilho personalizado baseado em eventos é configurado no Azure Synapse Analytics. Esse gatilho se inscreve no tópico Grade de Eventos no qual o aplicativo Web publica. O novo evento nesse tópico ativa o gatilho do Azure Synapse Analytics, que faz com que o pipeline de dados do Azure Synapse Analytics seja executado.
- Na versão de armazenamento, um gatilho baseado em armazenamento é configurado no Azure Synapse Analytics. Quando o novo blob é detetado na pasta integrada Armazenamento Data Lake, esse gatilho é ativado, o que faz com que o pipeline de dados do Azure Synapse Analytics seja executado.
Em uma atividade de cópia, o pipeline do Azure Synapse Analytics copia o documento alterado completo do blob de Armazenamento Data Lake para o pool SQL dedicado. Esta operação é configurada para fazer um upsert em uma coluna selecionada. Se a coluna existir no pool SQL dedicado, o upsert atualizará a coluna. Se a coluna não existir, o upsert insere a coluna.
O pool SQL dedicado é o recurso de armazenamento de dados corporativos que hospeda a tabela que o pipeline de dados atualiza. A atividade de cópia de dados do pipeline mantém essa tabela sincronizada com sua coleção Atlas correspondente.
Os relatórios e visualizações do Power BI exibem análises atuais e quase em tempo real. Os dados também alimentam aplicações a jusante. O MongoDB Atlas funciona como um coletor usando um conector de coletor de pipeline de dados do Azure Synapse Analytics. Em seguida, o Atlas fornece aplicativos personalizados com os dados em tempo real.
Componentes
O MongoDB Atlas é uma oferta de banco de dados como serviço do MongoDB. Esta plataforma de dados de aplicativos multicloud oferece processamento transacional, pesquisa baseada em relevância, análise em tempo real e sincronização de dados móveis para nuvem. O MongoDB também oferece uma solução local, o MongoDB Enterprise Advanced.
Os fluxos de alterações no MongoDB Atlas dão aos aplicativos acesso a alterações de dados em tempo real para que os aplicativos possam reagir imediatamente a essas alterações. Os fluxos de alteração fornecem uma maneira para os aplicativos receberem notificações sobre alterações em uma determinada coleção, banco de dados ou cluster de implantação inteiro.
O Serviço de Aplicativo e seus recursos de Aplicativos Web, Aplicativos Móveis e Aplicativos de API fornecem uma estrutura para criar, implantar e dimensionar aplicativos Web, aplicativos móveis e APIs REST. Esta solução utiliza aplicações Web que são programadas em ASP.NET. O código está disponível no GitHub:
O Azure Synapse Analytics é o serviço principal que esta solução utiliza para ingestão, processamento e análise de dados.
O Armazenamento Data Lake fornece recursos para armazenar e processar dados. Como um data lake construído sobre o Armazenamento de Blobs, o Armazenamento Data Lake fornece uma solução escalável para gerenciar grandes volumes de dados de várias fontes heterogêneas.
Os pipelines do Azure Synapse Analytics são usados para executar operações de extração, transformação e carregamento (ETL) em dados. O Azure Data Factory fornece um serviço semelhante, mas você pode criar pipelines do Azure Synapse Analytics no Synapse Studio. Você pode usar várias atividades dentro do mesmo pipeline. Você também pode criar pontos de extremidade de dependência para conectar uma atividade com outra atividade no pipeline.
Os fluxos de dados de mapeamento são transformações de dados projetadas visualmente no Azure Synapse Analytics. Os fluxos de dados fornecem uma maneira para os engenheiros de dados desenvolverem lógica de transformação de dados sem escrever código. Você pode executar os fluxos de dados resultantes como atividades dentro dos pipelines do Azure Synapse Analytics que usam clusters Apache Spark escalonados. Você pode colocar atividades de fluxo de dados em operação usando os recursos existentes de agendamento, controle, fluxo e monitoramento do Azure Synapse Analytics.
O pool SQL dedicado fornece recursos de armazenamento de dados para dados depois que os dados são processados e normalizados. Esse recurso do Azure Synapse Analytics era anteriormente conhecido como SQL Data Warehouse. Pools SQL dedicados disponibilizam os dados refinados para seus usuários finais e aplicativos.
Os gatilhos do Azure Synapse Analytics fornecem uma maneira automatizada de executar pipelines. Você pode agendar esses gatilhos. Você também pode configurar gatilhos baseados em eventos, como gatilhos de eventos de armazenamento e gatilhos de eventos personalizados. A solução usa ambos os tipos de gatilhos baseados em eventos.
A Grade de Eventos é um agente de eventos altamente escalável e sem servidor. Você pode usar a Grade de Eventos para entregar eventos aos destinos dos assinantes.
O Power BI é uma coleção de serviços de software e aplicativos que exibem informações de análise. Nesta solução, o Power BI fornece uma maneira de usar os dados processados para executar análises avançadas e obter insights.
Detalhes do cenário
O MongoDB Atlas serve como a camada de dados operacionais de muitos aplicativos corporativos. Esse banco de dados em nuvem armazena dados de aplicativos internos, serviços voltados para o cliente e APIs de terceiros de vários canais. Usando pipelines do Azure Synapse Analytics, você pode combinar dados do MongoDB Atlas com dados relacionais de outros aplicativos tradicionais e dados não estruturados de fontes como logs.
Integração em lote
No Azure Synapse Analytics, você pode integrar perfeitamente instâncias locais do MongoDB e o MongoDB Atlas como um recurso de origem ou coletor. O MongoDB é o único banco de dados NoSQL que tem conectores de origem e coletor para o Azure Synapse Analytics e o Data Factory.
Com dados históricos, você pode recuperar todos os dados de uma só vez. Você também pode recuperar dados incrementalmente por períodos específicos usando um filtro no modo de lote. Em seguida, você pode usar pools SQL e pools Apache Spark no Azure Synapse Analytics para transformar e analisar os dados. Se precisar armazenar os resultados da análise ou da consulta em um armazenamento de dados de análise, você pode usar o recurso de coletor no Azure Synapse Analytics.
Para obter mais informações sobre como instalar e configurar os conectores, consulte estes recursos:
- Copiar dados de ou para o MongoDB Atlas usando o Azure Data Factory ou o Azure Synapse Analytics
- Copiar dados de ou para o MongoDB usando o Azure Data Factory ou o Azure Synapse Analytics
O conector de origem fornece uma maneira conveniente de executar o Azure Synapse Analytics sobre os dados operacionais armazenados no MongoDB ou no Atlas. Depois de usar o conector de origem para recuperar dados do Atlas, você pode carregá-los no armazenamento de blob do Armazenamento Data Lake como um arquivo Parquet, Avro, JSON, texto ou CSV. Em seguida, você pode transformar esses arquivos ou juntá-los a outros arquivos de outras fontes de dados em ambientes de vários bancos de dados, multinuvem ou nuvem híbrida.
Você pode usar os dados recuperados do MongoDB Enterprise Advanced ou do MongoDB Atlas nos seguintes cenários:
Para recuperar todos os dados de uma data específica do MongoDB em um lote. Em seguida, carregue os dados no Armazenamento Data Lake. A partir daí, você usa um pool SQL sem servidor ou um pool do Spark para análise ou copia os dados para um pool SQL dedicado. Depois de recuperar esse lote, você pode aplicar alterações aos dados à medida que ocorrem, conforme descrito em Fluxo de dados. Um pipeline de amostra de CopyPipeline_mdb_synapse_ded_pool_RTS de armazenamento está disponível como parte dessa solução. Você pode exportar o pipeline do GitHub para essa finalidade de carregamento único.
Para produzir insights com uma frequência específica, por exemplo, para um relatório diário ou horário. Para esse cenário, você agenda um pipeline para recuperar dados regularmente antes de executar os pipelines de análise. Você pode usar uma consulta MongoDB para aplicar critérios de filtro e recuperar apenas um determinado subconjunto de dados.
Sincronização em tempo real
As empresas precisam de informações baseadas em dados em tempo real, não em dados obsoletos. Um atraso de algumas horas na entrega de insights pode atrasar o processo de tomada de decisão e resultar em uma perda de vantagem competitiva. Essa solução alimenta a tomada de decisões críticas propagando as alterações que ocorrem no banco de dados transacional do MongoDB para o pool SQL dedicado em tempo real.
Esta solução tem três partes, que as seções a seguir descrevem.
Capture as alterações do MongoDB Atlas
O fluxo de alterações do MongoDB captura as alterações que ocorrem no banco de dados. As APIs de fluxo de alterações disponibilizam informações sobre alterações para aplicativos Web do Serviço de Aplicativo que assinam o fluxo de alterações. Esses aplicativos gravam as alterações no armazenamento de blobs do Armazenamento Data Lake.
Acionar um pipeline para propagar as alterações no Azure Synapse Analytics
A solução apresenta duas opções para acionar um pipeline do Azure Synapse Analytics depois que o blob é gravado no Armazenamento Data Lake:
Um gatilho baseado em armazenamento. Use essa opção se precisar de análises em tempo real, porque o pipeline é acionado assim que o blob com a alteração é gravado. Mas essa opção pode não ser a abordagem preferida quando você tem um grande volume de alterações de dados. O Azure Synapse Analytics limita o número de pipelines que podem ser executados simultaneamente. Quando você tem um grande número de alterações de dados, você pode atingir esse limite.
Um gatilho personalizado baseado em evento. Esse tipo de gatilho tem a vantagem de estar fora do Azure Synapse Analytics, portanto, é mais fácil de controlar. A versão da Grade de Eventos do aplicativo Web grava o documento de dados alterado no armazenamento de blob. Ao mesmo tempo, o aplicativo cria um novo evento de grade de eventos. Os dados no evento contêm o nome de arquivo do blob. O pipeline que o evento dispara recebe o nome do arquivo como um parâmetro e, em seguida, usa o arquivo para atualizar o pool SQL dedicado.
Propagar as alterações para um pool SQL dedicado
Um pipeline do Azure Synapse Analytics propaga as alterações para um pool SQL dedicado. A solução fornece um pipeline de CopyPipeline_mdb_synapse_ded_pool_RTS no GitHub que copia a alteração no blob do Data Lake Storage para o pool SQL dedicado. Esse pipeline é acionado pelo gatilho de armazenamento ou Grade de Eventos.
Potenciais casos de utilização
Os casos de uso desta solução abrangem muitos setores e áreas:
Retail
- Desenvolver informações sobre a agregação e a promoção de produtos
- Otimizando o armazenamento a frio que usa streaming de IoT
- Otimizando a reposição de estoque
- Agregando valor à distribuição omnichannel
Banca e finanças
- Personalização dos serviços financeiros ao cliente
- Deteção de transações potencialmente fraudulentas
Telecomunicações
- Otimização de redes de última geração
- Maximizando o valor das redes de borda
Automóvel
- Otimização da parametrização de veículos conectados
- Deteção de anomalias na comunicação da Internet das coisas em veículos conectados
Manufacturing
- Fornecimento de manutenção preditiva para máquinas
- Otimizando o gerenciamento de armazenamento e estoque
Eis dois exemplos específicos:
- Como este artigo descreve anteriormente na integração em lote, você pode recuperar dados do MongoDB em um lote e, em seguida, atualizar os dados à medida que as alterações ocorrem. Essa capacidade possibilita insights em tempo real para a tomada de decisões e conclusões just-in-time. Essa funcionalidade é útil para a análise de informações confidenciais e críticas, como transações financeiras e dados de deteção de fraude.
- Como a integração em lote também descreve, você pode agendar um pipeline para recuperar dados do MongoDB regularmente. Essa funcionalidade é útil em cenários de varejo, como a atualização dos níveis de estoque com dados de vendas diárias. Nesses casos, os relatórios e painéis analíticos não são de importância crítica, e a análise em tempo real não vale o esforço.
As seções a seguir examinam mais de perto dois casos de uso do setor de varejo.
Agregação de produtos
Para promover a venda de um produto, pode vendê-lo como parte de um pacote juntamente com outros produtos relacionados. O objetivo é usar dados de padrões de vendas para desenvolver estratégias para agrupar um produto em embalagens.
Existem duas fontes de dados:
- Os dados do catálogo de produtos do MongoDB
- Dados de vendas do Azure SQL
Ambos os conjuntos de dados são migrados para um pool SQL dedicado do Azure Synapse Analytics usando um pipeline do Azure Synapse Analytics. Os gatilhos e as capturas de dados de alteração são usados para obter uma sincronização de dados quase em tempo real sobre os dados migrados uma única vez.
Os gráficos do Power BI a seguir mostram a afinidade entre os produtos e os padrões de vendas. A afinidade da caneta e do refil à base de tinta é alta. Os dados de vendas mostram que a caneta tem um alto volume de vendas na área especificada.
A análise faz duas sugestões para gerar melhores vendas:
- Agregação da caneta e recarga à base de tinta
- Promover o pacote em determinadas áreas
Promoção do produto
Para promover a venda de um produto, você pode recomendar o produto para clientes que estão interessados em produtos relacionados. O objetivo é usar dados de vendas e dados de padrões de compra de clientes para desenvolver estratégias para recomendar um produto aos clientes.
Usando o Azure Synapse Analytics, você pode desenvolver modelos de IA e aprendizado de máquina para determinar quais produtos recomendar aos clientes.
Os diagramas a seguir mostram o uso de vários tipos de dados para criar um modelo para determinar recomendações de produtos alternativos. Os dados incluem padrões de compra do cliente, lucros, afinidades de produtos, o volume de vendas dos produtos e parâmetros do catálogo de produtos.
Se o seu modelo atingir alta precisão, ele fornece uma lista de produtos que você pode recomendar ao 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.
Segurança
A segurança oferece garantias contra ataques deliberados e o abuso de seus valiosos dados e sistemas. Para obter mais informações, consulte Visão geral do pilar de segurança.
Para obter informações detalhadas sobre os requisitos e controles de segurança dos componentes do Azure na solução, consulte a seção de segurança da documentação de cada produto.
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 estimar o custo dos produtos e configurações do Azure, use a calculadora de preços do Azure.
- O Azure ajuda você a evitar custos desnecessários, identificando o número correto de recursos para suas necessidades, analisando os gastos ao longo do tempo e dimensionando para atender às necessidades de negócios sem gastar demais. Por exemplo, você pode pausar os pools SQL dedicados quando não espera nenhuma carga. Você pode retomá-los mais tarde.
- Você pode substituir o Serviço de Aplicativo pelo Azure Functions. Ao orquestrar as funções dentro de um pipeline do Azure Synapse Analytics, você pode reduzir custos.
- Para reduzir o custo do cluster Spark, escolha o tipo de computação de fluxo de dados correto. Opções gerais e otimizadas para memória estão disponíveis. Escolha também os valores apropriados de contagem de núcleos e tempo de vida (TTL).
- Para saber mais sobre como gerenciar os custos dos principais componentes da solução, consulte estes recursos:
Eficiência de desempenho
Eficiência de desempenho é a capacidade de sua carga de trabalho de escalar para atender às demandas que são colocadas a ela pelos usuários de maneira eficiente. Para obter mais informações, consulte Visão geral do pilar de eficiência de desempenho.
Quando há um grande volume de alterações, a execução de milhares de pipelines no Azure Synapse Analytics para cada alteração na coleção pode resultar em uma lista de pendências de pipelines enfileirados. Para melhorar o desempenho nesse cenário, considere as seguintes abordagens:
- Use o código do Serviço de Aplicativo baseado em armazenamento, que grava os documentos JSON com as alterações no Armazenamento Data Lake. Não vincule o gatilho baseado em armazenamento ao pipeline. Em vez disso, use um gatilho agendado em um intervalo curto, como a cada dois ou cinco minutos. Quando o gatilho agendado é executado, ele pega todos os arquivos no diretório de armazenamento Data Lake especificado e atualiza o pool SQL dedicado para cada um deles.
- Modifique o código do Serviço de Aplicativo de Grade de Eventos. Programe-o para adicionar um microlote de cerca de 100 alterações ao armazenamento de blob antes de adicionar o novo tópico ao evento com os metadados que incluem o nome do arquivo. Com essa modificação, você aciona apenas um pipeline para um blob com as 100 alterações. Você pode ajustar o tamanho do microlote para se adequar ao seu cenário. Use pequenos microlotes em alta frequência para fornecer atualizações próximas ao tempo real. Ou use microlotes maiores com uma frequência mais baixa para atualizações atrasadas e despesas gerais reduzidas.
Para obter mais informações sobre como melhorar o desempenho e a escalabilidade da atividade de cópia do pipeline do Azure Synapse Analytics, consulte Guia de desempenho e escalabilidade da atividade de cópia.
Implementar este cenário
Para obter informações sobre como implementar essa solução, consulte Real-Time Sync Solution for MongoDB Atlas Integration with Synapse.
Contribuidores
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.
Principais autores:
- Diana Annie Jenosh - Brasil | Arquiteto de Soluções Sênior
- Babu Srinivasan - Brasil | Arquiteto de Soluções Sênior
- Utsav Talwar - Brasil | Arquiteto de Soluções Associado
Outros contribuidores:
- Krishnakumar Rukmangathan - Brasil | Gerente de Programa Sênior
- Sunil Sabat - Brasil | Gerente de Programa Principal
- Wee Hyong T - Brasil | Diretor Principal
- Paresh Saraf - Brasil | Diretor Técnico
Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.
Próximos passos
Para obter mais informações sobre a solução, entre em contato com partners@mongodb.com.
Para obter informações sobre o MongoDB, consulte estes recursos:
- MongoDB
- MongoDB Atlas
- Casos de uso horizontais do MongoDB
- Casos de uso específicos do setor do MongoDB
Para obter informações sobre os componentes da solução do Azure, consulte estes recursos:
- O que é o Azure Synapse Analytics?
- Casos de uso do Azure Synapse Analytics
- Casos de uso específicos do setor do Azure Synapse Analytics
- Conectores do Azure Synapse Analytics
- Descrição geral do Serviço de Aplicações
- O que é Power BI?
- Introdução ao Azure Data Lake Storage Gen2
- O que é a Grade de Eventos do Azure?