← Back to list

The Triad of Open Table Formats [1/n] — History, Motivation & Design Philosophy

Context

Apurva Rathi · 2026-05-21 13:38 · 65 claps · 7.8 min read
#data-lakehouse #open-table-format #apache-iceberg #apache-hudi #delta-lake
Open on Medium ↗
Wiki topics: PHI · Philosophy PSY · Psychology 🔧 · Data Engineering 🚀 · Self Improvement

The Triad of Open Table Formats [1/n] — History, Motivation & Design Philosophy

Context

Over the last decade, Open Table Formats have become the foundation of modern lakehouse architectures. Apache Hudi, Apache Iceberg and Delta Lake emerged from very different operational pain points, yet eventually converged toward a shared goal: bringing warehouse-grade guarantees to open object storage systems.

Having worked primarily with Delta Lake first-hand at Atlassian, I wanted to better understand how the other formats evolved, what problems they were originally designed to solve and why Apache Iceberg in particular has seen such rapid industry adoption.

This blog explores the historical context, architectural motivations and design philosophies behind all three systems. More than just features, I wanted to understand the operational pain each system was reacting to — because in distributed systems, architecture is often a reflection of the accumulated operational scar.

A Look Into the Past

Before diving into Hudi, Iceberg and Delta Lake, it helps to understand the world that existed before them.

Around 2008–2012, the industry was transitioning from traditional data warehouses toward Hadoop-based data lake systems. This coincided with the explosion of:

  • clickstream data
  • logs
  • sensor data
  • social media data
  • semi-structured and unstructured datasets

Traditional warehouses struggled because they required:

  • schema definition upfront
  • ETL before storage
  • expensive proprietary infrastructure

At the same time, the Apache Hadoop ecosystem — primarily HDFS and MapReduce — made it possible to store enormous volumes of raw data cheaply.

This gave rise to the idea of the Data Lake.

The term itself was coined around 2010 by James Dixon while at Pentaho.

His famous analogy described:

  • Data marts as bottled water — cleaned, processed and packaged
  • Data lakes as natural bodies of water — raw, flexible and usable for many purposes

The core philosophy behind data lakes was radical for its time:

Store everything first. Model later.

Early data lake architectures roughly looked like:

Raw Data
   ↓
HDFS (Parquet / ORC / Avro)
   ↓
Hive / Pig / Spark

These systems enabled:

  • cheap horizontal scaling
  • schema-on-read
  • distributed compute
  • raw file storage

But they also lacked:

  • ACID guarantees
  • reliable concurrent writes
  • schema evolution
  • transactions
  • robust metadata management

As the industry moved toward cloud-native object stores like:

  • Amazon S3
  • ADLS
  • GCS

the economics improved dramatically, but the correctness problems remained.

This eventually led to the rise of Lakehouse architectures — systems that combined the flexibility of data lakes with warehouse-grade guarantees.

So What Exactly Is “Open” in Open Table Formats?

When people say:

  • “open table format”
  • “open data lake”
  • “open lakehouse”

the word open is often overloaded.

In practice, it usually refers to three different kinds of openness.

1. Open Storage Formats

At the lowest layer, data is stored in open formats such as:

  • Parquet
  • ORC
  • Avro

These formats are:

  • publicly documented
  • widely supported
  • engine-independent

Meaning the data itself is not locked inside proprietary warehouse internals.

A Parquet file written by Spark can also be read by:

  • Trino
  • DuckDB
  • Flink
  • Pandas
  • Snowflake

and many others.

2. Open Table Specifications

Formats like:

  • Apache Hudi
  • Apache Iceberg
  • Delta Lake

define:

  • metadata layout
  • transaction semantics
  • snapshot rules
  • schema evolution behaviour
  • commit protocols

through public specifications.

This means:

  • Spark can write
  • Trino can read
  • Flink can stream
  • multiple engines can interoperate

without tight vendor coupling.

Iceberg, in particular, pushed this idea aggressively by treating the table abstraction itself as an open specification.

It became:

a shared interoperability contract.

3. Storage-Compute Decoupling

Traditional warehouses tightly coupled:

  • storage
  • metadata
  • compute
  • execution engine

Open lakehouses broke this apart.

Now organisations could mix:

  • S3 for storage
  • Spark for ETL
  • Trino for BI
  • Flink for streaming
  • DuckDB for local analysis

all operating on the same tables.

Cloud object storage dramatically changed economics and naturally led organisations to ask:

“Why should my data belong to a single compute engine?”

Open table formats emerged as the answer.

Hive & Spark: Precursors to Modern Open Table Formats

Hive and later Apache Spark were foundational precursors to modern open table formats because they normalised the idea of querying open file formats directly from distributed storage.

