Data versioning is the practice of tracking, labeling, and managing discrete versions of datasets so that any specific dataset state can be identified, reproduced, and compared. It is fundamental to machine learning reproducibility (knowing exactly which data version trained which model version) and to safe data pipeline operations (being able to roll back to a known-good dataset state after a bad pipeline run).
Iceberg as a Native Data Versioning System
Apache Iceberg provides built-in data versioning through its snapshot model. Every write operation creates an immutable snapshot, and the snapshot history preserves all previous dataset states indefinitely (until explicitly expired by a maintenance operation). Tools like Project Nessie extend this with Git-like semantics: named branches, tags, and cross-table commits enable teams to tag a snapshot as 'training-v2.3', compare datasets between branches, and merge dataset changes with full conflict detection. DVC (Data Version Control) provides an alternative approach for teams using file-based datasets outside the catalog, tracking dataset file hashes in a Git-compatible format alongside model code.

