O MongoDB cresceu de uma loja básica de valor-chave JSON para uma das soluções de banco de dados NoSQL mais populares atualmente em uso. É amplamente suportado e fornece armazenamento de documentos JSON flexível em escala. Ele também fornece recursos de consulta e análise nativos de consulta. Esses atributos fizeram com que o MongoDB fosse amplamente adotado, especialmente juntamente com os aplicativos da Net JavaScript.
Por mais capaz que seja, ainda há casos em que o MongoDB sozinho não pode atender a todos os requisitos para um aplicativo, portanto, obtendo uma cópia dos dados em outra plataforma por meio de um altere a captura de dados (CDC) é necessária solução. Isso pode ser usado para criar lagos de dados, preencher os information warehouses ou para casos de uso específicos, como análise de análise e pesquisa de texto.
Nesta postagem, percorreremos como o CDC funciona no MongoDB e como ele pode ser implementado e depois nos aprofundar nos motivos pelos quais você pode querer implementar o CDC com o MongoDB.
Bifurcação vs Polling vs Alterar captura de dados
Alterar a captura de dados é um mecanismo que pode ser usado para mover dados de um repositório de dados para outro. Existem outras opções:
- Você pode bifurcar dados chegando, dividindo os dados em vários fluxos que podem ser enviados para várias fontes de dados. Geralmente, isso significa que seus aplicativos enviariam novos dados para uma fila. Esta não é uma ótima opção porque limita as APIs que seu aplicativo pode usar para enviar dados para serem aqueles que se assemelham a uma fila. As aplicações tendem a precisar do suporte de APIs de nível superior para coisas como transações ácidas. Portanto, isso significa que geralmente queremos permitir que nosso aplicativo converse diretamente com um banco de dados. O aplicativo pode enviar dados por meio de um servidor de micro-serviço ou aplicativo que fala diretamente com o banco de dados, mas isso apenas transfer o problema. Esses serviços ainda precisariam conversar diretamente com o banco de dados.
- Você pode pesquisar periodicamente seu banco de dados de entrance -end e pressionar os dados em sua plataforma analítica. Embora isso pareça simples, os detalhes ficam complicados, principalmente se você precisar oferecer suporte a atualizações dos seus dados. Acontece que isso é difícil de fazer na prática. E agora você introduziu outro processo que precisa ser executado, monitorado, escala and many others.
Portanto, o uso do CDC evita esses problemas. O aplicativo ainda pode aproveitar os recursos do banco de dados (talvez por meio de um serviço) e você não precisa configurar uma infraestrutura de votação. Mas há outra diferença importante – o uso do CDC fornecerá a versão mais fresca dos dados. CDC permite verdadeiro análise em tempo actual Nos dados do seu aplicativo, assumindo que a plataforma para a qual você envie os dados possa consumir os eventos em tempo actual.
Opções para mudança de captura de dados no MongoDB
Apache Kafka
A arquitetura CDC nativa para capturar eventos de mudança no MongoDB usa Apache Kafka. O MongoDB fornece aos conectores Kafka -fonte e afundam que podem ser usados para escrever os eventos de mudança em um tópico Kafka e, em seguida, produzir essas alterações para outro sistema, como um banco de dados ou information lake.
Os conectores prontos para uso tornam bastante simples configurar a solução CDC, no entanto, exigem o uso de um cluster Kafka. Se isso ainda não faz parte da sua arquitetura, poderá adicionar outra camada de complexidade e custo.
Debezium
Também é possível capturar eventos de captura de dados de alteração do MongoDB usando Debezium. Se você está familiarizado com o Debezium, isso pode ser trivial.
MongoDB muda fluxos e conjunto de rock
Se seu objetivo é executar análises em tempo actual ou pesquisa de texto, então o Rockset está pronto para uso conector Isso aproveita os fluxos de mudança do MongoDB é uma boa escolha. A solução de conjunto de rock não requer Kafka nem Debezium. O RockSet captura muda os eventos diretamente do MongoDB, os escreve para seu banco de dados de análise e automaticamente índices Os dados para análise rápida e pesquisa.
Sua escolha de usar Kafka, Debezium ou uma solução totalmente integrada como o RockSet dependerá do seu caso de uso, então vamos dar uma olhada em alguns casos de uso para o CDC no MongoDB.
Casos de uso para CDC no MongoDB
Analítica de descarga
Um dos principais casos de uso do CDC no MongoDB é descarregar consultas analíticas. O MongoDB possui recursos analíticos nativos, permitindo que você construa oleodutos complexos de transformação e agregação a serem executados nos documentos. No entanto, esses pipelines analíticos, devido à sua rica funcionalidade, são pesados para escrever, pois usam uma linguagem de consulta proprietária específica para o MongoDB. Isso significa que analistas que estão acostumados a usar o SQL terão uma curva de aprendizado acentuada para esse novo idioma.
Os documentos em MongoDB também podem ter estruturas complexas. Os dados são armazenados como documentos JSON que podem conter objetos e matrizes aninhados que fornecem mais complexidades ao criar consultas analíticas nos dados, como acessar propriedades aninhadas e matrizes explodindo para analisar elementos individuais.
Finalmente, realizar grandes consultas analíticas em uma instância de entrance -end de produção pode afetar negativamente a experiência do usuário, especialmente se o A análise está sendo executada com frequência. Isso pode desacelerar significativamente as velocidades de leitura e gravação que os desenvolvedores geralmente desejam evitar, especialmente porque o MongoDB é frequentemente escolhido, principalmente por suas operações de redação rápida e leitura. Como alternativa, exigiria máquinas e aglomerados maiores e maiores mongodb, aumentando o custo.
Para superar esses desafios, é comum enviar dados para uma plataforma analítica by way of CDC, para que as consultas possam ser executadas usando linguagens familiares como SQL sem afetar o desempenho do sistema front-end. Kafka ou Debezium podem ser usados para extrair as alterações e, em seguida, escrevê-las em uma plataforma de análise adequada, seja um Knowledge Lake, Knowledge Warehouse ou um banco de dados de análise em tempo actual.
O RockSet leva isso um passo adiante, não apenas consumindo diretamente os eventos do CDC do MongoDB, mas também para apoiar as consultas SQL nativamente (incluindo junções) nos documentos, e fornece funcionalidade para manipular estruturas e matrizes de dados complexostudo dentro das consultas SQL. Isso permite a análise em tempo actual, porque a necessidade de transformar e manipular os documentos antes das consultas é eliminada.
Opções de pesquisa no MongoDB
Outro caso de uso atraente para o CDC no MongoDB é facilitar as pesquisas de texto. Novamente, o MongoDB implementou recursos como índices de texto que suportam isso nativamente. Os índices de texto permitem que certas propriedades sejam indexadas especificamente para aplicativos de pesquisa. Isso significa que os documentos podem ser recuperados com base na correspondência de proximidade e não apenas nas correspondências exatas. Você também pode incluir várias propriedades no índice, como um nome de produto e uma descrição; portanto, ambos são usados para determinar se um documento corresponde a um termo de pesquisa específico.
Embora isso seja poderoso, ainda pode haver alguns casos em que a descarga de um banco de dados dedicada para pesquisa pode ser preferível. Novamente, o desempenho será o principal motivo, especialmente se as gravações rápidas forem importantes. A adição de índices de texto a uma coleção no MongoDB adicionará naturalmente uma sobrecarga em todas as inserções devido ao processo de indexação.
Se o seu caso de uso determinar um conjunto mais rico de recursos de pesquisa, como correspondência difusa, convém implementar um pipeline do CDC para copiar os dados de texto necessários do MongoDB no Elasticsearch. No entanto, o RockSet ainda é uma opção se você estiver satisfeito com a correspondência de proximidade, deseja descarregar consultas de pesquisa e também manter todos os benefícios de análise em tempo actual discutidos anteriormente. A capacidade de pesquisa do Rockset também é baseada no SQL, que novamente pode reduzir o ônus da produção de consultas de pesquisa, pois o Elasticsearch e o MongoDB usam idiomas sob medida.
Conclusão
O MongoDB é um banco de dados NOSQL escalável e poderoso que fornece muitas funcionalidades prontas para uso, incluindo leitura rápida (Get By Major Key) e velocidade de gravação, manipulação de documentos JSON, dutos de agregação e pesquisa de texto. Mesmo com tudo isso, uma solução CDC ainda pode permitir recursos maiores e/ou reduzir custos, dependendo do seu caso de uso específico. Mais notavelmente, você pode implementar o CDC no MongoDB para reduzir o ônus das instâncias de produção, descarregando tarefas intensivas em carga, como análises em tempo actual, para outra plataforma.
O MongoDB fornece conectores Kafka e Debezium prontos para ajudar com implementações do CDC; No entanto, dependendo da sua arquitetura existente, isso pode significar implementar uma nova infraestrutura além de manter um banco de dados separado para armazenar os dados.
O RockSet ignora o requisito para Kafka e Debezium com seu conector embutido, com base nos fluxos de alterações do MongoDB, reduzindo a latência da ingestão de dados e permitindo análises em tempo actual. Com a indexação automática e a capacidade de consultar nativamente estruturadas ou semiestruturadas com SQL, você pode escrever consultas poderosas em dados sem a sobrecarga dos pipelines ETL, o que significa que as consultas podem ser executadas nos dados do CDC Dentro de um a dois segundos sendo produzidos.
Lewis Gavin é engenheiro de dados há cinco anos e também está blogando sobre habilidades na comunidade de dados há quatro anos em um weblog pessoal e meio. Durante seu diploma de ciência da computação, ele trabalhou para a equipe de helicópteros da Airbus, em Munique, aprimorando o software program simulador para helicópteros militares. Ele então trabalhou para Capgemini, onde ajudou o governo do Reino Unido a se mudar para o mundo dos large information. Ele está atualmente usando essa experiência para ajudar a transformar o cenário de dados em easyfundraising.org.ukum website de reembolso de caridade on -line, onde ele está ajudando a moldar sua capacidade de information warehousing e relatórios desde o início.