GithubHelp home page GithubHelp logo

rklabs / noms Goto Github PK

View Code? Open in Web Editor NEW

This project forked from attic-labs/noms

1.0 1.0 0.0 26.41 MB

The versioned, forkable, syncable database

License: Other

Go 62.50% Shell 0.11% JavaScript 37.32% Python 0.07%

noms's Introduction

[![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.


## 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


## Explore
Visually explore a demo instance of Noms

## 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

We are fairly confident in the core data format, and plan to support Noms database version 7 and forward. If you create a database with Noms today, future versions will have migration tools to pull your databases forward.

However, many important features are not yet implemented including a query system, concurrency, auto-merging, and GC.


## Talk

noms's People

Contributors

arv avatar aboodman avatar cmasone-attic avatar willhite avatar kalman avatar mikegray avatar mnm678 avatar rafaelweinstein avatar jhuangtw avatar ptarjan avatar ahl avatar mzats avatar kyleder avatar mgedigian avatar vinibaggio avatar willglynn avatar zcstarr avatar

Stargazers

Roman avatar

Watchers

Raju Kadam avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.