Saltar al contenido

Migra datos a MongoDB con Apache Hop

Descubre cómo transferir tus datos a MongoDB utilizando Apache Hop. Explora un proceso de migración fluido en esta publicación informativa.

Introducción

Para aquellos que no lo conocen, Apache Hop es un proyecto de software de código abierto que te ayuda a preparar y mover datos entre diferentes sistemas de manera fácil y eficiente. Piensa en él como un superhéroe que puede transformar datos desordenados y caóticos en datos ordenados y organizados que pueden ser fácilmente comprendidos y utilizados por otros programas.

Ahora, para aquellos que están familiarizados con Apache Hop, ya saben que es una herramienta versátil que se puede utilizar para realizar una amplia gama de tareas de procesamiento de datos. Con Apache Hop, puedes crear canalizaciones de datos que automatizan el movimiento y la transformación de datos, ahorrándote tiempo y esfuerzo mientras garantizas que tus datos sean precisos y consistentes.

El Desafío: Migrar Datos Relacionales a una Base de Datos MongoDB

MongoDB and Apache Hop
 

Migrar datos a MongoDB puede ser una tarea desafiante, especialmente cuando se trata de grandes cantidades de datos de diferentes fuentes. Uno de los principales desafíos es mapear los datos desde la fuente hacia la base de datos de destino. Esto puede implicar la conversión de tipos de datos, la reestructuración de datos y el manejo de inconsistencias entre los esquemas de origen y destino.

Otro desafío es asegurar que los datos se migren de manera precisa y sin pérdidas. Cualquier error u omisión durante el proceso de migración puede resultar en inconsistencias de datos, lo que lleva a análisis y toma de decisiones incorrectos.

Tener un proceso simplificado para la migración de datos es importante porque puede ahorrar tiempo y reducir el riesgo de errores. También puede garantizar la consistencia y precisión de los datos, lo que lleva a un mejor análisis de datos y toma de decisiones. Un proceso simplificado puede automatizar muchas de las tareas de migración, reduciendo la necesidad de intervención manual y minimizando el riesgo de error humano. Además, un proceso simplificado se puede repetir fácilmente para futuras migraciones, ahorrando tiempo y esfuerzo.

Sí, definitivamente es posible simplificar el proceso de migración de datos a MongoDB utilizando Apache Hop.

Comprendiendo MongoDB y Apache Hop

MongoDB y su modelo de datos

MongoDB es una popular base de datos NoSQL orientada a documentos que está diseñada para almacenar y gestionar datos no estructurados y semi-estructurados. El modelo de datos de MongoDB se basa en un formato de documento flexible llamado BSON (Binary JSON), que permite estructuras de esquema dinámicas y estructuras de datos anidadas.

En MongoDB, un documento es una unidad de datos que consiste en un conjunto de pares clave-valor. Cada documento se almacena en una colección, que es similar a una tabla en un sistema de base de datos relacional tradicional. A diferencia de las tablas, las colecciones de MongoDB no imponen un esquema fijo, lo que significa que los documentos dentro de una colección pueden tener estructuras y campos diferentes.

Plugins de Apache Hop para MongoDB

Apache Hop ofrece una amplia gama de plugins que facilitan la integración de datos. Entre estos plugins se encuentran los plugins de entrada y salida de MongoDB, que están diseñados para agilizar el proceso de lectura y escritura de datos en bases de datos MongoDB.

Con el plugin de entrada de MongoDB, los usuarios pueden extraer fácilmente datos de colecciones de MongoDB, mientras que el plugin de salida de MongoDB proporciona una forma sencilla de cargar datos en colecciones de MongoDB.

Configuración del entorno

