Change Data Capture (CDC) es una técnica que monitorea y registra las inserciones, actualizaciones y eliminaciones de datos en una base de datos o sistema de datos. Su objetivo principal es proporcionar un flujo de eventos que representen los cambios en los datos, en lugar de realizar lecturas completas o comparaciones periódicas. Esto se logra típicamente leyendo los logs transaccionales (Write-Ahead Logs o WALs) de la base de datos, utilizando triggers a nivel de tabla, o mediante la comparación de estados (aunque menos eficiente y común para CDC puro). La salida de CDC es un stream de eventos que describen el tipo de cambio (INSERT, UPDATE, DELETE), los datos antes del cambio (opcional), y los datos después del cambio.
En el mundo real, CDC es fundamental para la integración de datos y la construcción de arquitecturas reactivas. Herramientas como Debezium (que se integra con Kafka Connect) son ampliamente utilizadas para capturar cambios de bases de datos como PostgreSQL, MySQL, MongoDB y SQL Server, publicándolos en Apache Kafka. Confluent Platform ofrece soluciones CDC gestionadas. Sistemas de data warehousing y data lakes, como Snowflake o Databricks, a menudo ingieren datos vía CDC para mantener sus réplicas actualizadas. También se utiliza en microservicios para la sincronización de estados entre servicios, la replicación de bases de datos, la auditoría de datos, y la alimentación de sistemas de búsqueda o caches.
Para un arquitecto, CDC es crucial porque permite desacoplar la producción de datos de su consumo, facilitando arquitecturas basadas en eventos y la construcción de sistemas distribuidos resilientes. Permite la replicación de datos con baja latencia, la creación de vistas materializadas en tiempo real, y la alimentación de sistemas analíticos sin impactar el rendimiento de la base de datos transaccional. Sin embargo, implica trade-offs: introduce complejidad en la infraestructura (gestión de conectores, Kafka, etc.), requiere una cuidadosa consideración de la semántica de entrega (at-least-once, exactly-once), y puede tener implicaciones en la consistencia eventual. La elección de la estrategia CDC (log-based, trigger-based) impacta el rendimiento, la fiabilidad y la granularidad de los cambios capturados, siendo los métodos basados en logs generalmente preferidos por su menor impacto en la base de datos fuente y mayor fiabilidad.