Integração de dados
Sincronização contínua de dados entre MongoDB e Oracle
Um serviço de integração em Python que captura mudanças no MongoDB em tempo real e as replica no Oracle, com retomada após falhas e reconciliação de lacunas.
- Integrações
- Sincronização de dados
- Arquitetura
Contexto
Dados operacionais nasciam em uma aplicação baseada em MongoDB, mas outros sistemas da empresa — relatórios, rotinas e integrações — dependiam deles no Oracle. Cargas periódicas completas eram lentas, deixavam os dados desatualizados e pesavam nos dois bancos.
Desafio
- Levar cada alteração ao Oracle com baixa latência, sem recarregar tudo.
- Não perder eventos se o serviço, a rede ou um dos bancos ficasse indisponível.
- Lidar com volume e com documentos que não se mapeiam diretamente para tabelas relacionais.
Abordagem
Arquitetei um serviço de integração multithread em Python, com processamento assíncrono:
- Captura incremental (CDC) com MongoDB Change Streams: o serviço reage a inserções, atualizações e remoções à medida que acontecem.
- Resume tokens persistidos, para que o serviço retome exatamente de onde parou após uma reinicialização ou falha.
- Sincronização de recuperação, que reconcilia períodos em que a captura não esteve ativa e fecha eventuais lacunas.
- Workers de upsert no Oracle, idempotentes: reprocessar um evento não gera duplicidade.
Resultado
- Dados no Oracle acompanhando o MongoDB continuamente, em vez de cargas periódicas.
- Operação resiliente a falhas, com retomada automática e reconciliação.
- Uma arquitetura simples de operar, que pode receber novas coleções e destinos.