Aquí están los pasos para configurar el entorno para usar Apache Hop con MongoDB:

  1. Instala Apache Hop:

    • Descarga la última versión estable de Apache Hop desde el sitio web oficial https://hop.apache.org/download.html

    • Extrae el archivo descargado en un directorio de tu elección.

    • Apache Hop no requiere instalación, simplemente ejecuta el script hop-ui ubicado en el directorio bin para iniciar la aplicación.

  2. Instala MongoDB:

    • Descarga la última versión estable de MongoDB desde el sitio web oficial Descargar MongoDB Community Server

    • Sigue la guía de instalación proporcionada para tu sistema operativo específico para instalar MongoDB en tu máquina.

  3. Instala un cliente de MongoDB:

    • Hay muchos clientes de MongoDB disponibles para elegir, como Compass, Studio 3T, Robo 3T y más.

    • Elige un cliente de MongoDB de tu elección y sigue la guía de instalación proporcionada para tu sistema operativo específico para instalarlo en tu máquina.

  4. Crear una conexión de MongoDB en Apache Hop:

    • Abre Apache Hop y navega hasta la perspectiva de Metadata -> New -> MongoDB Connection O selecciona New -> MongoDB Connection.

       
    • En la ventana Nueva conexión de MongoDB (New MongoDB Connection), especifica un nombre para la conexión y proporciona los detalles de conexión necesarios, como el nombre del servidor, el puerto, los detalles de autenticación y más, según la configuración específica de MongoDB. Usa un archivo de configuración para tu entorno con las variables de conexión.
      Apache Hop - MongoDB Connection
    • Prueba la conexión haciendo clic en el botón de Test para asegurarte de que Apache Hop pueda conectarse a tu instancia de MongoDB.

      Apache Hop - Test Connection
    • Una vez establecida la conexión, puedes usarla para leer o escribir en MongoDB dentro de Apache Hop.

Migración de datos de una base de datos relacional a MongoDB

El modelo de base de datos relacional

Vamos a utilizar una base de datos de ejemplo de PostgreSQL. La base de datos dvdrental representa los procesos comerciales de una tienda de alquiler de DVD, incluidos los datos sobre las películas, los actores y los datos demográficos del personal.

dvdrental PostgreSQl database

 

Para mantener el grafo más pequeño, solo elegiremos algunas de las entidades más relevantes para nuestro ejemplo.
dvdrental database schema fragment

 

Mapea el modelo de PostgreSQL a MongoDB
 

Para mapear la base de datos dvdrental de PostgreSQL a un modelo de MongoDB, puedes seguir estos pasos generales:

  1. Analiza el esquema y las relaciones de la base de datos dvdrental para entender las entidades, atributos y relaciones que deben ser modeladas en MongoDB.

  2. Diseña un esquema de documento para cada entidad basado en el análisis, considerando los tipos de datos, cardinalidad y relaciones entre entidades.

  3. Utiliza una herramienta o escribe un script para migrar los datos de PostgreSQL a MongoDB, transformando los datos para que coincidan con el esquema de documentos de MongoDB.

  4. Carga los datos en MongoDB.

Con Apache Hop no necesitas crear manualmente el esquema de MongoDB. Con el transformador "MongoDB output", el esquema se genera automáticamente a partir de los campos de entrada. Esto significa que puedes enfocarte en diseñar tus procesos ETL y mapear tus datos, en lugar de dedicar tiempo a configurar el esquema de la base de datos. Esta automatización facilita y agiliza la exportación de tus datos desde Apache Hop a MongoDB, permitiéndote realizar tus tareas de análisis y visualización de datos de manera más rápida y eficiente.

Para nuestro ejemplo, utilizaremos las tablas actor, film y film_actor. El mapeo será el siguiente:

Ejemplo de documento film

MongoDB film document example

 

Ejemplo de documento film

MongoDB actor document example
 
Ejemplo de documento film
MongoDB film_actor document example

 

En este ejemplo, cada tabla en la base de datos dvdrental se mapea a una colección en MongoDB.

 

Screenshot 2024-02-29 at 10.17.28

 

La colección film contiene toda la información sobre una película.

La colección actor contiene información sobre cada actor, y la colección film_actor es una colección de unión que conecta a los actores con las películas en las que actuaron.

📓 Ten en cuenta que este es solo un ejemplo de cómo puedes mapear la base de datos dvdrental a un modelo de MongoDB. La estructura específica y los tipos de datos utilizados pueden depender de tus requisitos específicos y caso de uso.

Pero, ¿necesito una colección para la relación entre actor y película?

En MongoDB, existen dos enfoques principales para modelar relaciones entre documentos: documentos incrustados y referencias.

