Os desenvolvedores descrevem o Kafka como um "sistema de mensagens distribuído, tolerante a falhas, de alta taxa de transferência, pub-sub". " Kafka é conhecido como um serviço de log de confirmação particionado, distribuído e replicado. Ele também fornece a funcionalidade de um sistema de mensagens, mas com um design exclusivo. Por outro lado, o MongoDB é conhecido como "O banco de dados para ideias gigantes. " O MongoDB é capaz de armazenar dados em documentos semelhantes a JSON que podem variar em estrutura, oferecendo um esquema dinâmico e flexível. O MongoDB foi projetado para alta disponibilidade e escalabilidade, com replicação e auto-sharding integrados.
MongoDB é classificado em "Bancos de dados", enquanto Kafka pertence à categoria "Fila de mensagens" da pilha de tecnologia. Os desenvolvedores consideram o Kafka "Alto rendimento", "Distribuído" e "Escalável" como os principais fatores; enquanto "Armazenamento orientado a documentos", "Sem SQL" e "Facilidade de uso" são considerados as principais razões pelas quais o MongoDB é favorecido.
Transmissão de dados no Kafka
No ecossistema de dados atual, não existe um sistema único que possa fornecer todas as perspectivas necessárias para fornecer uma visão real dos dados. Obter uma melhor visualização de insights de dados a partir de dados requer a mistura de um grande volume de informações de várias fontes de dados. Como tal, estamos ansiosos para obter respostas imediatamente; se o tempo necessário para analisar os insights de dados exceder 10s de milissegundos, o valor será perdido ou irrelevante. Aplicativos como detecção de fraudes, negociação de alta frequência e mecanismos de recomendação não podem esperar. Essa operação também é conhecida como analisar o fluxo de entrada de dados antes de ser atualizado como o banco de dados de registro com tolerância zero para perda de dados, e o desafio fica ainda mais assustador.
O Kafka ajuda você a ingerir e mover rapidamente grandes quantidades de dados de forma confiável de várias fontes de dados e redirecioná-los para os sistemas que precisam deles filtrando, agregando e analisando em rota. O Kafka tem uma taxa de transferência, confiabilidade e características de replicação mais altas, um método escalável para comunicar fluxos de dados de eventos de um ou mais produtores Kafka para um ou mais consumidores Kafka. Exemplos de eventos incluem:
- Dados de poluição do ar capturados periodicamente
- Um consumidor que adiciona um item ao carrinho de compras em uma loja online
- Um Tweet postado com uma hashtag específica
Os fluxos de eventos Kafka são capturados e organizados em tópicos predefinidos. O produtor Kafka escolhe um tópico para enviar um determinado evento e os consumidores selecionam de quais tópicos eles extraem eventos. Por exemplo, um aplicativo financeiro do mercado de ações pode extrair negociações de ações de um tópico e informações financeiras da empresa de outro para procurar oportunidades de negociação.
A colaboração entre MongoDB e Kafka é hoje o coração de muitas arquiteturas de dados modernas. O Kafka foi projetado para fluxos ilimitados de dados que gravam eventos sequencialmente em logs de confirmação, permitindo a movimentação de dados em tempo real entre o MongoDB e o Kafka feita por meio do Kafka Connect.
O MongoDB Connector oficial para Kafka foi desenvolvido e é suportado pela MongoDB Inc. engenheiros. Também é verificado pela Confluent (que foi pioneira na plataforma de streaming de eventos pronta para empresas), em conformidade com as diretrizes estabelecidas pelo Programa de Integrações Verificadas da Confluent. O conector permite que o MongoDB seja configurado como um coletor e uma fonte para Kafka. Crie facilmente pipelines de dados robustos e reativos que transmitem eventos entre aplicativos e serviços em tempo real.
Conector de coletor do MongoDB
O MongoDB Sink nos permite escrever eventos do Kafka para nossa instância do MongoDB. O conector Sink converte o valor do Kafka Connect SinkRecords em um documento MongoDB e fará um insert ou upsert dependendo da configuração que você escolher. Ele esperava que o banco de dados fosse criado antecipadamente, as coleções direcionadas do MongoDB criadas se não existissem.
MongoDB Kafka Source Connector
O MongoDB Kafka Source Connector move dados de um conjunto de réplicas do MongoDB para um cluster Kafka. O conector configura e consome documentos de eventos de fluxo de mudança e os publica em um tópico. Os fluxos de mudança, um recurso introduzido no MongoDB 3.6, geram documentos de eventos que contêm alterações nos dados armazenados no MongoDB em tempo real e fornecem garantias de durabilidade, segurança e idempotência. Você pode configurar fluxos de mudança para observar mudanças no nível de coleta, banco de dados ou implantação. Ele usa as configurações a seguir para criar fluxos de mudança e personalizar a saída para salvar no cluster Kafka. Ele publicará os eventos de dados alterados em um tópico Kafka que consiste no banco de dados e no nome da coleção de onde a alteração foi originada.
Casos de uso do MongoDB e Kafka
Sites de comércio eletrônico
Caso de uso de um site de comércio eletrônico em que os dados de inventário são armazenados no MongoDB. Quando o estoque do produto fica abaixo de um determinado limite, a empresa deseja fazer um pedido automático para aumentar o estoque. O processo de pedido é feito por outros sistemas fora do MongoDB, e usar o Kafka como plataforma para esses sistemas orientados a eventos é um ótimo exemplo do poder do MongoDB e do Kafka quando usados juntos.
Acompanhamento de atividades do site
Atividade do site, como páginas visitadas ou anúncios renderizados, são capturados em tópicos Kafka – um tópico por tipo de dados. Esses tópicos podem ser consumidos por várias funções, como monitoramento, análise em tempo real ou arquivamento para análise offline. Insights dos dados armazenados em um banco de dados operacional como o MongoDB, onde eles podem ser analisados juntamente com dados de outras fontes.
Internet das Coisas (IoT)
Aplicativos de IoT devem lidar com um grande número de eventos gerados por vários dispositivos. Kafka desempenha um papel vital no fornecimento de fan-in e coleta em tempo real de todos os dados do sensor. Um caso de uso comum é a telemática, onde os diagnósticos dos sensores de um veículo devem ser recebidos e processados de volta na base. Uma vez capturados nos tópicos Kafka, os dados podem ser processados de várias maneiras, incluindo processamento de fluxo ou arquiteturas Lambda. Também é provável que seja armazenado em um banco de dados operacional como o MongoDB, onde pode ser combinado com outros dados armazenados para realizar análises em tempo real e dar suporte a aplicativos operacionais, como acionar ofertas personalizadas.
Conclusão
O MongoDB é conhecido como banco de dados não relacional, publicado sob uma licença de código aberto e gratuito, o MongoDB é principalmente um banco de dados orientado a documentos, destinado ao uso com dados semiestruturados como documentos de texto. É o banco de dados moderno mais popular construído para lidar com grandes volumes de dados heterogêneos.
Kafka é uma plataforma de streaming distribuído amplamente popular que milhares de empresas como New Relic, Uber e Square usam para criar sistemas de streaming em tempo real escaláveis, de alto rendimento e confiáveis.
Juntos, MongoDB e Kafka desempenham papéis vitais em nosso ecossistema de dados e em muitas arquiteturas de dados modernas.