datom 0.1.1
Initial CRAN release. datom provides version-controlled data management for reproducible scientific and clinical workflows — tables are tracked as code in git while actual data lives in cloud storage (S3) or a local filesystem backend.
datom is experimental: the API may change without a deprecation cycle until it reaches a stable release.
datom requires R >= 4.1.0.
Table identity: the datom-cv1 canonical hash
Table identity is defined by a canonical hash of a table’s values (datom-cv1), not by the bytes of its parquet serialization. Hashing the serialization tied identity to the writer: an arrow upgrade or a different compression default produced different bytes for identical data, and therefore a spurious new version. See vignette("design-version-shas") for the model and the identity decisions.
-
Pre-release
data_shavalues change, and there is no migration path. Any table written by a pre-release build carries adata_shacomputed by the old algorithm. Those values are not recomputed, converted, or reconciled — pilots should re-onboard their data. - Three SHAs are now recorded per table:
data_sha(content identity),metadata_sha(the version you pass todatom_read(version = )), andparquet_sha(the stored object’s SHA-256, verified on read before parsing). -
metadata.jsongainshash_algo,parquet_sha, andcolumn_hashes— an ordered per-column digest index from whichdata_shacan be re-derived without downloading data.
Deliberate narrowings
Three capabilities were narrowed on purpose relative to pre-release behaviour.
-
List and exotic columns are refused. A column must be a supported atomic type; list columns and exotic classes now abort the write with actionable
advice. See
datom_check_hashable()for a pre-flight check. datom_sync()accepts only allowlisted formats. Flat tabular files only (csv, tsv, parquet, sas7bdat, xpt, sav, dta, xls, xlsx). Read unsupported formats yourself and pass the data frame todatom_write().Internal
sort_columns/sort_rowsremoved. Row and column order are significant; sort explicitly before writing if order should not matter.
Full API
See the reference index for the complete exported surface at 0.1.0.