Nº19 · Almacenamiento
MinIO
Almacenamiento de objetos compatible con S3, para montar tu propio data lake.
¿Qué es?
MinIO es un sistema de almacenamiento de objetos open-source, compatible con la API de Amazon S3. Guarda archivos (objetos) dentro de buckets, igual que S3, pero corriendo en tu propio servidor o máquina. Es la capa física donde viven los datos crudos de un data lake — por debajo de los formatos y los motores.
Es importante no confundirlo con una base de datos: MinIO no entiende SQL ni tablas. Solo almacena y sirve archivos de forma masiva, durable y escalable. La estructura (Parquet, Iceberg) y las consultas (Trino, Spark) son otras capas que se apoyan encima de él.
¿Para qué sirve?
- Montar un data lake propio. Guardas los archivos (normalmente Parquet) de tu lake en MinIO, on-premise o en local, sin depender de un cloud.
- Backend de almacenamiento para lakehouse. Tablas Iceberg o Delta guardan sus datos como objetos en MinIO.
- Compatibilidad S3 sin la nube. Como habla la API de S3, herramientas como Spark, Trino o DuckDB leen y escriben en MinIO sin cambiar una línea — ideal para desarrollo local o entornos cerrados.
¿Cuándo usarla / cuándo no?
Úsalo cuando necesitas almacenar archivos a escala (un lake, backups, artefactos) y quieres la compatibilidad S3 sin atarte a un proveedor cloud — o para tener S3 en tu laptop mientras desarrollas.
Piénsalo dos veces para:
- Datos estructurados que consultas con SQL: eso es trabajo de una base de datos (PostgreSQL) o un motor (Trino) — MinIO solo guarda los archivos, no los consulta.
- Necesitas el formato, no el almacén: si lo que buscas es cómo guardar los datos eficientemente, eso es Parquet (formato), no MinIO (dónde se guardan).
- Ya estás en la nube con S3/GCS/Azure Blob gestionados: ahí MinIO añade operación que quizás no necesites.
Empieza en 1 minuto
Levanta MinIO en local con Docker (consola web + API S3 en el puerto 9000):
docker run -d -p 9000:9000 -p 9001:9001 \
-e MINIO_ROOT_USER=admin \
-e MINIO_ROOT_PASSWORD=admin12345 \
minio/minio server /data --console-address ":9001"
Abre la consola en http://localhost:9001 (usuario admin, clave admin12345), crea un bucket y sube un archivo. Desde Python puedes usar el mismo cliente de S3:
pip install boto3
import boto3
s3 = boto3.client("s3", endpoint_url="http://localhost:9000",
aws_access_key_id="admin", aws_secret_access_key="admin12345")
s3.create_bucket(Bucket="lake")
s3.upload_file("ventas.parquet", "lake", "ventas.parquet")
Trivia rápida — pon a prueba lo que acabas de leer.
¿Qué tanto sabes de MinIO?
Documentación oficial
La fuente de verdad vive ahí. Acá orientamos; la profundidad la pones tú.
Abrir documentación oficial ↗Qué aprender después
Ver tambiénApache Parquet
El formato columnar que hace barata y rápida la analítica sobre archivos.
Apache Iceberg
Tablas con garantías de base de datos sobre tu data lake.
Apache Spark
El motor distribuido para procesar datos a gran escala.
Nº19 · Actualizado 2026-06-25