ETL Multi-Base de Datos con Docker, Python y Jupyter
Este repositorio contiene un pipeline completo de procesamiento de datos que integra cuatro tecnologías de bases de datos — MySQL, Cassandra, Redis y MongoDB — orquestadas mediante Docker Compose y controladas desde Python en Jupyter Notebooks.
El proyecto muestra cómo realizar operaciones ETL (Extracción-Transformación-Carga) moviendo y transformando datos entre sistemas heterogéneos, utilizando pandas y los conectores oficiales de cada base de datos.
Dataset utilizado
Tecnologías empleadas
- MySQL -> almacenamiento relacional inicial.
- Cassandra -> base de datos distribuida tipo wide-column.
- Redis -> caché/almacenamiento clave-valor.
- MongoDB -> almacenamiento documental.
- Docker Compose -> orquestación de los servicios.
- Python + Jupyter Lab -> control de los procesos ETL.
Contenido
- Archivo docker-compose.yml con los cuatro motores de bases de datos + contenedor Jupyter.
- Notebook ETL que lee datos desde MySQL, aplica transformaciones con pandas y los distribuye a Cassandra, Redis y MongoDB.
- Scripts de inicialización y configuración.
- Ejemplo de datos para pruebas.
Objetivo
Servir como guía práctica para comprender cómo integrar múltiples sistemas de bases de datos en un mismo pipeline ETL, facilitando el aprendizaje, la experimentación y la demostración de arquitectura de datos.
- Requisitos previos
Asegúrate de tener instalado:
Python 3.11
Jupyter Notebook o JupyterLab
- Crear y activar el environment
Ejecuta en la terminal:
conda create --name pipeline python=3.11
conda activate pipeline
- Instalar dependencias
Instala pip dentro del environment y luego los paquetes necesarios:
conda install pip
pip install sqlalchemy
pip install pandas
pip install pymongo
pip install redis
pip install numpy
pip install cassandra-driver
pip install mysql-connector-python
conda install mysql
pip install jupyter
pip install nbconvert
- Ejecutar el docker-compose.yml
-> Ejecutar docker desktop
-> Abrir una terminal de powershell
-> Posicionarte en la dirección del archivo docker-compose.yml
-> Ejecutar:
docker-compose up -d
- Ejecutar el notebook
Inicia Jupyter Notebook y abre:
-> mysql.ipynb
-> cassandra.ipynb
-> redis.ipynb
-> mongo.ipynb
Estructura del proyecto
PIPELINE_MULTIBASE_DOCKER_PYTHO.../
├── .vscode/
├── .gitignore
├── cassandra.ipynb
├── docker-compose.yml
├── Energy_consumption_dataset.csv
├── LICENSE
├── mongo.ipynb
├── mysql.ipynb
├── README.md
└── redis.ipynb
Creación Script
- Se ha transformado el .ipynb a .py con el comando:
-> jupyter nbconvert --to script mysqsl.ipynb
-> jupyter nbconvert --to script cassandra.ipynb
-> jupyter nbconvert --to script redis.ipynb
-> jupyter nbconvert --to script mongo.ipynb
- Se ha cambiado el nombre de mysql.py a data-sql-script.py por razones de compatibilidad
- Se ha cambiado el nombre de mysql.py a data-cassandra-script.py por razones de compatibilidad
- Se ha cambiado el nombre de mysql.py a data-redis-script.py por razones de compatibilidad
- Se ha cambiado el nombre de mysql.py a data-mongo-script.py por razones de compatibilidad
- Se han trasnformado todos los comandos display() dentro de cada archivo .py a print()
- Se ha fusionado el contenido de todos los archivos en un único script llamado pipeline.py
- Este script funciona en local