Files
dolt/README.md
2016-06-05 15:34:24 -07:00

3.7 KiB

#Store All the Things

Noms is a content-addressed, immutable, decentralized, strongly-typed database.

In other words, Noms is Git for data.

Setup

  1. Install Go 1.6+
  2. Ensure your $GOPATH is configured
  3. Type type type:
git clone https://github.com/attic-labs/noms $GOPATH/src/github.com/attic-labs/noms
go install github.com/attic-labs/noms/cmd/...

noms log http://demo.noms.io/cli-tour:film-locations

Samples  |  Command-Line Tour  |  JavaScript SDK Tour  |  Intro to Noms

Features

Versioning
Each commit is retained and can be viewed or reverted
goto: noms log
Type inference
Each dataset has a precise schema that is automatically inferred
goto: type accretion
Atomic commits
Immutability enables atomic commits of any size
goto: Database and Datasets
Diff
Compare structured datasets of any size efficiently
goto: noms diff
Schema versioning
Narrow or widen schemas instantly, without rewriting data
goto: type accretion
Sorted indexes
Fast range queries, on a single or a combination of attributes
goto: indexing
Fork
Create your own isolated branch of a dataset to work on
goto: noms sync
Schema validation (soon)
Optionally constrain commit types on a per-dataset basis
goto: types
Insanely easy import
Noms auto-dedupes snapshots and generates a precise changelog
goto: fb import sample
Sync
Sync disconnected database instances efficiently and correctly
goto: noms sync
Structural typing
Index, search, and match data by structure shape
goto: types
Awesome export
Use dataset history to precisely apply sync changes out of Noms
Example coming soon

Use Cases

We're just getting started, but here are a few use cases we think Noms is especially well-suited for:

  • Data collaboration—Work on data together. Track changes, fork, merge, sync, etc. The entire Git workflow, but on large-scale, structured data.
  • ETL—ETL based on Noms is inherently incremental, undoable, idempotent, and auditable.
  • Data integration and enrichment—A content-addressed database should be a really nice place to do data integration. Enrichments can be modeled as extensions to source data which are trivially undoable.
  • Decentralized database—Noms is a natural fit to move structured data around certain kinds of widely decentralized applications.

Get Involved

Noms is developed in the open. Come say hi.