curso
¿Qué es la Captura de Datos de Cambios (CDC)? Guía para principiantes
La Captura de Datos de Cambios (CDC) ayuda a mantener la eficiencia de los conductos de datos al capturar sólo las inserciones, actualizaciones y eliminaciones, en lugar de recargar conjuntos de datos enteros. Esto reduce el tiempo de procesamiento y la carga del sistema.
CDC también es esencial en el flujo de datos en tiempo real, integrándose con plataformas como Apache Kafka para permitir arquitecturas basadas en eventos.
Sumerjámonos en el CDC y en cómo puede mejorar tus proyectos de datos.
¿Qué es la Captura de Datos de Cambios (CDC)?
La Captura de Datos Modificados es un enfoque que detecta, captura y reenvía sólo los datos modificados de un sistema fuente a sistemas descendentes, como almacenes de datos, cuadros de mando o aplicaciones de streaming.
En lugar de reprocesar conjuntos de datos completos, los CDC se centran únicamente en cambios incrementales, garantizando que los sistemas de destino siempre tengan acceso a los datos más actuales disponibles.
En un proyecto de análisis en tiempo real, me enfrenté a importantes retrasos en los informes debido a las actualizaciones por lotes. Al cambiar a una solución CDC basada en registros, reduje drásticamente el retraso en la actualización de los datos, de horas a segundos, haciendo que el panel de análisis fuera realmente en tiempo real.
Con esta experiencia personal que subraya el valor práctico de la CDC, pasemos ahora a los distintos métodos utilizados para ponerla en práctica.
Métodos para aplicar la Captura de Datos de Cambios
Antes de sumergirte en técnicas específicas, es importante reconocer que no hay un enfoque único que se adapte a todos los escenarios. A continuación se exponen cuatro métodos habituales de CDC, cada uno con sus propias ventajas y desventajas.
CDC basado en registros
El CDC basado en registros lee los registros de transacciones de una base de datos (comúnmente denominados registros de escritura anticipada, o WAL) para identificar los cambios instantáneamente, en cuanto se producen. Este método es muy eficaz porque funciona a bajo nivel, captando los cambios con una interrupción mínima del sistema de producción.
- Ventajas: La baja sobrecarga del sistema y el rendimiento casi en tiempo real lo hacen ideal para entornos de gran volumen.
- Desventajas: Requiere acceso privilegiado a los registros de transacciones y depende de una configuración adecuada de retención de registros.
Por ejemplo, en PostgreSQL, puedes configurar la replicación lógica para capturar los cambios de la WAL:
-- Enable logical replication
ALTER SYSTEM SET wal_level = logical;
-- Create a logical replication slot to capture changes
SELECT pg_create_logical_replication_slot('cdc_slot', 'pgoutput');
-- Fetch recent changes from the WAL
SELECT * FROM pg_logical_slot_get_changes('cdc_slot', NULL, NULL);
Este enfoque permite a una herramienta CDC (como Debezium o AWS DMS, que exploraremos más adelante) transmitir continuamente los cambios de la base de datos a un sistema descendente sin depender de consultas programadas.
CDC basado en activadores
El CDC basado en desencadenantes utiliza desencadenantes de base de datos asociados a eventos de la tabla de origen (inserciones, actualizaciones o eliminaciones) para registrar automáticamente los cambios en cuanto se producen. Este método es sencillo para las bases de datos que admiten disparadores y proporciona una captura inmediata de los cambios; sin embargo, puede añadir carga adicional a la base de datos y complicar los cambios de esquema si no se gestiona con cuidado.
- Ventajas: Es fácil de implantar en bases de datos que admitan disparadores y garantiza la captura inmediata de los cambios.
- Desventajas: Puede añadir carga adicional a la base de datos y complicar los cambios de esquema si no se gestiona con cuidado.
El CDC basado en disparadores ofrece inmediatez, pero al coste potencial de una sobrecarga añadida, por lo que es más adecuado en entornos con volúmenes de transacciones moderados.
En PostgreSQL, puedes crear un disparador para registrar los cambios de una tabla customers
en otra tabla customers_audit
:
-- Create an audit table to store changes
CREATE TABLE customers_audit (
audit_id SERIAL PRIMARY KEY,
operation_type TEXT,
customer_id INT,
customer_name TEXT,
modified_at TIMESTAMP DEFAULT now()
);
-- Create a function to insert change records
CREATE OR REPLACE FUNCTION capture_customer_changes()
RETURNS TRIGGER AS $
BEGIN
IF TG_OP = 'INSERT' THEN
INSERT INTO customers_audit (operation_type, customer_id, customer_name)
VALUES ('INSERT', NEW.id, NEW.name);
ELSIF TG_OP = 'UPDATE' THEN
INSERT INTO customers_audit (operation_type, customer_id, customer_name)
VALUES ('UPDATE', NEW.id, NEW.name);
ELSIF TG_OP = 'DELETE' THEN
INSERT INTO customers_audit (operation_type, customer_id, customer_name)
VALUES ('DELETE', OLD.id, OLD.name);
END IF;
RETURN NULL; -- No need to modify original table data
END;
$ LANGUAGE plpgsql;
-- Attach the trigger to the customers table
CREATE TRIGGER customer_changes_trigger
AFTER INSERT OR UPDATE OR DELETE ON customers
FOR EACH ROW EXECUTE FUNCTION capture_customer_changes();
Este activador garantiza que cada INSERT
, UPDATE
, o DELETE
de la tabla customers
se registre en customers_audit
en tiempo real.
CDC basado en encuestas
El CDC basado en sondeo consulta periódicamente la base de datos de origen para comprobar si hay cambios basados en una columna de fecha y hora o de versión. Aunque este método evita la necesidad de acceder directamente a los registros de transacciones o a los activadores, puede introducir latencia porque los cambios sólo se detectan a intervalos fijos.
- Ventajas: Fácil de implementar cuando el acceso al registro o los activadores no están disponibles.
- Desventajas: Puede retrasar la captura de cambios y aumentar la carga si el sondeo es demasiado frecuente.
Este enfoque funciona bien en circunstancias en las que no se dispone de acceso en tiempo real a los registros, aunque la contrapartida es un ligero retraso en la detección de cambios.
Imagina una tabla products
con una columna version_number
que se incrementa en cada actualización:
SELECT *
FROM products
WHERE version_number > 1050
ORDER BY version_number ASC;
Aquí, 1050
es el último número de versión procesado del ciclo de sondeo anterior. Esto garantiza que sólo se obtengan los cambios nuevos sin depender de las marcas de tiempo, lo que lo hace más robusto cuando los relojes del sistema no son fiables.
CDC basado en marcas de tiempo
El CDC basado en marcas de tiempo se basa en una columna específica que registra la última hora de modificación de cada registro. Comparando estas marcas de tiempo, el sistema identifica los registros que han cambiado desde la comprobación anterior.
Este método es similar al CDC basado en sondeo, pero es más estructurado, ya que requiere un mecanismo explícito para seguir los cambios:
- El CDC basado en sondeo es un enfoque más amplio que consulta periódicamente los cambios utilizando cualquier patrón identificable (marcas de tiempo, números de versión u otros indicadores).
- El CDC basado en marcas de tiempo depende de una columna de marca de tiempo que debe mantenerse con precisión en la base de datos fuente.
Aunque es fácil de implementar cuando la base de datos actualiza automáticamente las marcas de tiempo, depende de la coherencia de los relojes del sistema y de la fiabilidad de las actualizaciones de las marcas de tiempo.
- Ventajas: Enfoque sencillo cuando los sistemas actualizan automáticamente las marcas de tiempo.
- Desventajas: La precisión depende de la sincronización coherente del reloj y de actualizaciones fiables de las marcas de tiempo.
Supongamos que tenemos una tabla orders
con una columna last_modified
que se actualiza cada vez que se inserta o modifica una fila. La siguiente consulta SQL recupera todos los cambios desde la última comprobación:
SELECT *
FROM orders
WHERE last_modified > '2025-02-25 12:00:00'
ORDER BY last_modified ASC;
Este método funciona bien cuando la base de datos actualiza automáticamente la marca de tiempo al modificarse, como cuando se utilizan disparadores o mecanismos integrados como DEFAULT now()
de PostgreSQL o ON UPDATE CURRENT_TIMESTAMP
de MySQL.
Tabla comparativa de métodos CDC
Aquí tienes una tabla comparativa que destaca las diferencias clave entre los cuatro métodos de Captura de Datos de Cambios (CDC):
Función |
CDC basado en registros |
CDC basado en activadores |
CDC basado en encuestas |
CDC basado en marcas de tiempo |
Cómo funciona |
Lee los registros de transacciones de la base de datos (WAL, binlog, etc.) para capturar los cambios en tiempo real. |
Utiliza disparadores de base de datos para registrar los cambios en una tabla de auditoría. |
Consulta periódicamente los cambios utilizando un número de versión u otros criterios. |
Compara las marcas de tiempo de una columna para detectar cambios. |
Latencia |
Casi en tiempo real (baja latencia). |
Inmediato (los activadores se ejecutan al instante). |
Intervalos programados (pueden introducir retrasos). |
Depende de la frecuencia de sondeo (latencia de baja a moderada). |
Gastos generales del sistema |
Bajo (no requiere consultar tablas). |
Alto (los activadores se ejecutan en cada cambio). |
Moderado (depende de la frecuencia de sondeo). |
De bajo a moderado (se basa en marcas de tiempo). |
Complejidad de la aplicación |
Alta (requiere acceso a los registros de transacciones y una conservación adecuada). |
Media-Alta (requiere crear activadores y mantener una tabla de auditoría). |
Bajo (se basa en simples consultas SQL). |
Bajo (sencillo si las marcas de tiempo se gestionan automáticamente). |
Requisitos de acceso |
Acceso privilegiado a los registros de transacciones. |
Requiere acceso DDL para crear activadores. |
No se necesita ningún acceso especial (SQL estándar). |
No se necesita ningún acceso especial (SQL estándar). |
¿Admite eliminaciones? |
Sí (capturado de los registros). |
Sí (si está registrado en la tabla de auditoría). |
Necesita un seguimiento adicional (por ejemplo, una tabla de supresión separada). |
Sólo si se utilizan borrados suaves (deleted_at). |
Mejor caso de uso |
Replicación de gran volumen en tiempo real, donde es crucial una carga mínima de la base de datos. |
Cargas de trabajo pequeñas y medianas que necesitan una captura instantánea de los cambios. |
Cuando el CDC y los activadores basados en registros no están disponibles, pero las actualizaciones periódicas son aceptables. |
Cuando las marcas de tiempo se actualizan automáticamente y es factible el sondeo frecuente. |
Herramientas comunes |
Debezium, AWS DMS, StreamSets, Striim, HVR |
Disparadores nativos de bases de datos (PostgreSQL, MySQL, SQL Server, Oracle) |
Apache Airflow, scripts ETL (Python, SQL) |
Trabajos ETL, canalizaciones de datos por lotes |
Casos prácticos para la captura de datos de cambios
Comprender los métodos es sólo la mitad de la historia; ver cómo el CDC aporta un valor tangible en escenarios del mundo real es igualmente importante.
Almacenamiento de datos en tiempo real
CDC permite actualizaciones continuas e incrementales de los almacenes de datos, propagando sólo los cambios en lugar de recargar conjuntos de datos completos. Este enfoque garantiza que las herramientas de inteligencia empresarial y los cuadros de mando muestren los datos más actuales.
Por ejemplo, una empresa minorista puede actualizar su panel de ventas casi en tiempo real para revelar rápidamente las tendencias y perspectivas emergentes.
Replicación de datos
CDC replica los datos entre sistemas garantizando que cualquier cambio realizado en el sistema de origen se refleje inmediatamente en las bases de datos de destino. Esto es especialmente útil durante los proyectos de migración de datos o cuando se mantienen copias de seguridad y réplicas en entornos híbridos.
Por ejemplo, replicar datos de sistemas locales a bases de datos en la nube, como AWS RDS o Snowflake, garantiza la coherencia entre plataformas.
Sincronización de datos
En los sistemas distribuidos -como los que incluyen microservicios o múltiples aplicaciones- el CDC garantiza que cada componente funcione con los datos más actualizados, sincronizando los cambios en tiempo real.
Por ejemplo, sincronizar la información de los clientes en varias plataformas mantiene una experiencia de usuario coherente en todos los ámbitos.
Auditoría y control de datos
Por último, CDC proporciona registros de cambios detallados que son esenciales a efectos de auditoría. Al rastrear quién hizo los cambios y cuándo se produjeron, los equipos pueden cumplir los requisitos normativos, solucionar problemas y realizar análisis forenses en profundidad.
Las instituciones financieras, por ejemplo, confían en los exhaustivos registros CDC para auditar las modificaciones de los datos de los clientes y garantizar el cumplimiento de las estrictas políticas de gobernanza de datos.
Herramientas para implantar la Captura de Datos de Cambios
Tras explorar los métodos y casos de uso, examinemos algunas herramientas populares que facilitan las implantaciones de CDC. La elección correcta depende de tu caso de uso -si necesitas streaming en tiempo real, migración a la nube o soluciones ETL empresariales.
Servicio de migración de bases de datos de AWS (DMS)
AWS DMS utiliza CDC basado en registros para replicar continuamente los datos de los sistemas locales a la nube de AWS con un tiempo de inactividad mínimo, lo que lo convierte en una opción excelente para las migraciones. AWS DMS es una solución sólida si tu objetivo es trasladar datos a la nube con un tiempo de actividad fiable.
Lo mejor para: Migraciones a la nube y arquitecturas basadas en AWS.
La arquitectura AWS DMS. Fuente de la imagen: AWS
Debezium
Debezium es una plataforma CDC de código abierto que captura y transmite los cambios de las bases de datos a sistemas como Apache Kafka.
Personalmente, He encontrado Debezium extremadamente útil para transmitir cambios de bases de datos a Kafka, especialmente en entornos distribuidos donde múltiples servicios dependen de actualizaciones en tiempo real. Su escalabilidad y capacidad de integración lo convierten en una opción destacada.
Lo mejor para: Flujo de datos en tiempo real y arquitecturas basadas en eventos.
La arquitectura de flujo de datos con Kafka Connect y Debezium. Fuente de la imagen: Debezium
Apache Kafka
Apache Kafka no es una herramienta CDC en sí misma, pero sirve como columna vertebral para procesar eventos CDC cuando se combina con herramientas como Debezium. Kafka permite canalizaciones fiables basadas en eventos, análisis en tiempo real y sincronización de datos entre varios consumidores.
Lo mejor para: Transmisión de datos CDC a arquitecturas basadas en eventos.
Para ilustrar cómo se pueden enviar eventos CDC a Kafka, considera el siguiente fragmento de Python. El código inicializa un productor Kafka y envía un evento CDC (que representa una operación de actualización en una tabla orders
) a un tema Kafka llamado cdc-topic
:
from kafka import KafkaProducer
import json
# Initialize the Kafka producer with bootstrap servers and a JSON serializer for values.
producer = KafkaProducer(
bootstrap_servers='localhost:9092',
value_serializer=lambda v: json.dumps(v).encode('utf-8')
)
# Define a CDC event that includes details of the operation.
cdc_event = {
"table": "orders",
"operation": "update",
"data": {"order_id": 123, "status": "shipped"}
}
# Send the CDC event to the 'cdc-topic' and flush to ensure transmission.
producer.send('cdc-topic', cdc_event)
producer.flush()
print("CDC event sent successfully!")
Talend e Informatica
Talend e Informatica son plataformas ETL completas que ofrecen funciones CDC integradas para capturar y procesar los cambios de datos, reduciendo las configuraciones manuales. Son especialmente ventajosas en escenarios complejos de transformación de datos, donde las soluciones integradas pueden simplificar las operaciones.
Lo mejor para: Soluciones ETL de nivel empresarial con CDC incorporado.
Soluciones CDC nativas para bases de datos
Varias bases de datos relacionales ofrecen funciones CDC nativas, lo que reduce la necesidad de herramientas externas:
- Replicación lógica PostgreSQL: Capta los cambios en la WAL y los transmite a los abonados.
- Captura de datos de cambios (CDC) de SQL Server: Utiliza registros de transacciones para realizar un seguimiento automático de los cambios.
- Replicación del registro binario MySQL (binlog): Registra los cambios con fines de replicación.
Lo mejor para: Minimizar la dependencia de herramientas CDC externas.
Google Datastream y Azure Data Factory
Los proveedores de la nube también ofrecen soluciones CDC para sus ecosistemas:
- Google Datastream: Un servicio de CDC y replicación totalmente gestionado para los usuarios de Google Cloud.
- CDC de Azure Data Factory: Habilita el seguimiento de cambios y la replicación para Azure SQL, CosmosDB y Synapse Analytics.
Lo mejor para: CDC en entornos Google Cloud o Microsoft Azure.
Retos y limitaciones de los CDC
Aunque el CDC ofrece importantes ventajas, también conlleva retos que deben gestionarse para una implantación fiable.
Tratar los problemas de integridad de los datos
Mantener la integridad de los datos puede ser un reto cuando hay interrupciones en la red, retrasos en las transacciones o fallos del sistema. Los protocolos sólidos de tratamiento de errores y las conciliaciones periódicas son vitales para evitar discrepancias entre los sistemas de origen y destino. Abordar estos problemas en una fase temprana ayuda a mantener una canalización de datos fiable.
Gastos generales de funcionamiento
Algunos métodos de CDC -sobre todo los que se basan en activadores o sondeos frecuentes- pueden introducir una carga adicional en las bases de datos de origen. Equilibrar la necesidad de actualizaciones casi en tiempo real con las limitaciones de rendimiento de tus sistemas de producción es clave para un funcionamiento sin problemas.
Gestión de transformaciones complejas de datos
Aunque el CDC capta eficazmente los cambios en bruto, puede ser necesario un procesamiento posterior adicional, como la limpieza o transformación de datos. Integrar la lógica de transformación sin retrasar las entregas ni introducir errores añade complejidad a la implementación del CDC, por lo que es necesaria una planificación cuidadosa.
Buenas prácticas para implantar los CDC
Llevar la teoría a la práctica requiere adherirse a las mejores prácticas. He aquí algunos consejos prácticos de mi experiencia que me ayudaron a construir sólidos canales de CDC.
Elige el método de aplicación adecuado
Selecciona un enfoque de CDC que se ajuste a tu volumen de datos, requisitos de latencia y arquitectura del sistema. El CDC basado en registros suele ser óptimo para entornos con muchas transacciones, mientras que los métodos basados en disparadores o sondeos pueden ser más adecuados para aplicaciones más pequeñas. Evaluar tus necesidades específicas por adelantado puede ahorrarte tiempo y recursos más adelante.
Supervisar trabajos
Implementa una supervisión exhaustiva mediante paneles de control en tiempo real y alertas automatizadas. Las revisiones periódicas de los registros y los controles de salud son esenciales para garantizar que cada cambio se captura con precisión y que cualquier problema se aborda con prontitud.
En un proyecto, un pequeño error de configuración del CDC basado en registros pasó desapercibido durante días, lo que provocó una pérdida silenciosa de datos en los análisis posteriores. La implementación de las alertas de Grafana ayudó a detectar al instante las actualizaciones que faltaban, evitando costosos errores.
Garantizar la calidad de los datos
Integra puntos de comprobación de validación de datos en el proceso de CDC para garantizar que sólo se propagan cambios precisos y coherentes.
Según mi experiencia, establecer comprobaciones de validación automatizadas en la canalización CDC me ahorró horas de depuración de problemas de propagación de datos incorrectos. Herramientas como dbt y Apache Airflow han sido fundamentales para imponer la coherencia en múltiples sistemas posteriores.
Probar las implementaciones antes del despliegue
Antes de pasar tu solución CDC a producción, pruébala a fondo en un entorno de ensayo. Simula cargas de trabajo del mundo real y escenarios de fallo, y valida funciones como la reversión y el viaje en el tiempo para asegurarte de que el sistema se comporta como se espera en todas las condiciones. Estas pruebas rigurosas son importantes para una puesta en producción sin problemas.
Gestionar estratégicamente la evolución del esquema
Tu sistema CDC debe adaptarse a los cambios de esquema sin interrupciones a medida que evolucionan tus conjuntos de datos. Utiliza herramientas que admitan la evolución automática del esquema y mantén un control de versiones adecuado para que los nuevos campos se integren sin problemas. Este enfoque estratégico evita errores inesperados y tiempos de inactividad cuando cambian las estructuras de datos.
Conclusión
Al capturar con precisión sólo los datos modificados, CDC minimiza la carga del sistema y permite que las aplicaciones de análisis y streaming en tiempo real funcionen correctamente. Tanto si implementas la replicación de datos, la sincronización o el registro de auditorías, seleccionar el método CDC adecuado y seguir las mejores prácticas es clave para construir una canalización de datos fiable y eficiente.
A quienes deseen profundizar sus conocimientos, les animo a explorar los siguientes cursos de DataCamp:
- Introducción a la Ingeniería de Datos - Aprende técnicas básicas para construir sólidos conductos de datos e integrar diversas fuentes de datos.
- Fundamentos de Big Data con PySpark - Adquiere experiencia práctica con Apache Spark y PySpark para procesar y analizar grandes conjuntos de datos.
- Ingeniero de Datos en Python - Construye pipelines de datos de extremo a extremo utilizando Python, con exposición práctica a herramientas como Apache Kafka para la integración de datos en streaming.
Feliz codificación y ¡a construir sistemas de datos resistentes y en tiempo real!
Conviértete en Ingeniero de Datos
Preguntas frecuentes
¿Cómo mejora el CDC el análisis en tiempo real en las arquitecturas de datos modernas?
CDC minimiza la necesidad de trabajos ETL masivos al capturar sólo los cambios incrementales de las bases de datos de origen. Esto garantiza que los cuadros de mando analíticos y las aplicaciones de streaming tengan siempre acceso a los datos más recientes, reduciendo la latencia y la carga del sistema.
¿Cuáles son los pasos prácticos para probar la implantación de un CDC antes de su despliegue completo?
Configura un entorno de ensayo para simular cargas de producción; supervisa la integridad de los datos, la latencia y la gestión de errores; y realiza pruebas de retroceso utilizando funciones de viaje en el tiempo, si están disponibles, para validar los procedimientos de recuperación.
¿Cómo puedo gestionar la evolución del esquema al utilizar CDC?
Incorpora el versionado de esquemas y pasos de validación automatizados en el pipeline CDC. Prueba los cambios de esquema en un entorno controlado para garantizar la compatibilidad con versiones anteriores, y aprovecha las herramientas CDC que admiten la evolución automática del esquema.
¿Qué herramientas o prácticas de supervisión recomiendas para los pipelines CDC?
Integra cuadros de mando (utilizando herramientas como Grafana) y sistemas de alerta para realizar un seguimiento de las métricas de ejecución del CDC. Las revisiones periódicas de los registros y las comprobaciones de estado automatizadas pueden ayudar a detectar a tiempo los cuellos de botella en el rendimiento o los problemas de calidad de los datos.
¿Qué método CDC debe elegirse para un entorno de gran volumen y baja latencia?
El CDC basado en registros suele ser la mejor opción para estos entornos, ya que lee directamente de los registros de transacciones de la base de datos (WAL) y minimiza el impacto en las cargas de trabajo de producción, proporcionando actualizaciones casi en tiempo real.
Ingeniero de datos con experiencia en Python y tecnologías en la nube Azure, especializado en la creación de canalizaciones de datos escalables y procesos ETL. Actualmente cursa una licenciatura en Informática en la Universidad de Tanta. Ingeniero de datos certificado por DataCamp con experiencia demostrada en gestión de datos y programación. Ex becario de Microsoft Data Engineer en la Iniciativa Digital Egypt Pioneers y Embajador de Microsoft Beta Student, dirigiendo talleres técnicos y organizando hackathons.
¡Aprende más sobre ingeniería de datos con estos cursos!
curso
Introduction to dbt
programa
Professional Data Engineer
blog
¿Qué es la gestión de datos? Guía práctica con ejemplos

Tim Lu
12 min
blog
La Guía de Certificación Kafka para Profesionales de los Datos

Adejumo Ridwan Suleiman
13 min

blog
¿Qué es el análisis de datos? Una guía experta con ejemplos
blog
Contratos de datos desmitificados: Todo lo que necesitas saber

Mike Shakhomirov
24 min

blog
¿Qué es la ciencia de datos? Definición, ejemplos, herramientas y más
blog