Change Data Capture: qué es CDC

Change Data Capture (CDC) es un conjunto de técnicas para detectar inserciones, actualizaciones y eliminaciones en una fuente y propagarlas a otros sistemas. Evita releer una tabla completa en cada carga y permite pipelines incrementales con menor latencia.
CDC no es únicamente “copiar lo nuevo”. Debe representar cambios, preservar orden cuando importe, manejar eliminaciones y recuperarse de reinicios sin perder ni duplicar efectos.
Qué cambios captura
Un evento puede incluir:
- tipo: insert, update o delete;
- clave de la fila;
- valores anteriores y posteriores;
- posición en el log;
- instante de captura;
- metadatos de transacción.
El contenido depende del origen y herramienta. Diseña consumidores que no supongan campos inexistentes.
Métodos de captura
Basado en log
Lee el registro transaccional. Suele tener bajo impacto en consultas y conserva orden, pero requiere permisos, configuración y compatibilidad con el motor.
Columna de marca temporal
SELECT *
FROM pedidos
WHERE actualizado_en > :ultima_marca;
Es simple, pero puede perder filas con marcas repetidas, relojes inconsistentes o actualizaciones tardías. Usa una marca compuesta, margen de solapamiento e idempotencia.
Triggers
Un trigger escribe cambios en una tabla auxiliar. Ofrece control, aunque añade carga y lógica dentro de la base.
Comparación de snapshots
Compara dos estados. Funciona cuando no hay otro acceso, pero cuesta más y detectar borrados exige conservar el snapshot anterior.
Flujo típico
Base origen → captura → cola o log → transformación → destino
Un pipeline de datos puede aplicar los eventos a un warehouse, lakehouse, índice de búsqueda o caché.
Carga inicial y cambios
Normalmente se necesita:
- Tomar un snapshot consistente.
- Registrar la posición del log.
- Cargar el histórico.
- Reproducir cambios desde esa posición.
- Pasar a consumo continuo.
Si existe una ventana entre snapshot y captura, puedes perder cambios. Si se solapan sin deduplicación, puedes repetirlos.
Inserts, updates y deletes
En un destino analítico, un patrón MERGE o upsert inserta claves nuevas y actualiza existentes. Los borrados pueden:
- eliminar físicamente;
- marcar
activo = false; - cerrar una vigencia histórica;
- conservar una lápida o tombstone.
La opción depende de auditoría, privacidad, historial y modelo de consumo.
Idempotencia
Un consumidor idempotente puede procesar el mismo evento más de una vez sin duplicar el efecto. Técnicas:
- clave estable;
- versión o posición del evento;
- tabla de eventos procesados;
- upsert determinista;
- partición y orden controlados.
“Exactly once” suele depender de límites concretos. Documenta si la garantía real es entrega al menos una vez con aplicación idempotente.
Orden
Dos cambios sobre la misma clave deben aplicarse en orden. Distribuir eventos entre particiones sin una clave coherente puede invertirlos. Conserva secuencia por entidad y rechaza versiones antiguas.
El tiempo del evento, de la base y de procesamiento son diferentes. No ordenes únicamente por el reloj de la aplicación.
Esquemas que cambian
Agregar una columna suele ser compatible; renombrar, cambiar tipo o eliminar puede romper consumidores. Usa contratos, compatibilidad hacia atrás, despliegue gradual y linaje de datos para identificar impacto.
Monitorización
Mide:
- retraso entre origen y destino;
- posición o lag del log;
- eventos por tipo;
- errores y reintentos;
- claves duplicadas;
- eventos fuera de orden;
- divergencia de conteos;
- crecimiento de colas;
- pérdida de permisos o retención.
Una alerta debe indicar desde qué posición reanudar y qué destinos están afectados.
CDC vs carga incremental por fecha
Una consulta por updated_at es una forma incremental sencilla, pero no siempre captura deletes ni garantiza orden transaccional. CDC basado en log suele ser más completo para cambios frecuentes; la marca temporal puede bastar para lotes tolerantes.
El artículo de ETL vs ELT ayuda a decidir dónde transformar los eventos.
Errores frecuentes
- Olvidar eliminaciones.
- No coordinar snapshot y posición.
- Confiar en timestamp sin desempate.
- No hacer el consumidor idempotente.
- Ignorar cambios de esquema.
- Perder orden por clave.
- Acumular log por un conector detenido.
- Confundir latencia baja con consistencia verificada.
CDC es confiable cuando puede responder tres preguntas: hasta qué cambio llegó, cómo reanuda y cómo demuestra que el destino coincide con la fuente.
Preguntas frecuentes
¿Qué significa CDC en datos?
Change Data Capture: técnicas para detectar y propagar inserciones, actualizaciones y eliminaciones.
¿CDC es lo mismo que replicación?
CDC captura cambios; una solución de replicación puede utilizar CDC para mantener otro sistema sincronizado.
¿Cuál es el método más completo?
La captura basada en log suele preservar mejor cambios y orden con bajo impacto, pero depende del motor y operación.
¿Cómo captura CDC los borrados?
Mediante eventos delete o tombstones. El consumidor decide si elimina, marca inactivo o conserva historial.
¿Qué es un consumidor idempotente?
Es aquel que puede recibir de nuevo un evento sin aplicar dos veces su efecto lógico.
¿Necesito una carga inicial?
Habitualmente sí. Debe coordinarse con la posición de CDC para no dejar una ventana de pérdida o duplicación.

Deja una respuesta