Tecnología CDC

En las bases de datos, la captura de datos modificados (CDC) es un conjunto de patrones de diseño de software que se utilizan para determinar y rastrear los datos que han cambiado para que se puedan tomar medidas utilizando los datos modificados.

CDC es un enfoque para la integración de datos que se basa en la identificación, captura y entrega de los cambios realizados en las fuentes de datos empresariales.

CDC ocurre a menudo en entornos de almacenamiento de datos, ya que capturar y preservar el estado de los datos a lo largo del tiempo es una de las funciones principales de un almacenamiento de datos, pero CDC se puede utilizar en cualquier base de datos o sistema de depósito de datos.

 

¿Qué es la captura de datos modificados?

La captura de cambios de datos (CDC) es el proceso de reconocer cuándo se han cambiado los datos en un sistema de origen para que un proceso o sistema posterior pueda realizar ese cambio. Un caso de uso común es reflejar el cambio en un sistema de destino diferente para que los datos en los sistemas permanezcan sincronizados.

 

Hay muchas formas de implementar un sistema de captura de datos modificados, cada una de las cuales tiene sus beneficios. Esta publicación explicará algunas implementaciones comunes de CDC y discutirá los beneficios y las desventajas de usar cada una. Esta publicación es útil para cualquier persona que desee implementar un sistema de captura de datos modificados, especialmente en el contexto de mantener los datos sincronizados entre dos sistemas.

 

¿Cómo se ejecutan?

Hay dos formas principales de operar los sistemas de captura de datos modificados. O bien el sistema de origen envía los cambios al destino, o bien el destino sondea periódicamente el origen y extrae los datos modificados.

Los sistemas basados ​​en push a menudo requieren más trabajo para el sistema de origen, ya que necesitan implementar una solución que comprenda cuándo se realizan los cambios y enviar esos cambios de manera que el destino pueda recibirlos y actuar sobre ellos. El sistema de destino simplemente necesita escuchar los cambios y aplicarlos en lugar de sondear constantemente la fuente y realizar un seguimiento de lo que ya ha capturado. Este enfoque a menudo conduce a una latencia más baja entre el origen y el destino porque tan pronto como se realiza el cambio, se notifica al destino y puede actuar de inmediato, en lugar de sondear los cambios.

 

La desventaja

La desventaja del enfoque basado en push es que, si el sistema de destino está inactivo o no escucha los cambios por cualquier motivo, los perderá. Para mitigar esto, se implementan sistemas basados ​​en colas entre el origen y el destino para que el origen pueda publicar cambios en la cola y el destino lea de la cola a su propio ritmo. Si el objetivo necesita dejar de escuchar la cola, siempre que recuerde dónde estaba en la cola, puede detenerse y reiniciarse donde lo dejó sin perder ningún cambio.

Los sistemas basados ​​en extracción a menudo son mucho más simples para el sistema de origen, ya que a menudo requieren que se registre que se ha producido un cambio, generalmente mediante la actualización de una columna en la tabla. El sistema de destino es entonces responsable de extraer los datos modificados solicitando cualquier cosa que crea que ha cambiado.

 

El beneficio

El beneficio de esto es el mismo que el enfoque basado en la cola mencionado anteriormente, en el sentido de que, si el objetivo alguna vez encuentra un problema, debido a que está realizando un seguimiento de lo que ya extrajo, puede reiniciar y continuar donde lo dejó sin ningún problema.

La desventaja del enfoque de extracción es que a menudo aumenta la latencia. Esto se debe a que el objetivo tiene que sondear el sistema de origen en busca de actualizaciones en lugar de que se le informe cuando algo ha cambiado. Esto a menudo conduce a que los datos se extraigan en lotes, desde grandes lotes extraídos una vez al día hasta muchos lotes pequeños extraídos con frecuencia.

La regla general es que, si está buscando construir un sistema de procesamiento de datos en tiempo real, entonces se debe usar el enfoque de inserción. Si la latencia no es un gran problema y necesita transferir un gran volumen de actualizaciones masivas, entonces se deben considerar los sistemas basados ​​en extracción.

La siguiente sección cubrirá los aspectos positivos y negativos de una serie de diferentes mecanismos de CDC que utilizan el enfoque de empujar o tirar.

¿Cómo implementar el CDC?

Hay muchas maneras de implementar un sistema de captura de datos modificados. La mayoría de los patrones requieren que el sistema de origen indique que se ha producido un cambio en algunos datos, por ejemplo, actualizando una columna específica en una tabla de la base de datos o colocando el registro modificado en una cola. Luego, el sistema de destino tiene que buscar la actualización en la columna y buscar el registro modificado o suscribirse a la cola.

Una vez que el sistema de destino tiene los datos modificados, debe reflejarlos en su sistema. Esto podría ser tan simple como aplicar una actualización a un registro en la base de datos de destino. Esta sección desglosará algunos de los patrones más utilizados. Todos los mecanismos funcionan de manera similar; sin embargo, es cómo se implementa lo que cambia.

 

  1. Versionado de filas

El control de versiones de filas es un patrón común de CDC. Funciona incrementando un número de versión en la fila de una base de datos cuando se modifica. Supongamos que tiene una base de datos que almacena datos de clientes. Cada vez que se crea o actualiza un registro para un cliente en la tabla de clientes, se incrementa una columna de versión. La columna de versión solo almacena el número de versión de ese registro y le indica cuántas veces ha cambiado.

 

  1. Actualizar marcas de tiempo

En mi experiencia, las marcas de tiempo de actualización son los mecanismos CDC más comunes y simples de implementar. Similar a la solución de control de versiones de filas, cada vez que cambia un registro en la base de datos, actualiza una columna. En lugar de que esta columna almacene el número de versión del registro, almacena una marca de tiempo de cuándo se modificó el registro.

Con esta solución, pierde un poco de datos adicionales, ya que ya no sabe cuántas veces se ha cambiado el registro, pero si esto no es importante, los beneficios posteriores valen la pena.

 

  1. Colas de publicación y suscripción

El patrón de publicación y suscripción (pub/sub) es el primer patrón que utiliza un enfoque de inserción en lugar de extracción. Las soluciones de control de versiones de filas y de marca de tiempo de actualización requieren que el sistema de destino «extraiga» los datos que han cambiado, en un modelo de publicación/suscripción, el sistema de origen empuja los datos modificados.

 

  1. Escáneres de registros de bases de datos

Este método implica configurar el sistema de base de datos de origen para que registre cualquier modificación realizada en los datos dentro de la base de datos. La mayoría de las tecnologías de bases de datos modernas tienen algo como esto incorporado. Es una práctica bastante común tener bases de datos de réplica por varias razones, incluidas las copias de seguridad o la descarga de un gran procesamiento de la base de datos principal. Estas bases de datos de réplica se mantienen sincronizadas mediante el uso de estos registros. Cuando se realiza una modificación en el maestro, registra la declaración en el registro y la réplica ejecuta el mismo comando y los dos permanecen sincronizados.