Sin categoría

De MySQL a Couchbase con Talend ETL

Couchbase ofrece una base de datos NoSQL única que combina tecnología integrada de caché y almacenamiento. NoSQL está ganando una fuerte popularidad y varios clientes buscan exportar o mapear algunos de los datos que tienen en RDBMS a Couchbase NoSQL; aquí es donde se puede aprovechar la oferta de Talend.

Talend ofrece una serie de capacidades en torno a la integración, desde la gestión de procesos empresariales hasta el bus de servicios empresariales y la gestión de datos maestros. La nueva versión 5.3 de Open Studio for Big Data de Talend contiene un conector Couchbase, que permite un gran número de escenarios en los que Couchbase Server puede utilizarse junto con fuentes de datos analíticas y operativas tradicionales.

Para proporcionarle una idea básica sobre cómo configurar y utilizar Talend con Couchbase Server, le guiaré a través de un escenario simple para crear un flujo de trabajo ETL utilizando el software Talend Open Studio para exportar datos desde el servidor de base de datos MySQL a un servidor de base de datos Couchbase utilizando el formato de documento JSON. El flujo de trabajo leerá desde una tabla de base de datos MySQL y creará los documentos JSON correspondientes en el servidor Couchbase. Puedes construir sobre este ejemplo y aumentarlo para soportar escenarios más complejos que involucren transformaciones de datos, mapeos complejos, etc. Los siguientes pasos han sido probados en CentOS pero pueden ser adaptados para otros sistemas.

Así que empecemos...

Requisitos previos

En primer lugar, veamos los requisitos previos que necesitas para instalarlo:

Inicio

Ahora, vamos a asegurarnos de que todo se inicia

  • Inicie MySQL, si no lo ha hecho ya:
    • sudo service mysqld start
  • Inicie Couchbase, si aún no lo ha hecho:
    • sudo /etc/init.d/couchbase-server start
  • Lanzamiento de Talend Open Studio para Big Data:
    • Ejecute el siguiente comando o similar (según el directorio de instalación y la versión): /opt/TOS_BD-r101800-V5.3.0/TOS_BD-linux-gtk-x86_64

Cree

Ahora, vamos a utilizar Talend Open Studio para crear el flujo de trabajo ETL

  • Después de lanzar Talend, haga clic en el botón Crear e introduzca un nombre de proyecto como "MySQLToCouchbaseIntegration" y haga clic en Finalizar.
  • Seleccione el proyecto creado y haga clic en el botón Abrir