However, they still lacked:

  • atomic commits
  • snapshot isolation
  • reliable concurrent writes
  • rollback semantics

That missing transactional layer is exactly what Hudi, Iceberg and Delta Lake introduced — albeit through very different architectural philosophies.

Hudi’s write path began life as a Spark library focused on incremental processing and efficient upserts for mutable datasets. Iceberg, as covered later, took heavy inspiration from the ubiquity and limitations of the Hive table format, rethinking table state and metadata management from first principles for petabyte-scale analytics. Delta Lake, meanwhile, was laser-focused on bringing warehouse-grade ACID reliability to the enterprise Spark ecosystem through a transaction-log-centric design.

Year Format Created At 2016 Apache Hudi Uber Technologies 2017 Apache Iceberg Netflix 2019 Delta Lake Databricks

Apache Hudi

Original Problem It Tried to Solve

“How do we efficiently support streaming upserts and incremental ingestion on a data lake?”

At the time, most data lakes were:

  • append-only
  • batch-oriented
  • poor at handling updates and deletes

This was painful for:

  • CDC pipelines
  • mutable datasets
  • near-real-time analytics

Uber’s Core Pain

At Uber scale:

  • trip data continuously changed
  • events arrived late or out of order
  • datasets required frequent corrections

Appending new Parquet files indefinitely created:

  • stale records
  • duplicates
  • expensive partition rewrites

Hudi’s Core Conceptual Shift

Traditional data lakes largely treated files as immutable forever.

Hudi challenged that assumption by treating datasets as living mutable entities.

Instead of repeatedly recomputing entire partitions, Hudi introduced:

  • record-level upserts
  • indexed mutations
  • incremental processing semantics

This enabled data lakes to behave more like mutable operational systems rather than static analytical archives.

Key Innovations

1. Record-Level Upserts

Hudi enabled:

  • inserts
  • updates
  • deletes

directly on Parquet-based storage.

2. Incremental Consumption

Downstream systems could ask:

“What changed since commit X?”

instead of rescanning entire datasets repeatedly.

This dramatically reduced:

  • compute cost
  • latency
  • operational complexity

3. Timeline-Based Table State

Hudi introduced:

  • commit timelines
  • transactional metadata
  • versioned table state

This enabled:

  • snapshot isolation
  • rollback
  • recovery semantics

4. Copy-on-Write vs Merge-on-Read

Copy-on-Write (CoW)

Updates rewrite Parquet files immediately.

Benefits:

  • simpler reads
  • better analytical scan performance

Tradeoff:

  • more expensive writes

Merge-on-Read (MoR)

Updates first land in delta log files before eventually compacting into Parquet.

Benefits:

  • fast ingestion
  • low-latency writes

Tradeoff:

  • more complex reads

Conceptually, this feels very similar to log-structured and LSM-tree-inspired storage engines.

Architectural Bias

Hudi’s worldview was fundamentally:

“The write path is the bottleneck.”

It optimised heavily for:

  • streaming ingestion
  • mutable datasets
  • CDC pipelines
  • incremental recomputation

Apache Iceberg

Original Problem It Tried to Solve

“How do we make massive analytical tables reliable and scalable across multiple compute engines?”

At Netflix scale, Hive-style tables were beginning to break down.

Problems included:

  • millions of partitions
  • directory listing bottlenecks
  • unsafe concurrent writes
  • painful partition evolution
  • metadata scalability issues

The Problem with Hive-Style Tables

Traditional Hive tables relied heavily on directory structures such as:

/date=2026-05-01/

for partition discovery.

This tightly coupled:

  • table state
  • partitioning
  • physical directory layout

That model became increasingly fragile on cloud object stores.

Iceberg effectively redesigned analytical tables from first principles.

Iceberg’s Core Innovations

Iceberg introduced:

  • snapshot-based tables
  • manifest trees
  • hidden partitioning
  • field-ID-based schema evolution
  • engine-neutral metadata

The key insight was:

The table abstraction itself needed redesigning.

Key Architectural Ideas

1. Hidden Partitioning

Iceberg introduced hidden partition transforms that enabled:

  • partition evolution
  • cleaner query logic
  • decoupling of queries from physical layout

2. Stable Field IDs

Instead of relying purely on column names or positions, Iceberg used stable field IDs.

This enabled safe:

  • schema evolution
  • column renames
  • column reordering

across engines.

3. Snapshot-Based Metadata

Iceberg introduced snapshot-based table state managed through manifest trees.

This enabled:

  • atomic reads
  • time travel
  • scalable metadata planning
  • snapshot isolation

without relying on filesystem directory discovery.