En el caso de la relación entre actores y películas, hay diferentes factores a considerar para decidir qué enfoque tomar:

  • Tamaño de las colecciones: Si se espera que las colecciones sean relativamente pequeñas, entonces incrustar los datos de relación dentro de las colecciones de actores y películas podría ser una buena opción. Sin embargo, si se espera que las colecciones sean muy grandes, podría ser mejor tener una colección separada para los datos de relación para evitar un tamaño excesivo de documento y mejorar el rendimiento de las consultas.
  • Consistencia de los datos: Si optas por incrustar los datos de relación dentro de las colecciones de actores y películas, debes asegurarte de que los datos sean consistentes y estén actualizados. Por ejemplo, si se actualiza el nombre de un actor, debes asegurarte de que el cambio se refleje en todas las películas en las que apareció. En cambio, si optas por utilizar referencias, los datos de relación se almacenan en una colección separada, y los cambios en las colecciones de actores y películas no afectarán a estos.
  • Complejidad de la consulta: Si incrustas los datos de relación dentro de las colecciones de actores y películas, algunas consultas pueden ser más simples y rápidas, ya que puedes recuperar toda la información que necesitas en una sola consulta. Por otro lado, si utilizas referencias, es posible que necesites realizar múltiples consultas y unir los datos para recuperar la información que necesitas.
Basándote en estos factores, ambas opciones tienen sus ventajas y desventajas, y la decisión dependerá de las necesidades específicas de tu aplicación.
 

Paso a paso

