Nº12 · Almacenamiento
Delta Lake
Tablas con garantías ACID y time travel sobre tu data lake.
Delta Lake es un formato de tabla open-source que añade transacciones ACID, evolución de esquema y time travel sobre archivos Parquet en un data lake. Es una de las bases del patrón lakehouse (tablas confiables sobre object storage): lo popularizó Databricks, pero es OSS y corre también fuera de su nube.
¿Qué es?
Delta Lake no inventa un formato de datos nuevo: guarda tus datos en Parquet y añade junto a ellos un transaction log (el directorio _delta_log) que registra cada cambio como un commit ordenado. Ese log es la pieza clave — convierte una carpeta de archivos en una tabla con comportamiento de base de datos:
- ACID — commits atómicos; ninguna lectura ve un estado a medias.
- Updates, deletes y merge — modifica filas sobre object storage, no solo append.
- Schema evolution — agrega o ajusta columnas sin reescribir lo histórico.
- Time travel — consulta la tabla en una versión o timestamp anterior.
¿Para qué sirve?
- Tablas confiables sobre object storage. Pipelines que escriben en S3/GCS/ADLS con garantías ACID en lugar de archivos sueltos frágiles.
- Updates, deletes y merge. Aplica cambios incrementales o upserts (CDC) sobre datos que en Parquet plano serían inmutables.
- Time travel. Recupera el estado exacto de una tabla en un punto anterior para auditoría, reproducibilidad o rollback.
- Base de un lakehouse. El cimiento de tablas analíticas confiables que múltiples cargas (ETL, BI, ML) comparten sin duplicar datos.
¿Cuándo usarla / cuándo no?
Úsala cuando:
- Necesitas ACID, updates/deletes/merge y time travel sobre un data lake.
- Tu stack vive en el mundo Spark/Databricks, donde Delta es la opción más nativa y madura.
Piénsalo dos veces cuando:
- El dataset es chico y lo lee un solo proceso — un Parquet plano es más simple y suficiente.
- Tu ecosistema es multi-motor o más neutral: Iceberg resuelve casi lo mismo (ACID, schema evolution, time travel) y suele integrarse mejor fuera de Spark. La diferencia real entre Delta e Iceberg no son las features sino el ecosistema: elige Delta si gravitas hacia Spark/Databricks, Iceberg si quieres neutralidad multi-motor (Trino, Flink, DuckDB).
Empieza en 1 minuto
Crea y lee una tabla Delta en local con delta-rs (sin clúster Spark), desde pandas:
pip install deltalake pandas
import pandas as pd
from deltalake import write_deltalake, DeltaTable
# Escribe un DataFrame como tabla Delta en una carpeta local
df = pd.DataFrame({
"id": [1, 2, 3],
"evento": ["login", "compra", "logout"],
})
write_deltalake("/tmp/delta_eventos", df)
# Léela de vuelta
dt = DeltaTable("/tmp/delta_eventos")
print(dt.to_pandas())
# Agrega más datos (otro commit en el log)
mas = pd.DataFrame({"id": [4], "evento": ["refund"]})
write_deltalake("/tmp/delta_eventos", mas, mode="append")
# Time travel: lee la versión 0 (antes del append)
print(DeltaTable("/tmp/delta_eventos", version=0).to_pandas())
Trivia rápida — pon a prueba lo que acabas de leer.
¿Qué tanto sabes de Delta Lake?
Documentación oficial
La fuente de verdad vive ahí. Acá orientamos; la profundidad la pones tú.
Abrir documentación oficial ↗Qué aprender después
Ver tambiénApache Iceberg
Tablas con garantías de base de datos sobre tu data lake.
Apache Parquet
El formato columnar que hace barata y rápida la analítica sobre archivos.
Apache Spark
El motor distribuido para procesar datos a gran escala.
Nº12 · Actualizado 2026-06-26