Change Data Capture: qué es CDC

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:

  1. Tomar un snapshot consistente.
  2. Registrar la posición del log.
  3. Cargar el histórico.
  4. Reproducir cambios desde esa posición.
  5. 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

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir