No guardes fotos en MySQL (y por qué S3 existe, con MinIO como plan B)


23 de abril de 2026

Hay un momento en la vida de todo proyecto donde alguien dice: "y los ficheros dónde los guardamos?". Y la respuesta fácil es: en la base de datos, en un BLOB. Funciona. Es transaccional. Es consistente.

Y es una terrible idea. Vamos a ver por qué.

El problema de guardar binarios en MySQL

MySQL guarda BLOBs en páginas de 16KB (InnoDB). Cuando metes un PDF de 5MB, MySQL lo parte en trozos y los esconde en páginas internas que nadie ve. Esto tiene consecuencias:

Qué es S3 (y por qué es diferente)

Amazon S3 es un object store. No es una base de datos. No tiene esquemas. No tiene JOINs. Es un diccionario gigante: le das una clave (uploads/contrato-2026.pdf) y te devuelve los bytes. Punto.

Las ventajas:

Las desventajas:

MinIO: S3 sin depender de AWS

Aquí es donde entra MinIO.

MinIO es un servidor de object storage compatible con la API S3. Esto significa que tu código que habla S3 puede hablar MinIO sin cambiar una línea. Solo cambias el endpoint:

# AWS S3
ENDPOINT=https://s3.eu-west-1.amazonaws.com

# MinIO (self-hosted)
ENDPOINT=http://minio.tu-servidor.local:9000

Las ventajas de MinIO:

docker run -p 9000:9000 -p 9001:9001 \
  -e MINIO_ROOT_USER=minioadmin \
  -e MINIO_ROOT_PASSWORD=minioadmin \
  minio/minio server /data --console-address ":9001"

Desventajas de MinIO:

Cuándo usar qué

Situación Recomendación
Proyecto personal, pocos ficheros MinIO en un VPS
Startup escalando rápido AWS S3 + CloudFront
Requisitos de soberanía de datos MinIO self-hosted
Prototipo / desarrollo local MinIO en Docker
Mucho tráfico global S3 + CDN (o MinIO + CDN)
Datos sensibles / compliance MinIO en infra propia

Resumen

No guardes ficheros en MySQL. Es tentador, es fácil, y a los 6 meses te arrepientes. Usa un object store: S3 si quieres que otro lo gestione, MinIO si quieres controlarlo tú. La API es la misma. El esfuerzo de integración es el mismo. La diferencia es dónde duermen tus bytes y quién paga la factura del disco.

Tu MySQL te lo agradecerá. Tu buffer pool también.

Comparte este post:

Es tu post

Estas seguro? Esto no se puede deshacer.

Comentarios (0)

Sin comentarios todavia. Se el primero!

Deja un comentario