Un data warehouse es un conjunto de servicios para almacenar y consultar datos. En general tienen dos capas: (1) almacenamiento: dependiendo del data warehouse tienen sus formatos internos, y (2) compute: una capa para consultar datos, casi siempre basada en SQL.
Los warehouses tradicionales (BigQuery, Snowflake, Redshift) tienen storage y compute acoplados — pagas por ambos aunque no consultes nada. Hay opciones como cloudflare-r2 + motherduck donde separamos estas dos capas.
Ventajas de separar:
- Poder cambiar de warehouse fácilmente
- Usar varios motores de query sobre los mismos datos
- Disminuir costos — si el storage no cobra egress (como R2), el cálculo cambia completamente
Desventajas:
- A gran escala se necesita un catálogo de datos (Apache Iceberg, por ejemplo)
- Las queries pueden ser más lentas — BigQuery con external tables es un ejemplo
- Pierdes las optimizaciones nativas del warehouse (clusters, particiones, etc.)
Para casos con pocos datos o un solo ingeniero/analista, recomiendo separar storage y compute para mantener flexibilidad de cambiar de engine sin tanto fricción.
¿Para qué se usa?
Para generar reportes, dashboards e inteligencia empresarial. El objetivo final es tomar decisiones basadas en datos — no operar el negocio (eso es trabajo de una base de datos oltp), sino entenderlo.