Nuestros objetivos son:

  1. Extraer datos de la base de datos relacional utilizando un transformador "Table input".
  2. Transformar los datos con los plugins de transformación necesarios.
    Por ejemplo, queremos eliminar todos los caracteres de comillas (") del campo special_features {"Deleted Scenes", "Behind the Scenes"}. El transformador "Replace in String" se puede utilizar para lograr esto.
  3. Cargar los datos transformados en MongoDB utilizando el plugin "MongoDB output".

Los datos ahora pueden importarse en la base de datos MongoDB. Utilizando un transformador "Table input", un "Replace in String" y un "MongoDB output", empleamos una canalización de Apache Hop para cargar los datos de películas:


Apache Hop - MongoDB write pipeline

Usando una conexión PostgreSQL y el transformador "Table input", recuperamos los datos de la base de datos dvdrental:

SELECT 
    f.film_id, 
    f.title, 
    f.description, 
    f.release_year, 
    f.language_id, 
    f.rental_duration, 
    f.rental_rate, 
    f.length, 
    f.replacement_cost, 
    f.rating, 
    f.last_update AS film_last_update, 
    f.special_features, 
    f.fulltext 
FROM 
    public.film f;

La transformación Entrada de tabla (Table input) se configura como sigue:

Apache Hop - Table input

Utiliza la opción Vista previa (Preview) para ver los datos que se van a exportar. La imagen muestra un fragmento de la vista previa:

Apache Hop - Preview data

 

¿Próximo paso? Eliminar las comillas del campo special_features.

Apache Hop - Preview data

 

¿Cómo? Agrega y conecta un transformador "Replace in String". Para configurar el transformador "Replace in String", primero selecciona el campo que necesita ser modificado. Luego, agrega el carácter de comilla que se debe buscar y deja el campo de reemplazo en blanco.
 
Apache Hop - Replace in String
 

Ahora podemos proceder con la configuración de la importación de la base de datos MongoDB. Con el transformador "MongoDB output", podemos ingresar fácilmente datos en la base de datos dvdrental.

Agrega y conecta un transformador "MongoDB output". En la primera pestaña, establece un nombre único y descriptivo para tu canalización, y selecciona la conexión MongoDB y la colección. Además, puedes configurar el tamaño de inserción por lotes, seleccionar la opción "Truncate collection" para eliminar los datos actuales, etc.

Apache Hop - MongoDB output

 

En la segunda pestaña, puedes agregar fácilmente los campos del documento seleccionando la opción "Get fields".
 
Apache Hop - MongoDB output

 

Agrega y configura un nuevo transformador "MongoDB output" para las otras dos colecciones: film y film_actor. Configúralos eligiendo el nombre de la colección y seleccionando los campos de la colección.

La canalización resultante debería verse como la siguiente imagen:

Apache Hop - MongoDB write pipeline

 

Ahora la canalización está lista para ser ejecutada. Ejecuta la canalización, verifica las métricas y los registros, y verifica que los datos se hayan importado en tu base de datos MongoDB.

Si tu canalización se ejecuta correctamente, obtendrás la colección de películas que contiene los datos extraídos de la base de datos PostgreSQL.

Apache Hop - Logging

 

Puedes configurar otras 2 canalizaciones: una para los datos de actores y otra para los datos de film_actor. Estas canalizaciones pueden incorporarse en un único flujo de trabajo, lo que te permite ejecutar las tres canalizaciones simultáneamente.

El pipeline actor

Apache Hop - MongoDB write pipeline

El pipeline film_actor 

Apache Hop - MongoDB write pipeline

El flujo de trabajo main-read

Apache Hop - MongoDB write workflow

 

La base de datos dvdrental MongoDB
 

Vamos a explorar la base de datos dvdrental de MongoDB que acabas de cargar.

dvdrental MongoDB database

La base de datos contiene 200 documentos de actores, 1000 documentos de películas y 5462 documentos de actores de películas. 

Colección actor

MongoDB collection actor

 

Colección film

MongoDB collection film

Colección film_actorMongoDB collection film_actor

Observaciones

  1. El ejemplo proporcionado es un ejemplo simple que utiliza tres tablas de la base de datos dvdrental para demostrar los pasos básicos involucrados en la migración de datos de una base de datos relacional a MongoDB. Estos pasos pueden ser utilizados para migrar datos desde cualquier base de datos relacional a una implementación de MongoDB. Sin embargo, dependiendo de la complejidad o tamaño de los modelos de datos, los usuarios pueden requerir una implementación diferente utilizando Inyección de Metadatos y/o ejecución de Canalizaciones/Flujos de trabajo.
  2. La implementación de la migración de datos de una base de datos relacional a MongoDB depende del mapeo entre el modelo relacional y el modelo de MongoDB. Este mapeo define cómo se traducen las tablas, columnas y relaciones de la base de datos relacional en colecciones, documentos y documentos incrustados en MongoDB.
  3. En el próximo post, cubriremos un ejemplo de cómo utilizar el transformador "MongoDB input" en Apache Hop para extraer datos de una base de datos MongoDB y cargarlos en una base de datos relacional. ¡Así que mantente atento para eso!

Migración de datos desde otras fuentes a MongoDB

¿Tu datos están en otro formato o fuente? ¡No te preocupes, Apache Hop te tiene cubierto! Además de las entradas de bases de datos relacionales, Apache Hop incluye varios plugins de transformación para diferentes formatos de entrada como Excel, CSV, JSON, XML, y muchos otros. También puedes leer datos de diversas fuentes, como FTP, HTTP y servicios REST. Para obtener más información sobre los plugins de entrada/salida de Apache Hop, consulta la Documentación Oficial.

Conclusión

Algunos de los beneficios de usar Apache Hop para la migración de datos a MongoDB son:

  1. Facilidad de uso: Apache Hop ofrece una interfaz gráfica de usuario intuitiva que simplifica el proceso de migración y elimina la necesidad de programación compleja.
  2. Soporte para múltiples fuentes de datos: Apache Hop admite una amplia gama de bases de datos relacionales, lo que permite migrar datos desde varias fuentes a MongoDB.
  3. Robustez: Apache Hop puede manejar conjuntos de datos grandes y transformaciones de datos complejas.
  4. Reutilización: Los flujos de trabajo y canalizaciones creados en Apache Hop pueden ser fácilmente reutilizados para futuras migraciones de datos o proyectos de integración de datos.

Desde Datavin3, te animamos a probar Apache Hop para sus propias necesidades de migración de datos. Con su interfaz de usuario amigable, y soporte para una amplia gama de fuentes y destinos de datos, Apache Hop facilita la migración de datos a MongoDB y otras plataformas.

Apache Hop puede ayudar a agilizar tu proceso de migración de datos y garantizar la precisión y la integridad de tus datos. Entonces, ¿por qué no probarlo y ver cómo puede beneficiar a tu organización?