cmasone-attic 55025ee801 Add caching layer to demo-server (#2228)
This patch creates a new kind of chunks.Factory that demo-server
uses to vend ChunkStore instances that all share the same
MemoryStore-based Chunk cache. This cache _will_ grow without bound,
but the current RAM/data ratio on demo.noms.io means that, in practice,
we will be fine for a bit.

This will need to be removed in favor of a real solution in Issue #2227

Fixes #2009
2016-08-01 11:55:16 -07:00
2016-07-30 13:11:42 -07:00
2016-07-29 18:08:23 -07:00
2016-07-29 18:08:23 -07:00
2016-08-01 01:17:03 -07:00

[![Build Status](http://jenkins.noms.io/job/NomsServer/badge/icon)](http://jenkins.noms.io/job/NomsServer)

Noms is a decentralized database based on ideas from Git.

This repository contains two reference implementations of the database—one in Go, and one in JavaScript. It also includes a number of tools and sample applications.

About Noms

Noms is different from other databases. It is:

  • Content-addressed. If you have some data you want to put into Noms, you don't have to worry about whether it already exists. Duplicate data is automatically ignored. There is no update, only insert.

  • Append-only. When you commit data to Noms, you aren't overwriting anything. Instead you're adding to a historical record. By default, data is never removed from Noms. You can see the entire history of the database, diff any two commits, or rewind to any previous point in time.

  • Strongly-typed. Noms doesn't have schemas that you design up front. Instead, each version of a Noms database has a type, which is generated automatically as you add data. You can write code against the type of a Noms database, confident that you've handled all the cases you need to.

  • Decentralized. If I give you a copy of my database, you and I can modify our copies disconnected from each other, and come back together and merge our changes efficiently and correctly days, weeks, or years later.

  • Incomplete. This is a somewhere between alpha and beta software. We are fairly confident in the core format, but major features like queries, concurrency, automatic merging, and GC are not yet implemented. Please keep a separate backup of data outside of Noms until we are out of beta.

Setup

Noms is supported on Mac OS X and Linux. Windows usually works, but isn't officially supported.

  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

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

Command-Line Tour  |  Go SDK Tour  |  JavaScript SDK Tour  |  Intro to Noms  |  FAQ


## What Noms is Good For

Data Version Control

Noms gives you the entire Git workflow, but for large-scale structured (or unstructured) data. Fork, merge, track history, efficiently synchronize changes, etc.


noms diff and noms log on large datasets

An Application Database with History

A database where every change is automatically and efficiently preserved. Instantly revert to, fork, or work from any historical commit.


Versioning, Diffing, and Syncing with Noms

An Archival Database

Trivially import snapshots from any format or API. Data is automatically versioned and deduplicated. Track the history of each datasource. Search across data sources.

TODO: Sample and video


## Status

Noms is in beta. Please keep a backup of important data in some other store.

We are working toward a 1.0, after which time we will remove this warning and guarantee format stability.


## Talk
Description
Dolt – Git for Data
Readme Apache-2.0 427 MiB
Latest
2026-02-09 20:09:01 -06:00
Languages
Go 84.1%
Shell 15%
JavaScript 0.3%
Java 0.1%
Python 0.1%