DE//AGENT
Explore

Guides · Decide

Delta Lake vs Apache Iceberg

Choosing an open table format for your lakehouse: what each guarantees, where they differ, and which constraints should decide.


Both Delta Lake and Apache Iceberg add transactions, time travel, and schema evolution to Parquet files in object storage. For most new lakehouses the choice matters less than the discipline around it — but the formats differ in ways that should drive the decision. Nothing below was benchmarked here; format claims cite the official docs, operational claims cite registry patterns.

Criteria

CriterionDelta Lake (docs)Apache Iceberg (docs)
Origin & governanceCreated at Databricks, now Linux Foundation; Databricks is its primary commercial driverCreated at Netflix, now Apache top-level; multi-vendor by design
Engine supportDeepest in Spark and Databricks Runtime; growing elsewhereBroad: Spark, Trino, Presto, Flink, Snowflake, BigQuery, Athena
Time travelYes, versioned reads and restoresYes, snapshot reads and rollbacks
Schema evolutionColumn mapping modes, enforcement + evolutionSchema evolution with field IDs; partition evolution without rewrites
PartitioningPartitioned by columns; small-file handling is your job (see compaction)Hidden partitioning; evolve partition specs without rewriting data
Streaming writesNative in Spark Structured Streaming (example project)Supported via Spark/Flink sinks; check your engine version
Ecosystem fitNatural if you already run Databricks or Spark-firstNatural for multi-engine shops (Trino + Spark + warehouse readers)

Unknowns — not reproduced here

  • Performance comparisons. Vendor benchmarks exist for both; none were rerun in this registry. Treat relative speed claims as marketing until you test your own workload.
  • Operational cost. Compaction, clustering, and snapshot expiry dominate table-format cost far more than the format choice. Measure with your retention settings.
  • CDC specifics. Debezium-to-lakehouse behavior depends on connector and sink versions (Debezium docs); verify merge semantics per release.

Verdict

  • Choose Delta Lake when: you run Databricks or Spark-first, your team already knows its operations, and your readers are Spark or Databricks SQL. The medallion pattern maps onto it directly.
  • Choose Iceberg when: multiple engines must read the same tables (Spark + Trino + Snowflake), or you need partition evolution without rewrites. Verify each reader’s version supports the Iceberg spec version you write.
  • Either way (Not executed — validate in staging): set up compaction and snapshot expiry on day one, test replay idempotency, and put the quarantine pattern in front of silver. The format never substitutes for those.

What to inspect before trusting this

  • This comparison was assembled from documentation and registry patterns, not from running both formats. No cluster executed anything on this page.
  • Both projects move fast — confirm the current docs for the versions you pin.
  • Related resources carry their own evidence states; check each entry’s checklist before adopting its commands.