Change data capture transmite mudanças em nível de linha para fora de um banco de origem. O CDC baseado em log lê o log de transações diretamente, então captura inserts, updates e deletes físicos na ordem de commit e quase sem carga na origem. Fazer polling em uma coluna updated_at é mais simples, mas perde deletes físicos, perde estados intermediários entre coletas, depende da aplicação manter a coluna e pode perder linhas por problemas de relógio ou de fronteira de transação.
Por que os entrevistadores perguntam isso
Essa é uma decisão real de arquitetura em quase todo projeto de ingestão. Os entrevistadores querem ouvir as fraquezas específicas do polling por timestamp, especialmente deletes e transações em andamento, e se você entende o que o CDC baseado em log exige da origem: replication slots, retenção de log, permissões e um plano para o snapshot inicial.
Como estruturar sua resposta
- Defina CDC e nomeie as duas principais implementações.
- Liste exatamente o que o polling por timestamp perde.
- Descreva o que o CDC baseado em log exige do banco de origem.
- Explique a transição de snapshot para stream.
- Diga como você lidaria com mudanças de schema na tabela de origem.
Exemplo de resposta
CDC trata de obter mudanças em nível de linha em vez de reler tabelas inteiras. O CDC baseado em log, com algo como o Debezium lendo o write ahead log do Postgres ou o binlog do MySQL, entrega cada insert, update e delete na ordem de commit e coloca quase nenhuma carga de consulta no primário. Fazer polling em uma coluna updated_at é muito mais fácil de configurar, e serve bem para dados de referência que mudam devagar, mas tem buracos reais. Ele não enxerga deletes físicos de jeito nenhum, então as linhas persistem silenciosamente lá na frente para sempre. Perde estados intermediários se uma linha muda duas vezes entre coletas, e depende de todo escritor lembrar de preencher a coluna, o que um job legado no nosso parque nunca fazia. O CDC baseado em log tem o seu próprio custo operacional. Você precisa de um replication slot, e se o seu consumidor travar o log não é recuperado e o disco da origem enche, o que é uma falha genuinamente perigosa. Então eu monitoro o lag do slot como alerta de primeira classe, junto com o lag do pipeline.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- Como você faria o snapshot inicial sem bloquear a origem?
- O que acontece se um replication slot do Postgres ficar para trás?
- Como você representa um delete lá na frente em uma tabela append only?
Mais perguntas para Engenheiro de Dados
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas