Data lake con ACID
I data lake basati su file Parquet/ORC in S3/HDFS hanno limiti: no transazioni ACID multi-file, no schema evolution controllata, no time travel, query performance con liste file enormi. I table format aggiungono un layer di metadati sopra i file per risolvere questi problemi.
Apache Iceberg, creato da Ryan Blue e Daniel Weeks a Netflix dal 2017, donato a Apache Foundation nel 2018 e Graduated TLP nel maggio 2020. Licenza Apache 2.0.
Caratteristiche
- Snapshot isolation — ogni commit produce uno snapshot; reader vedono punto temporale coerente
- Time travel — query su snapshot storici (
SELECT ... AT TIMESTAMP '2021-01-15') - Schema evolution — add/rename/drop column con retrocompatibilità
- Partition evolution — cambio di strategia di partizionamento senza rewrite
- Hidden partitioning — Iceberg gestisce partizioni automaticamente basate su column values
- Row-level operations — UPDATE, DELETE, MERGE efficienti
- ACID transactions — commit atomici su multiple file
Compute engines
Iceberg è disaccoppiato dal compute engine. Supportato nativamente da:
- Apache Spark
- Trino / Presto
- Apache Flink
- Snowflake (supporto in roadmap)
- AWS Athena, Google BigQuery (external tables)
- DuckDB, Dremio
I tre table format
Esistono tre principali table format lakehouse che si stanno affermando:
- Delta Lake (Databricks) — Open Source Linux Foundation, più legato a Spark
- Apache Iceberg — neutrale, supporto multi-engine
- Apache Hudi — Uber-originato, focus su streaming upsert
Il posizionamento “vendor-neutrale” di Iceberg è uno dei punti forti rispetto a Delta Lake.
Nel contesto italiano
Adoption italiana in aziende con data lake maturi: banche, telco, grandi retailer, istituti di ricerca.
Riferimenti: Apache Iceberg. Ryan Blue, Daniel Weeks, Netflix (2017). Apache TLP (maggio 2020). Licenza Apache 2.0. Alternative: Delta Lake (Databricks), Apache Hudi (Uber).
