Fluxos de alterações
Nesta página
Visão geral
Neste guia, você aprenderá sobre change streams e como são usados em um conector de origem Kafka do MongoDB.
Fluxos de alterações
Os change streams são uma funcionalidade do MongoDB que permite que você receba atualizações em tempo real sobre alterações de dados. Os change streams retornam documentos de eventos de alteração.
Um documento de eventos de mudança contém instruções idempotentes para descrever uma mudança que ocorreu em sua implantação do MongoDB e metadados relacionados a essa mudança. Os documentos de eventos de mudança são gerados a partir de dados no oplog.
Importante
Change streams são executados somente em conjuntos de réplicas e clusters fragmentados do MongoDB
Uma instância standalone do MongoDB não pode produzir um change stream.
Para ver uma lista de todas as opções de configuração de change streams, veja a página dePropriedades de Change Streams do .
Para saber mais sobre change streams, veja os seguintes recursos:
Fluxo de alterações no Manual do MongoDB
Blog post de Introdução a Change Streams
Para saber mais sobre o oplog, veja a entrada manual do MongoDB sobre o Conjunto de réplicas do Oplog.
Agregação
Use uma aggregation pipeline para configurar o change stream do seu connector de origem. Você pode configurar um connector stream para usar um aggregation pipeline para executar tarefas, incluindo as seguintes operações:
Filtrar eventos de alteração por tipo de operação
Campos específicos do projeto
Atualizar o valor dos campos
Adicionar campos
Reduzir a quantidade de dados gerada pelo change stream
Para saber quais operadores de agregação você pode usar com um change stream, veja o guia Como modificar a saída de change streams no manual do MongoDB.
Para ver exemplos que usam uma aggregation pipeline para modificar um change stream, veja as seguintes páginas:
Exemplo de uso: Personalizar um pipeline para filtrar eventos de alteração
Exemplo de uso de como copiar dados existentes
Alterar estrutura do evento
Encontre a estrutura completa de documentos de eventos de alteração, incluindo descrições de todos os campos, no manual do MongoDB.
Observação
A opção de documento completo
Se você quiser que o Kafka Connect receba apenas o documento criado ou modificado na sua operação de alteração, use a opção publish.full.document.only=true
. Para obter mais informações, consulte a página Propriedades de Change Streams.
Desempenho
O oplog é uma capped collection especial que não pode usar índices. Para obter mais informações sobre essa limitação, consulte Recomendações de produção do Change Streams.
Se você quiser melhorar o desempenho do change stream, use um disco mais rápido para o MongoDB cluster e aumente o tamanho do cache do seu WiredTiger . Para saber como definir o WiredTiger cache do , consulte o guia sobre o mecanismo WiredTiger storage engine.
Conectores de origem
O conector de origem funciona abrindo um único change stream com o MongoDB e enviando dados desse change stream para o Kafka Connect. O conector de origem mantém seu change stream durante o tempo de execução e o conector fecha o change stream quando você o interrompe.
Para ver as opções disponíveis para configurar o change stream do conector de origem, veja a página Propriedades de change streams.
Retomar tokens
Seu conector usa um token de retomada como offset. Um offset é um valor que o conector armazena em um tópico do Apache Kafka para acompanhar quais dados de origem foram processados. O conector usa o valor de offset caso precise se recuperar de uma reinicialização ou falha. Um token de retomada é um fragmento de dados que faz referência ao campo _id
de um documento de evento de alteração no oplog do MongoDB.
Se o conector de origem não tiver um offset, por exemplo, quando você inicia o conector pela primeira vez, seu conector iniciará um novo change stream. Depois que o conector receber o primeiro documento de evento de alteração e publica esse documento no Apache Kafka, o conector armazenará o token de retomada do documento como o offset.
Se o valor do token de retomada do offset de seu conector de origem não corresponder a nenhuma entrada no oplog do deployment do MongoDB, o conector terá um token de retomada inválido. Para recuperar de um token de retomada inválido, veja o guia de solução de problemas de tokens inválidos.
Para saber mais sobre tokens de retomada, consulte os seguintes recursos:
Retomar um change stream no Manual do MongoDB
Alterar eventos no Manual do MongoDB
Para saber mais sobre offset, veja os seguintes recursos:
Kafka Connect
offset.storage.topic
documentação da opção de configuraçãoKafka Connect
OffsetStorageReader
Documentação da API