El problema de los datos en silos
Durante años, el mundo de los datos vivió fragmentado:
- Los datos en data warehouses (Snowflake, Redshift, BigQuery) eran rápidos pero costosos y cerrados
- Los datos en data lakes (S3, ADLS, GCS) eran baratos pero sin estructura ni transaccionalidad
Apache Iceberg resuelve esto: es un formato de tabla abierto que lleva las capacidades de un data warehouse (ACID, schema evolution, time travel) a los archivos en un data lake.
¿Qué es Apache Iceberg?
Iceberg es una especificación abierta para organizar archivos Parquet (u ORC/Avro) en S3/ADLS/GCS de forma que múltiples motores puedan leerlos y escribirlos.
S3/ADLS/GCS
└── mi-tabla-iceberg/
├── metadata/
│ ├── v1.metadata.json ← esquema, historial
│ ├── v2.metadata.json
│ └── snap-123.avro ← snapshots (time travel)
└── data/
├── part-00001.parquet
└── part-00002.parquet
Las capacidades de Iceberg
| Capacidad | Sin Iceberg | Con Iceberg |
|---|---|---|
| ACID transactions | No | ✅ |
| Time Travel | No | ✅ (historial de snapshots) |
| Schema evolution | Complejo | ✅ (add/rename/drop columns) |
| Partition evolution | Re-escribir tabla | ✅ (cambiar sin mover datos) |
| Row-level deletes | No | ✅ (MERGE, UPDATE, DELETE) |
| Multi-engine access | Reinventar la rueda | ✅ (Snowflake, Spark, Flink, Trino…) |
El posicionamiento de Snowflake con Iceberg
Snowflake tiene una postura clara: Iceberg es el futuro. Snowflake puede ser:
- Writer: Snowflake crea y escribe tablas Iceberg directamente en tu S3/ADLS/GCS
- Reader: Snowflake lee tablas Iceberg creadas por Spark, Flink u otros motores
- Catalog: Snowflake actúa como catálogo Iceberg REST para otros motores
Esto elimina el dilema de “¿datos en Snowflake o en el lake?” — puedes tener ambos, con Snowflake como motor de procesamiento.
¿Cuándo usar Iceberg?
Usa Iceberg cuando:
- Necesitas que múltiples motores accedan a los mismos datos (Snowflake + Spark + Flink)
- Quieres controlar el costo de almacenamiento usando tu propio S3/ADLS
- Necesitas cumplir con regulaciones de residencia de datos
- Tienes datos en un data lake que quieres consultar con Snowflake sin copiarlos
Sigue con tablas nativas Snowflake cuando:
- Solo usas Snowflake como motor
- Priorizas máxima performance de queries
- No necesitas acceso multi-motor
El mensaje estratégico
Snowflake + Iceberg permite a las empresas adoptar una arquitectura de datos abierta sin sacrificar las capacidades de Snowflake. Los datos son tuyos, en tu almacenamiento, en un formato que cualquier motor puede leer.
Próximos pasos
En la siguiente lección aprenderemos a crear tablas Iceberg en Snowflake.