Recentemente enfrentamos um desafio clássico de Engenharia de Dados: sincronizar várias tabelas com milhões de registros entre duas instâncias PostgreSQL.
O cenário inicial era crítico: as cargas full (carga completa) levavam até 5 dias para rodar, o que inviabilizava a atualização frequente dos dados para a tomada de decisão.
🚀 A Solução: Estratégia Incremental com dltHub
Decidimos testar o dltHub implementando uma estratégia de carga incremental. O resultado superou as expectativas:
- Tempo de processamento: Redução drástica de 5 dias para menos de 23 horas.
- Confiabilidade: Ganhamos performance e previsibilidade no pipeline.
- Manutenção: A gestão das cargas ficou muito mais simples.
🛑 O Desafio dos “Hard Deletes”
Um ponto crítico desse projeto foi lidar com registros excluídos. A fonte dos dados fazia hard delete (apagava o registro fisicamente), o que é um pesadelo para manter o destino sincronizado em processos incrementais (já que o registro simplesmente “some” da origem e o incremental não percebe).
A solução aplicada foi simples e eficiente:
- Alteramos a origem para salvar os IDs dos registros excluídos em uma tabela auxiliar de controle.
- Sincronizamos essa tabela de “deletados” também de forma incremental.
- No destino, aplicamos uma rotina que lê esses IDs e remove os registros correspondentes.
O resultado foi um processo simples, prático e auditável.
🛠 Stack Utilizada
- Orquestração: Apache Airflow
- Ingestão: dltHub
- Banco de Dados: PostgreSQL
Se você também está lutando com pipelines lentas ou problemas de sincronia de exclusões, vale a pena testar esse combo.