Skip to content

Data model and storage overview

Goodomics stores data in three layers: a metadata store, an analytical store, and a file store. Each layer uses a different storage backend and serves different purposes.

Layer Storage backend Examples
Metadata store SQL (e.g. SQLite) Projects, runs, samples, subjects, sample groups, insights, reports
Analytical store OLAP database (e.g. DuckDB) Scalar metrics, sample attributes, variants, CNA segments
File store Filestore (e.g. filestore, S3) Workflow generated artifacts such as reports, logs, VCFs, BAMs

As the name indicates, the metadata store is for storing metadata, such projects, permissions, samples, file metadata, and so on. The analytical and file stores are meant to store the actual omics data.

Metadata store

The metadata store is the glue that links Goodomics together. It records stable identities, relationships, provenance, permissions, and saved application state. Some of its tables describe the datasets available in the analytical store, including their shapes, contracts, fields, and run-specific availability. Others catalog objects in the file store and connect them to projects, imports, runs, samples, and contracts. This lets Goodomics find and interpret data without putting large analytical values or file contents in the metadata database.

Projects, users, and access

Table Purpose
projects Project identity, settings, and visibility.
users User accounts and authentication state.
project_roles Named roles within projects.
project_role_permissions Permissions granted to project roles.
project_memberships Links users to projects and their assigned roles.
installation_state First-run installation and administrator setup state.

Samples, runs, and provenance

Table Purpose
subjects Subject identities associated with projects and samples.
samples Stable biological or material sample identities.
analysis_types Controlled categories of analysis performed.
analysis_methods Workflows, tools, importers, or other methods that produce results.
runs Individual computation, import, notebook, or analysis events.
run_samples Links samples to the runs in which they participated.
run_relationships Provenance relationships between runs.
data_imports Acquisition history and provenance for imported data.
sample_groups Saved definitions of related samples.
sample_group_members Membership of run samples in sample groups.
qc_decisions Quality-control outcomes for runs.
qc_policies Project-specific quality-control thresholds.

Analytical data catalog

Table Purpose
data_shapes Stable identities for reusable, high-level dataset structures.
data_shape_versions Versioned definitions of data shapes.
data_contracts Descriptions of discoverable datasets and their meaning.
data_contract_analysis_types Links data contracts to applicable analysis types.
data_contract_fields Describes the fields available within each data contract.
data_contract_profiles Optional dataset-level summaries used for discovery.
data_contract_field_profiles Optional field-level summaries used for discovery.
run_contracts Records a run-specific occurrence of a data contract.
run_contract_samples Records per-sample availability for a run contract.

Files

Table Purpose
files Catalogs file-store objects and their locations, formats, and checksums.
file_links Links files to projects, imports, runs, samples, and data contracts.

Insights and reports

Table Purpose
insights Saved insight definitions.
insight_revisions Historical configurations for saved insights.
insight_result_cache Cached results for insight queries.
reports Saved report definitions.
report_revisions Historical configurations for saved reports.
rendered_reports Generated report output and its project/run context.
report_result_cache Cached results used by reports.

Data shapes and data contracts provide the high-level vocabulary Goodomics uses to describe analytical datasets without exposing their physical storage layout. See Semantic data contracts for their lifecycle, fields, discovery behavior, and coverage model.

Analytical store

The analytical store contains the authoritative observations that users filter, scan, and aggregate, such as metrics, attributes, feature values, variant calls, genomic regions, and structured results. It exists separately because these large datasets benefit from column-oriented analytical storage and can evolve independently of the smaller relational records in the metadata store.

File store

The file store contains original inputs and generated artifacts such as reports, logs, VCFs, and BAMs. It exists separately so large or binary objects can use storage designed for durable object access, independent scaling, and different retention policies. The metadata store keeps their descriptive records and relationships; the file store holds the content itself.