top of page
  • Fredy Antonio Espitia Castillo

¿Qué es Talend CDC? - Demostración de Réplica Estándar

Updated: Mar 30, 2023

Talend CDC (Change Data Capture) es una herramienta que realiza un proceso de integración de datos, que replica y además sincroniza datos desde una fuente a diferentes destinos en tiempo real.

Muchas veces se requiere que mantengamos nuestras bases de datos sincronizadas y son diferentes los casos de uso que pueden ser solucionados con CDC como por ejemplo:

  • Tener nuestro DWH alineado con los últimos datos de nuestras fuentes transaccionales.

  • Nuestra arquitectura híbrida necesita mantener el ambiente onpremise alineado con entorno cloud.

  • Tenemos un sistema de replicación que consume mucho rendimiento, en el que necesitamos realizar consultas complejas sobre algunas columnas específicas de nuestros datos para saber si es un nuevo registro, si ha sufrido cambios o fue eliminado.

  • Estamos usando nuestra base de datos transaccional como fuente de reportes, y por ende afectamos su rendimiento.

  • Le gustaría tener un backup online.

  • Quiere una base de datos distribuida.

  • Entre otros.


CDC puede ser usado en diferentes ambientes: onpremise, híbrido o cloud, y cuenta con conectores a los diferentes proveedores cloud como son Snowflake, AWS, o Azure, y servicios gestionados como Kafka, AWS kinesis o Azure Eventhub; adicionalmente cuenta con conectores y soporte onpremise como IBM(AS400), que es usado frecuentemente por entidades financieras y lo hace único en el mercado.


¿Cómo funciona?


CDC identifica los diferentes cambios que hayan en la fuente y los replica en los destinos, estos datos replicados provienen de las diferentes operaciones realizadas como:

  • INSERT

  • DELETE

  • UPDATE

Las fuentes de datos que están produciendo cambios, tienen la capacidad de almacenar logs con los eventos de transacciones que se han realizado sobre los datos, estos logs pueden ser en diferentes formatos, pues varían de acuerdo al fabricante.

El agente CDC actúa monitoreando y recolectando esos eventos transaccionales una vez, para almacenarlos en sus propios archivos de logs (Journal), esto, en caso de que sea necesario reusarlos en diferentes Jobs de replicación o de alguna otra manera, sin embargo, este proceso es ajeno a los recursos del sistema y no interactúa con ellos.

En los casos en los que ya tengamos una base de datos creada y poblada como fuente, necesitaremos hacer solo una replicación completa, ya que de ese punto hacia adelante Talend CDC capturará los cambios realizados. Es posible aplicar scripts a los datos en la fuente para seleccionarlos, transformarlos o realizar agregaciones como también aplicar cambios en el destino previo a la integración.

Su configuración es realizada en una consola gráfica en la que seleccionamos nuestra fuente y destino, esta opera con diferentes roles como:

  • Administrador

  • Operador

  • Espectador

Las réplicas son creadas en un ambiente y allí se llamarán modelos, un modelo contiene las fuentes y destinos; una vez configurados, podemos agregar opciones adicionales para estos, como por ejemplo, programar las ejecuciones, cambiar el framework con el que hacemos la integración, o supervisar el job a través de logs dentro de la herramienta, o fuera de ella en archivos de log.

Existen diferentes frameworks con los que CDC puede hacer replicaciones de datos, cada uno de ellos cuenta con capacidades adicionales como agregar columnas en el destino, brindar transformaciones, agregar identificadores de secuencias, o incluso para trabajar con destinos de big data.


 
Demo de una réplica Estándar

Configuraciones Iniciales

En este blog enseñaré una réplica estándar, por lo que seleccionaremos como framework “Free”, lo que significa que no se agregarán columnas o datos adicionales a los que ya se encuentran en la fuente, estaré usando la versión de Talend Change Data Capture V 7.15.0

