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:

  1. Poder cambiar de warehouse fácilmente
  2. Usar varios motores de query sobre los mismos datos
  3. Disminuir costos — si el storage no cobra egress (como R2), el cálculo cambia completamente

Desventajas:

  1. A gran escala se necesita un catálogo de datos (Apache Iceberg, por ejemplo)
  2. Las queries pueden ser más lentas — BigQuery con external tables es un ejemplo
  3. 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.

Referencias