Los datos son el alma de toda organización, por lo que es esencial garantizar que las decisiones empresariales se basen en datos sin conflictos y en tiempo real. Los datos cambian constantemente, lo que puede provocar que las bases de datos, los lagos de datos y los almacenes de datos no estén sincronizados. Por otro lado, las organizaciones migran cada vez más a la nube, lo que aumenta las posibilidades de acabar con silos de datos. Esto ha llevado a que la captura de datos modificados (CDC, por sus siglas en inglés) se convierta en una solución popular para unir los entornos locales y en la nube y permitir que las empresas migren a la nube a su propio ritmo o sigan operando en un entorno híbrido. En este post, exploraremos qué es, cómo funciona, las principales funciones y métodos de Change Data Capture. ¡Vamos allá!
¿Qué es Change Data Capture o CDC?
Change Data Capture es un proceso de software que identifica y realiza un seguimiento de los cambios en los datos de una base de datos. Proporcionan movimiento de datos en tiempo real o casi en tiempo real, moviendo y procesando datos continuamente a medida que se producen nuevos eventos de base de datos.
Los CDC se pueden usar para capturar cambios en cualquier tipo de datos, incluidos los datos estructurados, semiestructurados y no estructurados. También se puede usar para capturar cambios en los datos de cualquier tipo de base de datos, incluidas bases de datos relacionales, bases de datos NoSQL y bases de datos en la nube.
¿Por qué es importante?
Los CDC son importantes porque permiten a las organizaciones:
Integración de datos en tiempo real: Es útil para integrar datos de diferentes fuentes en tiempo real. Esto es esencial para muchas aplicaciones, como la detección de fraude en tiempo real y el análisis de clientes. Por ejemplo, un banco podría usar CDC para integrar datos de su sistema de transacciones, sistema de cajeros automáticos y sistema de banca móvil para detectar transacciones fraudulentas en tiempo real.
Sincronización de datos: Se usa para sincronizar datos entre diferentes sistemas, como un almacén de datos y una base de datos de producción. Esto garantiza que todos trabajen con los mismos datos actualizados. Por ejemplo, una empresa minorista podría usar CDC para sincronizar los datos de su sistema de punto de venta con su almacén de datos para que pueda analizar los datos de ventas en tiempo real.
Auditoría de datos: Sirve para auditar los cambios en los datos de una base de datos. Esto puede ayudar a las organizaciones a identificar e investigar violaciones de datos y otros incidentes de seguridad. Por ejemplo, una compañía de atención médica podría usar los CDC para auditar los cambios en los datos de los pacientes para identificar cualquier acceso no autorizado o modificación.
Rendimiento mejorado: Mejora el rendimiento de los procesos de extracción, transformación y carga (ETL, por sus siglas en inglés) cargando solo los datos que han cambiado desde que se ejecutó el último trabajo de ETL. CDC puede reducir significativamente el tiempo que se tarda en cargar datos en un almacén de datos u otro sistema de destino. Por ejemplo, una empresa de telecomunicaciones podría usar CDC para cargar datos de su sistema de facturación en su almacén de datos para que pueda generar informes sobre los patrones de uso de los clientes.
Costos reducidos: Reduce costos de integración y almacenamiento de datos al reducir la cantidad de datos que deben procesarse y almacenarse.
El CDC se utiliza a menudo junto con los procesos de ETL para cargar datos en un almacén de datos u otro sistema de destino. Los procesos ETL generalmente se ejecutan por lotes, lo que significa que cargan todos los datos del sistema de origen en el sistema de destino a la vez. Este puede ser un proceso lento, especialmente para grandes conjuntos de datos.
CDC se puede usar para reducir el tiempo que se tarda en cargar datos en un sistema de destino cargando solo los datos que han cambiado desde que se ejecutó el último trabajo de ETL. Esto puede ahorrar una cantidad significativa de tiempo, especialmente para grandes conjuntos de datos.
Funcionamiento de Change Data Capture
Cuando los datos se modifican (mediante INSERT, UPDATE o DELETE) en la base de datos de origen que suele ser una base de datos relacional como MySQL, Microsoft SQL, Oracle o PostgreSQL, es necesario propagarlos a sistemas posteriores como una caché, un índice de búsqueda, un almacén de datos o un lago de datos. En términos generales, existen dos tipos de CDC: push y pull.
O bien la base de datos de origen envía las actualizaciones a los servicios y aplicaciones posteriores, o bien los servicios y aplicaciones posteriores consultan la base de datos de origen a intervalos fijos para extraer los datos actualizados. Cada opción tiene sus ventajas e inconvenientes.
Enfoques Push y Pull
El enfoque Push: En este enfoque, la base de datos de origen hace el trabajo pesado. Implementa la lógica y los procesos para capturar los cambios en la base de datos y, a continuación, envía esas actualizaciones a los sistemas de destino para que puedan tomar las medidas oportunas.
La ventaja de este método es que los sistemas de destino se actualizan con los datos más recientes casi en tiempo real. La desventaja es que los datos modificados se pierden si los sistemas de destino están inaccesibles o desconectados. Para remediarlo, se suele implementar un sistema de mensajería entre los sistemas de origen y destino, de modo que los cambios no se pierdan hasta que se envíen a sus destinos finales.
El enfoque Pull: En este método, el trabajo de la base de datos de origen es más ligero que en el método push, ya que solo registra los cambios de datos en una columna de cada tabla. Es responsabilidad de los sistemas de destino sondear continuamente la base de datos de origen para recuperar los cambios y tomar las medidas al respecto.
Al igual que en el método push, se necesita un sistema de mensajería entre los sistemas de origen y destino para garantizar que los datos modificados no se pierdan cuando los sistemas de destino no estén disponibles. La desventaja de este método es que los sistemas de destino no serán notificados inmediatamente si los datos cambian. Dado que los cambios se producen por lotes entre las solicitudes pull, habrá un desfase antes de que los sistemas de destino se enteren de estos cambios.
Métodos de Captura de Datos Modificados
Hay dos métodos principales de CDC.
Basado en disparadores (triggers): Los CDC basados en disparadores usan disparadores de bases de datos para capturar cambios en los datos. La mayoría de las bases de datos admiten funciones de activación. Se trata de procedimientos almacenados que se ejecutan automáticamente una vez que se produce un evento específico en una tabla, como insertar, actualizar o eliminar un registro.
Se necesita un disparador para cada operación por tabla para capturar cualquier cambio en los datos. Cuando se activa un disparador, inserta un registro en una tabla de cambios (suele denominarse tabla sombra o tabla de eventos) en la misma base de datos. La tabla de cambios contiene información sobre el cambio, como la tabla que se cambió, la fila que se cambió y el tipo de cambio que se realizó.
Adicionalmente, los desarrolladores pueden incluir sistemas de mensajería para que estos cambios de datos se publiquen en colas a las que se suscriban los sistemas de destino pertinentes.
- Ventajas: Puede detectar y capturar todo tipo de cambios (INSERT, UPDATE y DELETE) en los registros. Los desencadenadores se utilizan ampliamente y son compatibles con la mayoría de las bases de datos.
- Desventajas: Afecta negativamente al rendimiento de la base de datos de origen, ya que la actualización de registros requiere múltiples escrituras. Requiere cambios en el esquema de la base de datos de origen.
Basado en registros (logs): El CDC basado en registros analiza el registro de transacciones de la base de datos para capturar los cambios en los datos. El registro de transacciones contiene un registro de todos los cambios realizados en la base de datos. Los CDC basados en registros se pueden usar para capturar cambios en los datos en tiempo real. Dado que los sistemas de destino pueden leer los registros de transacciones, este método no impone una sobrecarga computacional a las bases de datos de origen.
Estos registros se utilizan principalmente con fines de copia de seguridad y recuperación en caso de desastre, pero también pueden utilizarse para propagar los cambios a los sistemas de destino.
- Ventajas: No añade sobrecarga computacional a las bases de datos de origen. Puede detectar y capturar todo tipo de cambios (INSERT, UPDATE y DELETE) en los registros. No es necesario cambiar el esquema de las bases de datos de origen.
- Desventajas: No hay estandarización en torno al formato de los registros de transacciones. Esto significa que cada proveedor opta por aplicar su propia metodología, que podría cambiar en futuras versiones. Los sistemas de destino tienen que identificar y eliminar cualquier cambio que se haya escrito en las bases de datos de origen y luego se haya revertido.
Basado en fecha y hora (timestamp): Los diseñadores de bases de datos pueden añadir una columna al esquema de las tablas que refleje la hora del cambio más reciente. Esta columna puede llamarse LAST_MODIFIED, LAST_UPDATED, etc. Las aplicaciones o sistemas posteriores pueden consultar este campo y obtener los registros que se han actualizado desde la última hora de ejecución.
- Ventajas: Es fácil de usar e implementar.
- Desventajas: Solo puede procesar borrados suaves y no operaciones DELETE. Añade sobrecarga computacional al sistema de origen, ya que los sistemas de destino tienen que escanear cada fila de la tabla para identificar los últimos valores actualizados.
En el siguiente ejemplo se muestra la tabla cuando se crea un nuevo registro y cuando se actualiza el registro.
Desafíos del Change Data Capture
Los CDC pueden ser un proceso complejo de implementar y administrar. Algunos de los desafíos de los CDC incluyen:
- Rendimiento: Tienen un impacto negativo en el rendimiento de la base de datos de origen. Esto se debe a que los sistemas CDC necesitan monitorear la base de datos en busca de cambios, lo que puede agregar sobrecarga.
- Complejidad: Son complejos de implementar y administrar, especialmente para bases de datos grandes y complejas.
- Costo: Pueden ser costosos de comprar y mantener.
¿Cómo elegir una solución Change Data Capture?
Al elegir una solución Change Data Capture, hay una serie de factores a considerar, que incluyen:
- El tipo de base de datos: Las soluciones CDC están disponibles para una variedad de tipos de bases de datos diferentes. Es importante elegir una solución CDC que sea compatible con el tipo de base de datos que está utilizando.
- El volumen de datos: Tienen la capacidad manejar diferentes volúmenes de datos. Es importante elegir una solución CDC que pueda manejar el volumen de datos que necesita capturar.
- Los requisitos de latencia: Facilitan la entrega de datos con diferentes niveles de latencia. Es importante elegir una solución CDC que pueda satisfacer sus requisitos de latencia.
- El presupuesto: Pueden variar en precio. Es importante elegir una solución CDC que se ajuste a su presupuesto.
Conclusión
Change Data Capture es una herramienta eficaz que se puede utilizar para mejorar el rendimiento, la eficiencia y la seguridad de los procesos de integración y almacenamiento de datos. Sin embargo, es importante considerar cuidadosamente los desafíos y costos antes de implementar una solución CDC. Se puede usar para capturar cambios en los datos en tiempo real, lo que lo hace ideal para muchas aplicaciones, como la detección de fraude en tiempo real y el análisis de clientes.
Descubre mucho más sobre desarrollo en nuestro canal de YouTube. ¡Suscríbete!