Para este ejemplo ya tengo creadas las bases de datos fuente y destino en SQL Server a la cuales nombré “training_source” y “training_target”, y en la fuente tengo una tabla llamada “students” mientras que en el destino no he creado nada aún. Así mismo, la configuración de Talend CDC hacia la fuente y los diferentes componentes necesarios para el correcto funcionamiento de la herramienta ya se encuentran instalados, estos son:

  • Motor de Captura

  • Motor de Fuente

  • Motor de destino

  • Gestor de Talend CDC

  • Conector ODBC 32 bits para SQL Server en el DSN (Data Source Administrator)

  • SQL Server

Comencemos:

Iniciamos configurando la fuente en el menú File -> Source subscribe y diligenciaremos los datos de acuerdo con nuestra configuración de la fuente:

  • Name (Alias): El nombre que quiera

  • IP address: Es la ubicación del motor de origen de CDC donde se definió la conexión de la instancia de base de datos, esta configuración se realizó durante la instalación y configuración de CDC

  • Source type: El motor de la BD fuente

  • Instance or Server name: El que esté configurado en tu servidor

Luego notaremos como en la fuente nos mostrará “TrainingSource” con un botón verde que nos servirá para conectarnos a esta:

Una vez nos conectamos y veremos cómo se muestran los diferentes ambientes configurados donde podremos crear los modelos, para este ejemplo usaremos Training como nuestro ambiente:

Ahora configuramos el journal, por lo que vamos al menú Source -> Journal Management

  • Presionar clic derecho sobre la DB creada training_source y elegimos la opción “Start DB logging process

  • Luego podremos seleccionar un directorio en el que queramos almacenar el journal y presionamos Ok.

Aún en el Journal Management hay que seleccionar la tabla que queremos monitorear y clic derecho sobre esta y presionar la opción “Start table logging process for”:


Nota: Debe existir una llave primaria configurada en la tabla para iniciar el proceso de monitoreo sobre esta


Después de iniciar el proceso de monitoreo sobre la tabla “students” necesitamos verificar que el journal está funcionando, para esto vamos a hacer un leve cambio sobre alguno de los registros de esta tabla:


Nota: Hemos cambiado la ciudad John Doe de New York a Miami

Ahora nuevamente desde el Journal Management clic derecho sobre training_sourcey Display Journal”:

Veremos el único receiver disponible por el cambio que acabamos de realizar:

Lo seleccionamos y vamos a la pestaña “Posts” y desde allí veremos los cambios que se realizaron:

Nota: Se observa el cambio de ciudad, el primer registro es “New York” y el segundo es “Miami” lo que nos garantiza el correcto funcionamiento del journal.


Crear Réplica:

El primer paso es crear un espacio de configuración dentro de un ambiente, cada réplica dentro de un mismo ambiente comparte los mismos parámetros que las demás y pueden ser administradas juntas.

En la pestaña “Environment” clic sobre “Add” y diligenciamos los campos como el siguiente ejemplo:

  • Environment: Código único del ambiente que se creará

  • Source code: Código único para la fuente, debe ser de 3 caracteres

  • Environment type: Para este ejemplo es “Training”

  • Description: Se recomienda agregar descripción

Clic sobre “Add” y tendremos el ambiente creado:

Nota: El ambiente contiene una una pestaña para fuente donde se crea el modelo y otra pestaña del destino, adicionalmente tres pestañas donde se mostrarán propiedades de la replicación, y elementos gráficos de la réplica para la visualización del proceso.


Me aseguro de estar en la pestaña “Source” y presiono clic derecho sobre “Models” y luego en “Add”:

Y configurar el modelo de la siguiente manera:

Nota: Se observan dos pestañas adicionales “Table Options” y “Script” a las cuales dejaremos por default.

  • Model: Un código único para el modelo

  • Description: Descripción del modelo

  • Type: Para esta replicación usamos JOURNAL, sin embargo existe EXTRACT que permite una extracción full

Clic en “Add” y el modelo estará disponible dentro del folder “Models” en la pestaña “Source” del “Environment”:

El siguiente paso es agregar Tablas al modelo, expandiendo el Modelo en el botón [+], luego clic derecho sobre “Tables” y finalmente clic en “Add

Una ventana aparecerá para seleccionar las tablas que agregaremos al modelo:

