GithubHelp home page GithubHelp logo

rlugojr / noms Goto Github PK

View Code? Open in Web Editor NEW

This project forked from attic-labs/noms

0.0 3.0 0.0 33.32 MB

The versioned, forkable, syncable database

License: Other

Go 70.88% Shell 0.07% JavaScript 28.94% Python 0.08% HTML 0.02% CSS 0.01%

noms's Introduction


[Command-Line Tour](doc/cli-tour.md)  |  [Go SDK Tour](doc/go-tour.md)  |  [Documentation](doc/index.md)  |  [Project Status](#status)  |  [Download](https://s3-us-west-2.amazonaws.com/downloadstable.noms.io/index.html?prefix=jobs/NomsBuildGoBinaries-v7/)

[![Build Status](http://jenkins3.noms.io/buildStatus/icon?job=NomsMasterBuilder)](http://jenkins3.noms.io/job/NomsMasterBuilder/) [![codecov](https://codecov.io/gh/attic-labs/noms/branch/master/graph/badge.svg)](https://codecov.io/gh/attic-labs/noms) [![GoDoc](https://godoc.org/github.com/attic-labs/noms?status.svg)](https://godoc.org/github.com/attic-labs/noms) [![Slack](http://slack.noms.io/badge.svg)](http://slack.noms.io)

Noms is a decentralized database philosophically descendant from the Git version control system.

Like Git, Noms is:

  • Versioned: By default, all previous versions of the database are retained. You can trivially track how the database evolved to its current state, easily and efficiently compare any two versions, or even rewind and branch from any previous version.
  • Synchronizable: Instances of a single Noms database can be disconnected from each other for any amount of time, then later reconcile their changes efficiently and correctly.

Unlike Git, Noms is a database, so it also:

  • Primarily stores structured data, not files and directories (see: the Noms type system)
  • Scales well to large amounts of data and concurrent clients (TODO: benchmarks)
  • Supports atomic transactions (a single instance of Noms is CP, but Noms is typically run in production backed by S3, in which case it is "effectively CA")
  • Supports efficient indexes (see: Noms prolly-trees)
  • Features a flexible query model (see: GraphQL)

Finally, because Noms is content-addressed, it yields a very pleasant programming model.

Working with Noms is declarative. You don't INSERT new data, UPDATE existing data, or DELETE old data. You simply declare what the data ought to be right now. If you commit the same data twice, it will be deduplicated because of content-addressing. If you commit almost the same data, only the part that is different will be written.


Install Noms

Noms is supported on Mac OS X and Linux. While Windows isn't officially supported, you can compile a Windows build from source, and it usually works.

  1. Download the latest build

The build contains the Noms command-line and some utility tools. You can use tar -ztvf noms-*.tar.gz to view the contents of the tar.

  1. Extract the Noms commands.

tar -xzf noms-*.tar.gz


Get started

  1. Use the noms ds command to connect to the cli-tour database.

    ./noms ds http://demo.noms.io/cli-tour
    chi-building-violations
    chi-building-violations/backup
    chi-building-violations/raw
    ...<snip>..
    sf-film-locations
    sf-film-locations/raw
    sf-fire-inspections
    sf-fire-inspections/raw
    sf-registered-business
    sf-registered-business/raw
    
  2. View the history for the sf-film-locations dataset.

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

Learn Noms

Learn the basics: Introduction to Noms

Tour the CLI: Command-Line Interface Tour

Tour the Go API: Go SDK Tour


Status / Roadmap

Noms is currently under heavy development. Attic Labs plans to use it as an integral piece of an upcoming consumer product.

Data Format

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.

Roadmap

We plan to implement the following for Noms version 8. Beyond that unknown.

API

The Public API will continue to evolve. Pull requests which represent breaking API changes should be marked with APIChange and sent to the slack channel and mailing list below for advance warning and feedback.


Talk

If you'd like to use Noms for something, we'd love to hear. Contact us:

noms's People

Contributors

arv avatar aboodman avatar cmasone-attic avatar kalman avatar willhite avatar mikegray avatar ehalpern avatar zcstarr avatar mnm678 avatar rafaelweinstein avatar ahl avatar ptarjan avatar jhuangtw avatar sunglim avatar mzats avatar mgedigian avatar vinibaggio avatar kyleder avatar jangie avatar kivlor avatar eikeon avatar stormasm avatar rainhead avatar suryagaddipati avatar tegansnyder avatar willglynn avatar moxiegirl avatar wardn avatar

Watchers

James Cloos avatar Ray Lugo, Jr. avatar  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.