Este es el tercer post de la serie dedicada a Oracle GoldenGate. En este caso, vamos a ver cómo implementar un proceso de replicación entre una base de datos Oracle y un bus de eventos Kafka, utilizando Oracle GoldenGate Classic y Oracle GoldenGate for Big Data.

Objetivo: notificaciones

En el post anterior, hemos conseguido disponer de dos vistas de lectura en Postgresql para poder separar los modelos de la base de datos principal, Oracle, utilizándose únicamente para acciones de escritura.

El siguiente hito para Negocio y su iniciativa de abrir productos para empresas es realizar un envío de notificaciones a los nuevos clientes para darles la bienvenida. Es decir, cada vez que se inserte un nuevo cliente en la base de datos, se enviará la notificación.

Para ello, se decide actuar de forma similar al caso anterior pero, en vez de replicar los datos en una nueva base de datos, se van a enviar a un bus de eventos. Una vez la información llega al bus de eventos, se podrá recoger en un futuro cercano por un servicio que se encargará de la generación y envío de las notificaciones.

Diseñando el proceso de notificaciones

En el diseño de este proceso tenemos que tener en cuenta:

¿Qué “GoldenGates” necesitaremos?

Teniendo en cuenta estos puntos y siguiendo con el producto Oracle GoldenGate, tenemos que añadir una nueva pieza al sistema: Oracle GoldenGate for Big Data.

Oracle GoldenGate for Big Data nos va a posibilitar el envío de los datos correspondientes a nuevos clientes a un bus de eventos.

La siguiente imagen muestra cómo será la arquitectura a implementar teniendo en cuenta las dos fuentes a manejar:

Definiendo los elementos del proceso

El proceso de replicación, como se ha comentado anteriormente, solo va a constar de la etapa de CDC ya que no es necesaria una carga inicial. El origen de los datos va a ser la base de datos Oracle y el destino, va a ser Kafka.

Teniendo en cuenta esto, en la siguiente tabla podemos ver los diferentes componentes que necesitaremos:

ETAPA TIPO ELEMENTO UBICACIÓN FUNCIÓN NOMBRE IMPLE.
CDC EXTRACT GG Classic Extraer, de forma continua, los cambios realizados en Oracle y crear el trail local ecdcbd
CDC DATA PUMP GG Classic Procesar el trail local y generar el trail remoto para enviar al destino pcdcbd
CDC REPLICAT GG Big Data Procesar el trail remoto (recibido desde GG Classic) y publicar el evento con los datos del nuevo cliente en el bus de eventos rcdcbd

La siguiente imagen muestra los distintos elementos a implementar:

Manos a la obra: implementando el proceso de replicación

Durante los siguientes puntos, vamos a pasar a la práctica. Para que el post sea más legible, el detalle de cada paso lo encontraremos en el fichero Readme del repositorio asociado.

Creando la infraestructura base

Lo primero que tenemos que hacer es crear la infraestructura que soportará el caso de uso. Lo haremos sobre AWS y está compuesta principalmente por:

El detalle de estos pasos lo encontraremos en el apartado del Readme correspondiente a la creación de la infraestructura.

Preparando la bases de datos para la replicación

Al igual que hicimos en el post anterior, para que el proceso de replicación sea posible es necesario configurar la base de datos origen. Además, crearemos un usuario propio para GoldenGate, “oggadm1” y le daremos los privilegios necesarios.

Para ejecutar este paso iremos al apartado del Readme correspondiente a la preparación de la base de datos origen para la replicación.

Si vemos el diagrama de arquitectura final, en este punto tendríamos los siguientes elementos implementados:

Instalando las dos versiones de Oracle GoldenGate

Ya tenemos las fuentes de datos de origen y destino preparadas y las máquinas virtuales EC2 listas. Ahora tenemos que instalar las dos versiones de Oracle GoldenGate, la correspondiente al lado origen para Oracle, y la correspondiente al lado destino para Big Data.

Oracle GoldenGate Classic

Para instalar y configurar Oracle GoldenGate Classic para Oracle tenemos que seguir los pasos indicados en el apartado correspondiente del fichero Readme del repositorio.

En este apartado, vamos a ver los siguientes puntos:

Oracle GoldenGate for Big Data

Para instalar y configurar Oracle GoldenGate for Big Data tenemos que seguir los pasos indicados en el apartado “Instalando Oracle GoldenGate For Big Data” del fichero Readme del repositorio.

En este apartado, vamos a ver los siguientes puntos:

Ahora ya tenemos todos los componentes de la infraestructura listos para usar:

Implementando el proceso de replicación

Una vez que tenemos creada la infraestructura y GoldenGate instalado en cada máquina EC2, tenemos que implementar el proceso de replicación que hemos diseñado anteriormente. Debemos recordar que consiste únicamente en la etapa de CDC.

Implementando el proceso de CDC en Origen

De forma similar a como se hizo en el anterior post, es necesario implementar los componentes extract y data pump en el lado de GoldenGate Classic.

A la hora de crear estos elementos debemos tener en cuenta que Negocio indica en sus requisitos que solo se deben publicar los cambios correspondientes a clientes nuevos. Por lo tanto, vamos a indicar en el extract que se ignoren las actualizaciones y los borrados.

Se podría hacer también a nivel de replicat en destino, pero consideramos que así reducimos el tráfico al enviarse sólo los cambios correspondientes a nuevos clientes.

Para crear estos dos elementos, tenemos que seguir las instrucciones detalladas en apartado asociado al proceso de replicación del fichero Readme.

Una vez implementados, tendríamos completa la parte del lado origen:

Creando el replicat en GoldenGate for Big Data

El siguiente paso es publicar los cambios en el bus de eventos. Para ello, necesitamos configurar el replicat en Oracle GoldenGate for Big Data. Este replicat simplemente utilizará un conector para publicar los cambios en Kafka.

Para ello tenemos que seguir las instrucciones detalladas en apartado asociado a la creación del replicat del fichero Readme.

En este punto ya tenemos todos los elementos del proceso implementados y arrancados:

Probando el proceso de replicación

Una vez que hemos implementado todos los pasos, solo nos queda probar el proceso de replicación en tiempo real, comprobando cómo se publican los cambios en el bus de eventos.

En este caso tenemos que comprobar los requisitos expresados por Negocio, indicando que solo se deben publicar los cambios correspondientes a clientes nuevos.

Para ello, tenemos que probar que al insertar una nueva fila en la tabla de Oracle sí se manda un mensaje a Kafka, pero si actualizamos o eliminamos esa fila, no se recibe nada en Kafka.

Para realizar este proceso, al igual que en apartados anteriores, nos vamos a apoyar en el apartado de pruebas del fichero readme del repositorio de código.

Destruyendo la infraestructura

Una vez terminado el caso de uso, podemos proceder a la destrucción de la infraestructura que hemos creado en AWS. Para ello, realizamos los pasos explicados en el apartado correspondiente a la destrucción del entorno del fichero readme.

Conclusión

En este post hemos visto cómo se puede usar Oracle GoldenGate para replicar datos desde un origen (Oracle) a Kafka.

Mediante esta replicación conseguimos que los datos correspondientes a los cambios se publiquen en el bus de eventos y puedan estar disponibles a los diferentes consumidores para implementar cualquier tipo de caso de uso.

Cuéntanos qué te parece.

Enviar.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.