Nota: Como se puede observar, estamos usando el framework “Free” que no genera cambios adicionales a nuestros datos

  1. Con el botón “Query” podremos listar todas las tablas disponibles

  2. Seleccionar las tablas, en este caso “students”

  3. Mover la tabla seleccionada al modelo

  4. Finalizar

La tabla aparecerá creada dentro de nuestro modelo:

El siguiente paso es crear el destino, desde la pestaña “Target” de nuestro ambiente damos clic derecho en “Targets” y luego “Add”:


Se abrirá la ventana para el nuevo Target:

  • Target: Código único para el destino

  • Description: Descripción del destino

  • Target type: valor por default

  • Name: Nombre de la instancia de nuestra base de datos destino

  • Address: dirección del servidor donde está la base de datos destino

  • Exclude: se llena automáticamente en cuanto ponemos el nombre de la instancia

Entonces clic en “Add” y veremos nuestro target creado:

El siguiente paso es crear una distribución que significa asociar nuestro modelo a un destino, lo podemos realizar desde la pestaña “Source” o “Target”; expandir nuestro target creado y clic sobre “Distribute”:

Y movemos el Modelo desde el panel izquierdo al derecho y clic sobre “Ok”:

Una ventana se abrirá automáticamente para finalizar la configuración de la distribución:

  1. Seleccionar el tipo de base de datos

  2. Doble clic sobre el conector

  3. Se abrirá una ventana para ingresar los datos de nuestra base de datos de destino

  4. Clic en “Ok” para agregarla

Si la conexión es correcta, una ventana de notificación nos mostrará “Connection Successful” y nos mostrará las bases de datos disponibles allí, y finalmente clic en “Add”:

Podemos ver ahora desde la pestaña “Map” cómo el target T01 está asociado al modelo M01:

El siguiente paso es crear la tabla destino, entonces desde la pestaña “Target” damos clic en el modelo “M01” luego seleccionar la tabla a replicar, clic derecho sobre esta y finalmente “Create Target Table”:

Luego de esto veremos que una nueva ventana aparece, mostrando el DDL de la nueva tabla usando la instancia de la base de datos de destino:

Clic en “Execute” y luego chequeamos en la base de datos de destino para evidenciar que la tabla fue creada allí, pero se encuentra vacía:


Ejecutar Réplica:

Ahora que ya está creado el target, el modelo y la distribución, debemos ejecutar la réplica; desde la pestaña “Map” clic derecho sobre el Modelo M01 y luego clic en “Properties”:

Desde la pestaña “Recovery” seleccionamos el check box “Load”:

Luego vamos a la pestaña “Activity”, una ventana de confirmación nos pedirá si deseamos recargar todas las tablas en esa distribución, a lo que diremos “Yes”.


Ahora desde la pestaña “Activity” clic sobre el botón “Start”:

Después de iniciar la replicación, los campos de la sección “Counters” y “Last operation” nos mostrarán los resultados y así mismo la distribución quedará activa y a la espera de algún cambio que ocurra en la fuente para replicarlo automáticamente a menos de que deseemos detenerla:

Nota: Como se observa, tenía 3 registros en la fuente y esos mismos fueron seleccionados, enviados y agregados.


Cuando el modelo esté activo, será de color verde, de lo contrario será amarillo, o puede ser rojo si se encuentran errores durante la ejecución:

Ahora se debe revisar en la tabla destino para evidenciar que los registros fueron replicados:

Finalmente detenemos la replicación dando clic derecho sobre el modelo que aparece en verde y clic en “Stop” y de esa manera finalizamos la réplica estándar.

 

En resumen:

Talend CDC nos permite diferentes modos y ofrece muchas más características para la replicación en tiempo real; en el ejemplo anterior realizamos una replicación simple con los mismos campos en fuente y destino dentro del mismo servidor, así como una ejecución manual dado que pueden ser también programadas.

En los próximos posts, enseñaré otras características o funciones con las que Talend CDC trabaja, además de evidenciar las diferencias con otros frameworks allí disponibles.




Fredy Antonio Espitia Castillo

Talend Developer Certified

Recent Posts

See All

Comments