# attic-labs/noms

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/attic-labs-noms).**

7,422 stars · 267 forks · Go · Apache-2.0 · archived

## Links

- GitHub: https://github.com/attic-labs/noms
- awesome-repositories: https://awesome-repositories.com/repository/attic-labs-noms.md

## Description

Noms is a distributed version control database and content-addressable data store. It identifies data by cryptographic hashes to ensure integrity and deduplication, while tracking dataset state changes through a sequence of immutable commits to enable branching, forking, and historical recovery.

The system functions as a peer-to-peer data synchronizer, reconciling state between disconnected database instances to ensure all nodes converge on the same data. It distinguishes itself as a schema-flexible document store that supports self-describing types, allowing schemas to evolve and widen as new information is added without requiring manual migrations.

The platform exposes data via a GraphQL API for structured querying and supports offline-first application state by embedding database capabilities directly into apps. Its capability surface includes atomic transactions, range queries, and the ability to persist data across local file systems or remote cloud buckets.

## Tags

### Data & Databases

- [Content-Addressable Storage](https://awesome-repositories.com/f/data-databases/content-addressable-storage.md) — Implements a content-addressable storage architecture where data is identified by cryptographic hashes to ensure integrity and deduplication.
- [Commit-Based Versioning](https://awesome-repositories.com/f/data-databases/database-versioning/commit-based-versioning.md) — Tracks dataset state changes through immutable commits to enable branching, forking, and historical recovery.
- [Application State Syncs](https://awesome-repositories.com/f/data-databases/cloud-storage-sync-tools/application-state-syncs.md) — Reconciles changes between disconnected database instances to ensure all copies eventually converge on the same state. ([source](https://github.com/attic-labs/noms/blob/master/README.md))
- [Complex Data Structure Stores](https://awesome-repositories.com/f/data-databases/complex-data-structure-stores.md) — Manages organized information using complex types like lists and structs supported by atomic transactions. ([source](https://github.com/attic-labs/noms#readme))
- [Content-Based Deduplication](https://awesome-repositories.com/f/data-databases/content-based-deduplication.md) — Eliminates redundant data by identifying identical entries through cryptographic content hashing. ([source](https://github.com/attic-labs/noms/blob/master/README.md))
- [Versioned Dataset Snapshots](https://awesome-repositories.com/f/data-databases/data-schema-management/schema-versioning/immutable-schema-snapshots/versioned-dataset-snapshots.md) — Tracks dataset state changes through a sequence of immutable snapshots to enable branching and historical auditing.
- [Version Control Snapshots](https://awesome-repositories.com/f/data-databases/data-snapshotting/state-snapshots/version-control-snapshots.md) — Records full states of the repository as immutable snapshots to enable forking and historical recovery. ([source](https://github.com/attic-labs/noms/blob/master/doc/decent/about.md))
- [Self-Describing Types](https://awesome-repositories.com/f/data-databases/data-structure-definitions/user-defined-types/self-describing-types.md) — Provides self-describing types that allow data interoperability without requiring a prior schema agreement. ([source](https://github.com/attic-labs/noms/blob/master/doc/intro.md))
- [Dataset Pointer Syncing](https://awesome-repositories.com/f/data-databases/data-synchronization-configurations/cloud-storage-sync-triggers/dataset-pointer-syncing.md) — Copies named pointers between databases by verifying content-addressed chunks to minimize data transfer. ([source](https://github.com/attic-labs/noms/blob/master/doc/intro.md))
- [Schema Evolution](https://awesome-repositories.com/f/data-databases/data-type-schemas/schema-evolution.md) — Widen or change container types implicitly as new data is added without rewriting existing stored information. ([source](https://github.com/attic-labs/noms/blob/master/doc/intro.md))
- [Integrity Verifiers](https://awesome-repositories.com/f/data-databases/database-maintenance/integrity-verifiers.md) — Produces a single unique hash representing the entire database state to verify that data is identical across peers. ([source](https://github.com/attic-labs/noms/blob/master/doc/decent/about.md))
- [Database Versioning](https://awesome-repositories.com/f/data-databases/database-versioning.md) — Tracks all previous versions of data to enable comparing two states or branching from a historical point. ([source](https://github.com/attic-labs/noms#readme))
- [Decentralized Storage](https://awesome-repositories.com/f/data-databases/decentralized-storage.md) — Persists content-addressable data chunks across local storage or blockstores to avoid full replication on every node. ([source](https://github.com/attic-labs/noms/blob/master/doc/decent/about.md))
- [Distributed Data Synchronization Systems](https://awesome-repositories.com/f/data-databases/distributed-data-synchronization-systems.md) — Provides mechanisms to reconcile state and ensure convergence across distributed database instances.
- [Immutable Commit Versioning](https://awesome-repositories.com/f/data-databases/immutable-commit-versioning.md) — Tracks state changes using a progression of immutable commit structures to enable branching and merging. ([source](https://github.com/attic-labs/noms/blob/master/doc/intro.md))
- [Immutable Data Commits](https://awesome-repositories.com/f/data-databases/immutable-data-commits.md) — Saves a new state of a dataset by creating an immutable commit that preserves previous versions. ([source](https://github.com/attic-labs/noms/blob/master/doc/go-tour.md))
- [Offline-First Persistence](https://awesome-repositories.com/f/data-databases/offline-first-persistence.md) — Implements offline-first persistence by embedding database capabilities directly into applications for functionality without network connectivity. ([source](https://github.com/attic-labs/noms/blob/master/README.md))
- [Peer-to-Peer State Synchronization](https://awesome-repositories.com/f/data-databases/peer-to-peer-state-synchronization.md) — Synchronizes changes between multiple concurrent peers in a network to ensure all nodes converge to the same state. ([source](https://github.com/attic-labs/noms/blob/master/doc/decent/about.md))
- [Schema Evolutions](https://awesome-repositories.com/f/data-databases/schema-evolutions.md) — Supports schema-less type evolution, allowing container types to widen implicitly as new data is added.
- [Content-Addressable Stores](https://awesome-repositories.com/f/data-databases/storage-abstraction/content-addressable-stores.md) — Uses a content-addressable store to ensure data integrity and efficient deduplication.
- [Versioned Datasets](https://awesome-repositories.com/f/data-databases/versioned-datasets.md) — Allows initializing named collections of versioned data within a database to serve as the primary interface for operations. ([source](https://github.com/attic-labs/noms/blob/master/doc/go-tour.md))
- [GraphQL API Generators](https://awesome-repositories.com/f/data-databases/data-access-querying/database-apis/graphql-api-generators.md) — Provides a GraphQL API that automatically derives schemas and resolvers from internal database structures for structured querying.
- [Dataset Comparators](https://awesome-repositories.com/f/data-databases/data-collections-datasets/dataset-comparators.md) — Provides dataset comparators to calculate and display the differences between any two specific dataset versions. ([source](https://github.com/attic-labs/noms/blob/master/doc/cli-tour.md))
- [Version History Retrieval](https://awesome-repositories.com/f/data-databases/data-management/table-data-managers/data-versioning/version-history-retrieval.md) — Provides version history retrieval to inspect the chronological sequence of commits and differences for a dataset. ([source](https://github.com/attic-labs/noms/blob/master/doc/cli-tour.md))
- [Atomic Transactions](https://awesome-repositories.com/f/data-databases/database-management-systems/database-systems-management/connection-transaction-management/atomic-transactions.md) — Executes atomic transactions to ensure that a set of changes is applied as a single unit across concurrent clients. ([source](https://github.com/attic-labs/noms#readme))
- [Cloud Storage Backups](https://awesome-repositories.com/f/data-databases/edge-to-cloud-synchronization/cloud-storage-replication/cloud-storage-backups.md) — Exports database snapshots to remote cloud object storage buckets for recovery and durability. ([source](https://github.com/attic-labs/noms#readme))
- [Remote-to-Local Database Synchronizers](https://awesome-repositories.com/f/data-databases/entity-modeling/entity-table-synchronizers/remote-to-local-database-synchronizers.md) — Enables private forking or offline work by copying data between local and remote databases. ([source](https://github.com/attic-labs/noms/blob/master/doc/cli-tour.md))
- [Flexible Metadata Stores](https://awesome-repositories.com/f/data-databases/flexible-metadata-stores.md) — Provides a schema-flexible document store with self-describing types to avoid rigid migrations.
- [Local Data Persistence](https://awesome-repositories.com/f/data-databases/local-data-persistence.md) — Saves database content to local file systems for durable storage. ([source](https://github.com/attic-labs/noms/blob/master/README.md))
- [Merkle-Tree Diffing](https://awesome-repositories.com/f/data-databases/merkle-tree-diffing.md) — Identifies differences between massive datasets using a tree structure to minimize processing time and resource usage. ([source](https://github.com/attic-labs/noms/blob/master/doc/decent/about.md))
- [Optimistic Concurrency Control](https://awesome-repositories.com/f/data-databases/optimistic-concurrency-control.md) — Employs optimistic concurrency control to manage simultaneous writes and maintain consistency across distributed clients.
- [Pluggable Storage Backends](https://awesome-repositories.com/f/data-databases/pluggable-storage-backends.md) — Features pluggable storage backends that abstract data persistence across local file systems and remote cloud buckets.
- [Set Operation Engines](https://awesome-repositories.com/f/data-databases/result-set-search/multi-result-set-fetching/set-operation-engines.md) — Computes unions and intersections across ordered search trees to filter data based on multiple criteria. ([source](https://github.com/attic-labs/noms/blob/master/doc/intro.md))
- [Versioned GraphQL Databases](https://awesome-repositories.com/f/data-databases/versioned-graphql-databases.md) — Combines a content-addressed data store with a GraphQL API and a full history of immutable commits.

### Networking & Communication

- [Version Controlled Databases](https://awesome-repositories.com/f/networking-communication/peer-to-peer-clients/version-controlled-databases.md) — Functions as a distributed version control database supporting branching and forking across peer nodes.
- [Peer-to-Peer Database Replication](https://awesome-repositories.com/f/networking-communication/peer-to-peer-database-replication.md) — Reconciles state between disconnected database instances using a peer-to-peer synchronization engine.
- [Peer-to-Peer State Synchronization](https://awesome-repositories.com/f/networking-communication/peer-to-peer-state-synchronization.md) — Functions as a peer-to-peer synchronizer that reconciles state between disconnected database instances to ensure convergence.

### Software Engineering & Architecture

- [Merkle-Tree Storage Engines](https://awesome-repositories.com/f/software-engineering-architecture/string-processing-algorithms/tree-based-storage/merkle-tree-storage-engines.md) — Utilizes Merkle-tree storage engines to efficiently calculate differences between dataset versions and minimize computational overhead.
- [Concurrent Write Coordinators](https://awesome-repositories.com/f/software-engineering-architecture/shared-caching-topologies/shared-cache-write-permissions/concurrent-write-coordinators.md) — Uses concurrent write coordinators and optimistic locking to prevent data corruption during simultaneous insertions. ([source](https://github.com/attic-labs/noms/blob/master/go/nbs))

### Web Development

- [Cross-Instance Sync Storage](https://awesome-repositories.com/f/web-development/browser-integration-utilities/browser-apis/browser-storage/cross-instance-sync-storage.md) — Efficiently reconciles changes between disconnected database instances to ensure state convergence. ([source](https://github.com/attic-labs/noms#readme))
- [GraphQL APIs](https://awesome-repositories.com/f/web-development/graphql-apis.md) — Exposes internal database types and values through a structured GraphQL API for querying.

### Scientific & Mathematical Computing

- [Range Query Structures](https://awesome-repositories.com/f/scientific-mathematical-computing/range-query-structures.md) — Searches sorted collections of numbers or strings using probabilistic trees to find values within a specific range. ([source](https://github.com/attic-labs/noms/blob/master/doc/intro.md))
