The three formats reached the same design from different starting points, so most concepts translate directly:
| Concept | Apache Iceberg 129 | Delta Lake 237,929 | Apache Hudi 129 |
|---|---|---|---|
| Root of the table's state | Metadata file named by a catalog | _delta_log/ commit files | .hoodie/ timeline |
| One table version | Snapshot | Table version (commit) | Instant on the timeline |
| File inventory | Manifest list and manifests | Add/remove actions, checkpoints | File groups and slices |
| Atomic commit | Catalog pointer swap | Create next log file if absent | Instant state transition |
| Row-level deletes | Delete files, deletion vectors | Deletion vectors | Merge-on-read log files |
All three keep immutable Parquet 129 files with statistics for skipping and need maintenance. The main difference is the commit: Iceberg delegates it to a catalog, while Delta Lake creates the next numbered log file, which needs put-if-absent from the store (Consistency and Versioning).