Dos mundos: operar vs. analizar
Las organizaciones usan sus datos para dos propósitos muy distintos:
- Operar el negocio: registrar una venta, hacer una transferencia, actualizar un pedido.
- Analizar el negocio: ¿cuánto vendimos por región el último trimestre? ¿qué clientes compran más?
Intentar hacer ambas cosas sobre el mismo sistema es una mala idea: las consultas analíticas recorren millones de filas y frenarían las operaciones del día a día. Por eso existen dos familias de sistemas: OLTP y OLAP.
OLTP vs OLAP
| Característica | OLTP (procesamiento transaccional) | OLAP (procesamiento analítico) |
|---|---|---|
| Propósito | Ejecutar operaciones del negocio | Analizar datos históricos |
| Operación típica | INSERT / UPDATE de una fila | SELECT con agregaciones sobre millones de filas |
| Alcance de cada consulta | Pocas filas (un pedido, un cliente) | Muchas filas (toda la historia de ventas) |
| Frecuencia | Miles de transacciones por segundo | Consultas esporádicas pero pesadas |
| Datos | Actuales, detallados | Históricos, agregados |
| Diseño típico | Esquema normalizado (3FN) | Esquema desnormalizado (estrella) |
| Ejemplo | La base de datos de la caja de una tienda | El cubo de ventas para el informe trimestral |
Regla práctica: OLTP responde “¿qué está pasando ahora?” y OLAP responde “¿qué ha pasado y por qué?”.
Data warehouse, data lake y data lakehouse
Para alimentar el mundo OLAP se han sucedido tres arquitecturas de almacenamiento:
- Data warehouse: almacén estructurado y depurado, con esquema definido antes de cargar (schema-on-write). Datos limpios, integrados y listos para BI. Costoso y rígido ante nuevos formatos. Ejemplos: Amazon Redshift, Google BigQuery, Snowflake.
- Data lake: repositorio que guarda los datos en crudo, en su formato original (JSON, imágenes, logs), con esquema aplicado al leer (schema-on-read). Barato y flexible, pero sin gobierno puede degradarse en un “data swamp” (pantano de datos).
- Data lakehouse: evolución que combina ambos: almacenamiento barato tipo lake sobre formatos abiertos (Delta Lake, Apache Iceberg) pero con transacciones ACID, esquema y rendimiento de warehouse.
| Data warehouse | Data lake | Data lakehouse | |
|---|---|---|---|
| Datos | Procesados, estructurados | Crudos, cualquier formato | Crudos + capas procesadas |
| Esquema | Schema-on-write | Schema-on-read | Ambos |
| Costo de almacenamiento | Alto | Bajo | Bajo |
| Calidad / gobierno | Alta | Baja (riesgo de pantano) | Alta sobre el lake |
| Uso típico | BI e informes | Ciencia de datos, ML | BI + ML sobre la misma plataforma |
Esquemas analíticos: estrella y copo de nieve
Dentro del data warehouse, los datos se organizan para que las consultas analíticas sean rápidas. El diseño más común es el esquema estrella:
- Una tabla de hechos central con las mediciones del negocio (ventas: cantidad, importe).
- Tablas de dimensiones alrededor que describen el contexto (tiempo, producto, cliente, tienda).
graph TD DT["dim_tiempo<br/>(fecha, mes, trimestre, año)"] --> H["hechos_ventas<br/>(cantidad, importe)"] DP["dim_producto<br/>(nombre, categoría)"] --> H DC["dim_cliente<br/>(nombre, segmento)"] --> H DS["dim_tienda<br/>(ciudad, región)"] --> H
El esquema copo de nieve es una variante donde las dimensiones se normalizan en sub-tablas (por ejemplo, dim_tienda se divide en tienda → ciudad → región). Ahorra espacio y evita redundancia, pero añade joins y complejidad a las consultas.
ETL vs ELT
¿Cómo llegan los datos de las fuentes OLTP al warehouse? Con procesos de integración:
- ETL (Extract, Transform, Load): se extraen los datos, se transforman en un motor intermedio (limpieza, agregación) y luego se cargan ya depurados en el warehouse. Clásico cuando el destino no tiene potencia de sobra.
- ELT (Extract, Load, Transform): se cargan primero los datos en bruto en el destino y se transforman dentro, aprovechando la potencia del warehouse/lakehouse en la nube. Es el patrón dominante hoy.
graph LR F1["BD ventas<br/>(OLTP)"] --> E["Extracción"] F2["CRM"] --> E F3["Logs web"] --> E E --> T["Transformación<br/>limpieza, joins,<br/>agregaciones"] T --> W["Data Warehouse<br/>esquema estrella"] W --> B["Herramientas BI<br/>dashboards, informes"] W --> C["Ciencia de datos<br/>modelos ML"]
En la práctica se usan ambos: ELT para llevar todo el dato crudo al lake y ETL (o transformaciones SQL tipo dbt) para construir las capas limpias que consume el negocio.
Ejercicio: consultas OLAP sobre ventas
🧪 Ejercicio
Análisis de ventas con agregaciones
Sobre una tabla ventas(id, fecha, region, producto, cantidad, importe) escribe una consulta OLAP que devuelva el importe total, la cantidad total y el número de operaciones por región, ordenadas de mayor a menor importe, solo para regiones con más de 10 operaciones.
🔍 Usa GROUP BY region con SUM y COUNT, filtra los grupos con HAVING y ordena con ORDER BY ... DESC.
-- Consulta OLAP tipica: agregar millones de filas a un resumen por dimension
SELECT
region,
SUM(importe) AS importe_total,
SUM(cantidad) AS unidades_vendidas,
COUNT(*) AS num_operaciones
FROM ventas
GROUP BY region
HAVING COUNT(*) > 10
ORDER BY importe_total DESC;
-- Variante: evolucion mensual de ventas (analisis temporal)
SELECT
DATE_TRUNC('month', fecha) AS mes,
region,
SUM(importe) AS importe_total
FROM ventas
GROUP BY mes, region
ORDER BY mes, importe_total DESC;Comprueba lo aprendido
Comprueba que lo pillaste
La app de un banco registra una transferencia actualizando el saldo de dos cuentas en una transacción. ¿Qué tipo de sistema lo está ejecutando?
Es una operación transaccional del negocio: pocos registros, escritura inmediata y alta concurrencia. Eso es el dominio de los sistemas OLTP.
Comprueba que lo pillaste
Una empresa guarda todos sus logs, imágenes y JSON en crudo, sin definir esquema hasta el momento de leerlos. ¿Qué arquitectura está usando?
Almacenar datos crudos en su formato original con schema-on-read es la definición de un data lake. El warehouse, en cambio, exige esquema y datos depurados al escribir.
Comprueba que lo pillaste
¿Cuál es la diferencia clave entre ETL y ELT?
En ETL la transformación ocurre en un motor intermedio antes de la carga; en ELT se cargan los datos en bruto y se transforman aprovechando la potencia del propio destino, patrón dominante en la nube.
Resumen
- OLTP ejecuta las operaciones del negocio (pocas filas, alta concurrencia); OLAP analiza la historia (agregaciones sobre millones de filas).
- El data warehouse guarda datos depurados con schema-on-write; el data lake guarda datos crudos con schema-on-read; el lakehouse combina ambos.
- Los warehouses se diseñan con esquema estrella (hechos + dimensiones) o su variante normalizada, el copo de nieve.
- ETL transforma antes de cargar; ELT carga primero y transforma dentro del destino.
- El SQL analítico (GROUP BY, SUM, COUNT, HAVING) es la herramienta básica del mundo OLAP.
📚 Lecturas y fuentes
| Recurso | Tipo | Por qué leerlo |
|---|---|---|
| Almacén de datos (Wikipedia en español) | Artículo | Lee la introducción y el apartado sobre el debate Inmon (top-down, corporativo y normalizado) frente a Kimball (bottom-up, data marts dimensionales). |
| DataLake — Martin Fowler | Artículo | Entrada corta (unos 10 minutos): por qué el data lake nace frente al warehouse y cuándo degenera en pantano (en inglés). |
| Kimball Group — Dimensional Modeling Techniques | Docs | No lo leas entero: ve directo a “Fact Tables”, “Dimension Tables” y “Star Schemas and OLAP Cubes”. Fuente canónica del esquema estrella (en inglés). |
| Designing Data-Intensive Applications (Martin Kleppmann) | Libro | Cap. 3, secciones “Transaction Processing or Analytics?” y “Stars and Snowflakes”: la comparación OLTP/OLAP mejor escrita que existe (en inglés). |