Architectural Bias

Iceberg optimised heavily for:

  • metadata scalability
  • analytical query planning
  • engine interoperability
  • correctness on object stores

It wasn’t merely introducing new features — it was redefining how analytical tables should behave in a cloud-native, multi-engine world.

<aside> 💡

https://www.alluxio.io/videos/apache-iceberg-a-table-format-for-hige-analytic-datasets?utm_source=chatgpt.com is one of the earliest talks I found on Apache Iceberg, presented by its creator Ryan Blue.

On watching it, I realised Iceberg was, in many ways, ahead of its time. Its emphasis on open specification and standardisation laid the groundwork for multi-engine interoperability long before the industry fully appreciated how important that would become.

What struck me most was that Iceberg didn’t merely introduce new features — it introduced the very idea of a table format as a first-class abstraction over object storage.

Many of the things that feel obvious in hindsight today were deliberate design choices back then:

  • using stable field IDs instead of column names/positions to enable safe schema evolution
  • decoupling table state from directory structure
  • snapshot-based metadata management for time travel and atomic reads
  • hidden partitioning to avoid brittle query logic

You can almost see years of operational pain encoded into the design.

Interestingly, part of Iceberg’s eventual ubiquity stems from the fact that the Hive table format had already become the industry’s “lowest common denominator” — much like CSV for tabular data. Ryan Blue uses a great analogy in the talk: the goal was to evolve tables from the “CSV end of the spectrum” toward something more like Parquet — structured, scalable and explicit in its semantics.

</aside>

Delta Lake

Original Problem It Tried to Solve

“How do we bring warehouse-grade ACID guarantees to Spark-based data lakes?”

Before Delta Lake:

  • Spark pipelines frequently corrupted tables
  • partial writes were common
  • schema evolution was fragile
  • concurrent jobs created inconsistencies

At Databricks scale, this made production pipelines operationally brittle.

Delta Lake’s Core Insight

Delta’s key insight was elegant:

Object stores themselves did not need to support transactions.

Instead, transactional correctness could be achieved through a carefully managed append-only transaction log layered above immutable Parquet files.

This database-inspired WAL-style design became Delta Lake’s defining architectural choice.

Core Innovations

Delta introduced:

  • append-only transaction logs
  • optimistic concurrency control
  • ACID transactions on object storage
  • rollback semantics
  • time travel
  • unified batch + streaming semantics

Its philosophy was fundamentally pragmatic:

Bring database transaction guarantees into the Spark ecosystem with minimal operational complexity.

Why Build Delta When Iceberg and Hudi Already Existed?

By the time Delta Lake emerged, both Hudi and Iceberg already existed — but they were solving different problems.

Hudi focused on:

  • streaming ingestion
  • incremental processing
  • efficient upserts

Iceberg focused on:

  • metadata scalability
  • clean table abstractions
  • multi-engine interoperability

Delta Lake, meanwhile, focused on making Spark-based data lakes operationally reliable through:

  • ACID transactions
  • optimistic concurrency control
  • append-only transaction logs
  • unified batch + streaming semantics

Concluding Thoughts

Diving into the historical context behind these systems made one thing increasingly clear:

each format emerged from a very different operational pain point.

Format Original Pain Hudi Mutable streaming datasets Iceberg Metadata scalability & multi-engine analytics Delta Lake Reliable transactional Spark pipelines

That is why their architectures diverged so significantly. Yet despite their differences, the broader ecosystem has steadily converged toward interoperability because organisations increasingly demand:

  • openness
  • engine portability
  • avoidance of vendor lock-in

<aside> 💡

What I found most fascinating is that Open Table Formats are not really about storage alone. They are fundamentally about:

  • metadata management
  • transaction semantics
  • concurrency control
  • correctness guarantees
  • distributed systems design

all layered above open file formats like Parquet sitting inside cloud object stores.

</aside>

I hope to delve deeper into the architecture of each of these systems in the subsequent blogs.

References:

Disclaimer: While the ideas and core structure of this blog were conceptualised by the author, AI tools were used to assist in drafting and refining the content and as a sparring assistant.


메타데이터
post_id
22ccf06d9606
slug
the-triad-of-open-table-formats-1-n-history-motivation-design-philosophy-22ccf06d9606
url
https://medium.com/@Apurvar/the-triad-of-open-table-formats-1-n-history-motivation-design-philosophy-22ccf06d9606
canonical_url
https://medium.com/@Apurvar/the-triad-of-open-table-formats-1-n-history-motivation-design-philosophy-22ccf06d9606
author_url
https://medium.com/@Apurvar
status
ok
fetched_at
2026-06-09 15:37:30