Change Data Capture (CDC) es una técnica utilizada para rastrear y capturar los cambios a nivel de fila que ocurren en una base de datos. En lugar de realizar lecturas completas o comparaciones periódicas de estados, CDC se enfoca en la detección de inserciones, actualizaciones y eliminaciones a medida que suceden. Esto se logra típicamente monitoreando los transaction logs (también conocidos como write-ahead logs o WALs) de la base de datos, utilizando triggers a nivel de tabla, o mediante la comparación de estados con marcas de tiempo o columnas de versión. El objetivo principal es propagar estos cambios a otros sistemas downstream de manera eficiente y con baja latencia, asegurando la consistencia de los datos entre múltiples fuentes.

En el mundo real, CDC es fundamental para una variedad de arquitecturas de datos modernas. Herramientas como Debezium y Apache Flink CDC se integran directamente con bases de datos como PostgreSQL (a través de WALs), MySQL (a través de binlogs) y MongoDB (a través de oplogs) para extraer eventos de cambio y publicarlos en sistemas de mensajería como Apache Kafka. Esto permite casos de uso como la replicación de datos en tiempo real para data warehouses (ej. Snowflake, Google BigQuery), la alimentación de caches distribuidas (ej. Redis), la actualización de índices de búsqueda (ej. Elasticsearch), la sincronización de microservicios y la construcción de arquitecturas de Event Sourcing. Proveedores de cloud como AWS ofrecen servicios como AWS DMS (Database Migration Service) que incluyen capacidades de CDC para migraciones y replicación continua.

Para un arquitecto, CDC es una herramienta estratégica que permite desacoplar sistemas, reducir la carga en las bases de datos transaccionales y construir arquitecturas reactivas y basadas en eventos. Los trade-offs incluyen la complejidad operativa de configurar y mantener los conectores CDC, el impacto potencial en el rendimiento de la base de datos fuente (especialmente con enfoques basados en triggers), y la necesidad de manejar la semántica de entrega (at-least-once, exactly-once) y la evolución del esquema. La elección de la estrategia CDC (log-based vs. trigger-based vs. polling) depende de los requisitos de latencia, el impacto en la fuente, la robustez y la facilidad de implementación. Un diseño cuidadoso con CDC puede transformar una arquitectura monolítica en un ecosistema de datos ágil y escalable, pero una implementación deficiente puede introducir latencia, inconsistencias y puntos de fallo.