Package: datom 0.2.0

datom: A Unified Framework for Versioned, Traceable Tabular Data

Provides versioned storage for tabular data without a database or a server. Each table is written as an immutable, content-addressed version -- identical content is detected and stored only once -- while its version history and metadata are kept as code in a 'git' repository and the data itself in a local filesystem or cloud object storage ('S3'). Any past version can be read back exactly by its identifier, and each table records the sources it was derived from, so a project carries full data lineage. A lightweight reader role retrieves current or historical data from storage alone, without 'git' or write access, giving downstream analyses and pipelines a single versioned source of truth. It targets analytical and scientific data management, such as preparing clinical study datasets, and is designed as a foundation for higher-level governance tooling.

Authors:Afshin Mashadi-Hossein [aut, cre, cph]

datom_0.2.0.tar.gz
datom_0.2.0.zip(r-4.7-any)datom_0.2.0.zip(r-4.6-any)datom_0.2.0.zip(r-4.5-any)
datom_0.2.0.tgz(r-4.6-any)datom_0.2.0.tgz(r-4.5-any)
datom_0.2.0.tar.gz(r-4.7-any)datom_0.2.0.tar.gz(r-4.6-any)
datom_0.2.0.tgz(r-4.6-emscripten)
manual.pdf |manual.html✨
DESCRIPTION |NEWS
card.svg |card.png
datom/json (API)

# Install 'datom' in R:
install.packages('datom', repos = c('https://amashadihossein.r-universe.dev', 'https://cloud.r-project.org'))

Bug tracker:https://github.com/amashadihossein/datom/issues

Pkgdown/docs site:https://amashadihossein.github.io

On CRAN:

Conda:

6.00 score 1 stars 12 scripts 469 downloads 50 exports 29 dependencies

Last updated from:6da9a64b8d. Checks:9 OK. Indexed: yes.

TargetResultTimeFilesSyslog
linux-develOK265
source / vignettesOK221
linux-releaseOK260
macos-releaseOK294
macos-oldrelOK338
windows-develOK449
windows-releaseOK453
windows-oldrelOK323
wasm-releaseOK122

Exports:datom_add_memberdatom_assemble_setdatom_check_hashabledatom_clonedatom_example_cutoffsdatom_example_datadatom_fetch_memberdatom_get_conndatom_get_lineagedatom_get_parentsdatom_get_setdatom_historydatom_init_repodatom_lineage_uniondatom_listdatom_list_membersdatom_memberdatom_parentdatom_projectsdatom_pulldatom_readdatom_remove_membersdatom_repo_attach_governancedatom_repo_commitdatom_repo_deletedatom_repo_pushdatom_repo_set_data_storedatom_statusdatom_storage_copydatom_storage_delete_prefixdatom_storage_listdatom_storage_read_jsondatom_storage_verifydatom_storedatom_store_localdatom_store_s3datom_store_s3_credsdatom_structure_membersdatom_summarydatom_syncdatom_sync_manifestdatom_update_membersdatom_validatedatom_writedatom_write_setis_datom_storeis_datom_store_localis_datom_store_s3is_datom_store_s3_credsis_valid_datom_repo

Dependencies:arrowaskpassassertthatbase64encbitbit64clicpp11curldigestfsgluehttr2jsonlitelifecyclemagrittropensslpaws.commonpaws.storagepurrrR6Rcpprlangsystidyselectvctrswithrxml2yaml

Citing a Set of Tables
The aim | Set up the project | Version 1: register every input | Version 2: derive the output | Use it | Refresh: new data arrives | Who can read what | Where you are | Teardown

Last update: 2026-10-03
Started: 2026-10-03

Starting on S3
Requirements | Load your secrets | Settings | Where the data goes | Build the store | Create the repository | Connect | Step 1: Sync one file | Step 2: Update one file | Step 3: Sync again with nothing new | Step 4: A batch of files | Reading as a reader | Where you are | What next | Governance and migration come later | Teardown

Last update: 2026-10-03
Started: 2026-06-28

Version SHAs: The Three-SHA Identity Model
data_sha: the canonical content hash | Why not just hash the parquet bytes | The datom table contract | Where this bites | Check before you write | The recourse table | The ingestion allowlist | The identity decisions | metadata_sha: the version | The dedup guard is full-history | parquet_sha: stored-object integrity | Change classification | What metadata reveals about your data | How far the cross-language claim goes | One caveat that is not ours to fix | Derived columns: when arithmetic breaks cross-platform identity | The guarantee direction | Which operations are stable | Cross-language note | Practical advice | What you can rely on