talend-open-studio-for-big-data

 

  • Cree una cuenta en Talend o haga clic en el botón Saltar, esto abrirá el IDE
  • Espere a que finalice la inicialización del IDE y cierre o minimice la ventana de bienvenida
  • En el panel Repositorio, haga clic con el botón izquierdo en Diseños de trabajos y, a continuación, haga clic con el botón derecho en Crear trabajo
  • Introduzca el nombre del trabajo, como "MySQLToCouchbaseIntegrationJob" y haga clic en Finalizar.

 talend-mysql-to-couchbase-integration

 

  • Esto creará un panel donde los artefactos de trabajo pueden ser arrastrados y soltados y debe mostrar la paleta a la derecha.
  • Desde la paleta, arrastre y suelte el widget tMyslInput (se encuentra en Bases de datos/MySQL) a la izquierda

 talend-job-myql-to-couchbase

 

  • Desde la paleta, arrastre y suelte el widget tCouchbaseOutput (se encuentra en Bases de datos/Couchbase) a la derecha

  • Ambos componentes requieren archivos jar que no se suministran con el software Talend. Talend dispone de una wiki en la que se explica cómo añadir archivos jar. A veces, los archivos jar pueden descargarse directamente del IDE o pueden descargarse manualmente y cargarse en Talend haciendo clic en el símbolo jar (el que tiene el tooltip "Añadir JAR externos") en el panel Módulos.

 talend-modules

  • Los tarros deben cargarse / resolverse antes de pasar a los siguientes pasos. Ver información detallada
  • Haga doble clic en tMysqlInput en el panel; esto mostrará el panel de componentes en la parte inferior
  • Introduzca la información de conexión a la base de datos MySQL en el panel. Tenga en cuenta que todos los campos deben ir entre comillas dobles (es decir, ")
  • Haga clic en el botón ... que se encuentra a la derecha del nombre de la tabla, expanda el mundo y seleccione la entrada Ciudad y haga clic en el botón Aceptar.
  • Elimine la consulta por defecto y sustitúyala por "SELECT * FROM Ciudad".
  • A continuación se muestra una captura de pantalla de ejemplo del aspecto que debería tener:

talend-basic-settings

  • Haga clic en el botón Adivinar esquema, aparecerá la ventana Esquema, mueva y redimensione la ventana según convenga
  • Edite el esquema con los siguientes cambios:
    • Comprobar Nullable para ID
    • Comprobar si la población es nula
    • Cambiar el tipo de ID a cadena
    • Introduzca los siguientes tipos de base de datos y haga clic en el botón OK
      • INT para ID
      • VARCHAR para Nombre
      • VARCHAR para CountryCode
      • VARCHAR para Distrito
      • INT para Población
  • A continuación se muestra una captura de pantalla de ejemplo del aspecto que debería tener:

 talend-schema

  • Haga click izquierdo en tMysqlInput y luego click derecho para seleccionar Fila / Principal y arrastre la flecha desde el componente tMysqlInput al componente tCouchbaseOutput. Una flecha debe ser creada entre los dos.

 tmysql-input_1

  • Haga clic con el botón izquierdo del ratón en tCouchbaseOutput en el panel; se mostrará el panel de componentes en la parte inferior.
  • Introduzca la información de conexión a la base de datos Couchbase en el panel. Tenga en cuenta que todos los campos deben ir entre comillas dobles (es decir, ")
  • En este ejemplo, el nombre del cubo es por defecto y no tiene autenticación configurada por lo que el nombre de usuario y la contraseña se dejan con ""
  • El URI debe introducirse haciendo clic en el botón + y cambiando el campo por el URI de la piscina, como http://localhost:8091/pools.
  • La clave debe dejarse en ID (por defecto) y la acción sobre los datos en Insertar
  • A continuación se muestra una captura de pantalla de ejemplo del aspecto que debería tener:

 talend-component

  • Haga clic en el botón Configurar árbol JSON...; aparecerá un mapeador que permite asignar el esquema de la tabla a JSON.
  • Seleccione Todos los atributos del esquema (usando multi-selección) en la lista izquierda del esquema y suéltelos sobre la etiqueta raíz en la ventana de enlace a la derecha y seleccione Crear como sub-elemento del nodo destino, luego haga click en el botón OK.
  • El resultado debería ser el siguiente:

talend-tcouchbaseoutput_1

  • Seleccione el atributo ID en la ventana de destino de enlace de la derecha y haga clic con el botón derecho del ratón en Establecer como elemento de bucle y, a continuación, haga clic en el botón Aceptar.

talend-tcouchbaseoutput_1-loop-element

 

  • Si todo va bien, ambos iconos del panel Designer no deberían mostrar ningún signo de error, en cuyo caso ya podemos ejecutar el trabajo
  • Haga clic en el panel Ejecutar, esto construirá el trabajo y ejecutarlo
  • Acceda a su cubo del servidor Couchbase y compruebe que se han cargado los documentos: http://localhost:8091/index.html#sec=buckets
  • Esto debería haber añadido 4079 documentos al cubo por defecto:

 talend-data-buckets

  • Puede desglosar y consultar documentos individuales:

 talend-default-documents

  • ¡Voilà!

Como se ha indicado, pueden construirse escenarios mucho más complejos, y próximamente presentaremos ejemplos más elaborados.

Envíe sus comentarios y opiniones a alexis@couchbase.com

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Alexis Roos

Alexis Roos es director de ingeniería sénior en Salesforce. Alexis cuenta con más de 20 años de experiencia en ingeniería de software y los últimos cinco años se ha centrado en la ciencia y la ingeniería de datos a gran escala, trabajando para SI en Europa, Sun Microsystems/Oracle y varias startups, como Radius Intelligence, Concurrent y Couchbase.

10 Comentarios

  1. Gracias. Me preguntaba cómo alimentar couchbase con algunos datos externos. eso es una primera parte de una buena respuesta. Tal vez útil para una migración de una sola vez. Pero ¿qué pasa con un proceso de integración continua?

    1. Hola,

      En realidad, dependerá del tipo de fuente de datos y de las características disponibles en la propia fuente (o en la herramienta que se encuentre sobre ella).
      Por ejemplo en el "mundo" de Oracle puedes usar cosas como DCN (Database Change Notification), Golden Gate para escuchar los cambios en la base de datos y enviar los datos a Couchbase. (Necesito algo de tiempo para escribir algo de código sobre esto)

      No sé si las herramientas ETL pueden usar esto pero desde tu código sí.

      Saludos
      Remolcador

      1. Wilbert Klinton julio 22, 2015 a 1:30 pm

        Es un gran placer dar una opinión sobre ETL
        herramientas. Son muy importantes y útiles para todas las personas de todo el mundo.
        mundo.

        ETL

    2. Para la exportación continua, puede hacer un seguimiento del último ID insertado y filtrar la importación en función de él.
      De hecho Talend ofrece un componente para MySQL para leer el último ID insertado: tMysqlLastInsertId
      Encontrará más información en la Guía de referencia de componentes de Talend Open Studio.

      Saludos,

      Alexis

    3. Talend proporciona un componente de captura de datos de cambios (CDC) con su suscripción empresarial. Para la mayoría de las bases de datos, se trata de un activador y no de un registro. El propio componente CDC puede programarse para ejecutarse en cualquier intervalo de sondeo que se desee. Entonces enviaría los registros delta a la fuente de datos de Couchbase. Esto funciona para muchos casos de uso, pero es más "tiempo de negocio" que tiempo real. Si bien no es una ejecución nocturna por lotes, no debe considerarse una solución "en tiempo real" para diseños de baja latencia.

      Ed Ost

  2. Buena herramienta - No puedo esperar a usarla para mi próxima migración de Mysql a couchdbase.

  3. Gracias Alexis por las instrucciones.
    Mi problema es que Couchbase ignora la definición del esquema "INT para población".
    El documento tiene este aspecto, después de ejecutar el ETL-Job:
    {
    \"ID": \"ciudad:1000",
    \"Tipo": \"ciudad",
    \"Nombre": \Taman
    \Código de país \IDN
    \"Distrito": \"Java Oriental",
    \Población: \"107000\"
    }

    Supongo que debería ser así:
    Población sin comillas. Motivo: Para utilizar la función _sum reduce.

    {
    \"ID": \"ciudad:1000",
    \"Tipo": \"ciudad",
    \"Nombre": \Taman
    \Código de país \IDN
    \"Distrito": \"Java Oriental",
    \Población: 107000
    }

    1. Wilbert Klinton agosto 10, 2015 a 7:38 pm

      Es un gran placer dar una opinión sobre ETL
      herramientas. Son muy importantes y útiles para todas las personas de todo el mundo.
      mundo. Las herramientas ETL son útiles para todos y ayudan a transformar cualquier dato en
      cualquier base de datos de forma rápida, fácil y cómoda.
      ETL

  4. P1: ¿Cómo establecer un valor estático cuando se añade el enlazador al nodo de destino?
    P2: ¿Cómo asignar un valor entero a un valor entero (no cadena) de Couchbase?

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.