Grazie all'avvento dei Data Lakes facilmente accessibili tramite provider cloud come GCP, Azure e AWS, è stato possibile per sempre più organizzazioni archiviare a basso costo i propri dati non strutturati. Sebbene i Data Lake presentino molte limitazioni come:
- Possono verificarsi letture incoerenti quando si combinano batch e streaming o si aggiungono nuovi dati.
- La modifica dettagliata dei dati esistenti può diventare complessa (ad esempio per soddisfare i requisiti GDPR)
- Degrado delle prestazioni durante la gestione di milioni di file di piccole dimensioni.
- Nessun supporto per transazioni ACID (Atomicità, Coerenza, Isolamento, Durabilità).
- Nessuna imposizione/evoluzione dello schema.
Per cercare di alleviare questi problemi, Apache Iceberg è stato ideato da Nextflix nel 2017. Apache Iceberg è un formato di tabella in grado di fornire un ulteriore livello di astrazione per supportare transazioni ACID, viaggi nel tempo, ecc. mentre si lavora con vari tipi di origini dati e carichi di lavoro. L'obiettivo principale di un formato tabella è definire un protocollo su come gestire e organizzare al meglio tutti i file che compongono una tabella. Oltre ad Apache Iceberg, altri formati di tabelle aperte attualmente popolari sono Hudi e Delta Lake.
Ad esempio, Apache Iceberg e Delta Lake hanno per lo più le stesse caratteristiche sebbene, ad esempio, Iceberg possa supportare anche altri formati di file come ORC e Avro. Delta Lake, invece, è attualmente fortemente supportato da Databricks e dalla comunità open source ed è in grado di fornire una maggiore varietà di API (Figura 1).
Nel corso degli anni, Apache Iceberg è stato open source di Nexflix e molte altre aziende come SnowFlake e Dremio hanno deciso di investire nel progetto.
Ogni tabella Apache Iceberg segue un'architettura a 3 livelli:
- Catalogo dell'iceberg
- Livello metadati (con file di metadati, elenchi manifest e file manifest)
Fonte: towardsdatascience.com