Last update: 2026-10-03
Started: 2026-04-30

Getting Started
Requirements | Configure your environment | Build a store | Initialize the data repository | Connect | Step 1: Sync one file | Step 2: Update one file | Step 3: No-op repeat | Step 4: A batch of files | Project health checks | Reading as a reader | Writing a computed table with datom_write() | The datom table contract | Where you are | Teardown

Last update: 2026-07-26
Started: 2026-07-12

The datom Model: Code in Git, Data in Cloud
The split | Property 1: Immutability is automatic | Property 2: The metadata is reviewable like code | Property 3: Readers don't need write access | Property 4: Storage is swappable | What stays in the metadata | What this isn't | Where this leads

Last update: 2026-07-12
Started: 2026-04-30

Tracing Data Lineage
Setup | A simple study: raw imports to derived analysis | Deriving a table | Propagating lineage further downstream | Recomputing lineage consistency | Key points

Last update: 2026-07-12
Started: 2026-05-16

Serverless and Distributed by Design
What datom needs to function | What runs where | Why no server | What the absence of a server costs | The "distributed by design" half | Where this leads

Last update: 2026-06-28
Started: 2026-04-30

Readme and manuals

Help Manual

Help pageTopics
datom: A Unified Framework for Versioned, Traceable Tabular Datadatom-package datom
Add One Member to a Setdatom_add_member
Start Assembling a Setdatom_assemble_set
Check Whether a Table Can Be Hashed by datomdatom_check_hashable
Clone a datom Repositorydatom_clone
Monthly Cutoff Dates for Example Studydatom_example_cutoffs
Load Example Clinical Trial Datadatom_example_data
Get the Data Behind One Member of a Setdatom_fetch_member
Get a Pointer to a datom Projectdatom_get_conn
Show a Table's Original Sources or Direct Inputsdatom_get_lineage
Get Parent Lineage for a Tabledatom_get_parents
Read a datom Setdatom_get_set
Show Version Historydatom_history
Create a New datom Projectdatom_init_repo
Union and Deduplicate source_lineage Listsdatom_lineage_union
List the Tables and Sets in a Projectdatom_list
List a Set's Members and Their Labelsdatom_list_members
Declare a Member of a Setdatom_member
Name an Input for a Table You Are About to Writedatom_parent
List Projects Registered in the Governance Repodatom_projects
Pull Latest Changes from Remotedatom_pull
Read a datom Tabledatom_read
Drop Members from a Setdatom_remove_members
Write the Data-Side Governance Attachment Recorddatom_repo_attach_governance
Commit Content in the Data Repodatom_repo_commit
Delete the Data GitHub Repository and Local Clonedatom_repo_delete
Push the Data Repo to Its Remotedatom_repo_push
Rewrite the Data Store Pointer in project.yamldatom_repo_set_data_store
Show Repository Statusdatom_status
Copy All Objects Between Two datom Storage Namespacesdatom_storage_copy
Delete All Objects Under a datom Storage Prefixdatom_storage_delete_prefix
List All Objects in a datom Storage Namespacedatom_storage_list
Read a JSON Document from a datom Storage Namespacedatom_storage_read_json
Verify a Copy Between Two datom Storage Namespacesdatom_storage_verify
Create a datom Storedatom_store
Create a Local Filesystem Store Componentdatom_store_local
Create an S3 Store Componentdatom_store_s3
Create a Credentials-Only S3 Store Componentdatom_store_s3_creds
Group a Set's Members into a Navigable Viewdatom_structure_members
Summarize a datom Projectdatom_summary
Bring New and Changed Files Into a Projectdatom_sync
Preview What a Sync Will Changedatom_sync_manifest
Repoint a Set's Members at Newer Versionsdatom_update_members
Validate Git-Storage Consistencydatom_validate
Save a Data Frame as a datom Tabledatom_write
Save a Set as a New Versiondatom_write_set
Check if Object is a datom Storeis_datom_store
Check if Object is a Local Store Componentis_datom_store_local
Check if Object is an S3 Store Componentis_datom_store_s3
Check if Object is a Credentials-Only S3 Store Componentis_datom_store_s3_creds
Check if Path is a Valid datom Repositoryis_valid_datom_repo
Print a datom Connectionprint.datom_conn
Print a Member Linkprint.datom_link
Print a datom Setprint.datom_set
Print a datom Storeprint.datom_store
Print a Local Store Componentprint.datom_store_local
Print an S3 Store Componentprint.datom_store_s3
Print a Credentials-Only S3 Store Componentprint.datom_store_s3_creds
Print a datom_summaryprint.datom_summary