github.com/ndau/noms@v1.0.5/README.md (about)

     1  # Warning - This project is not active
     2  
     3  Noms is not being maintained. You shouldn't use it, except maybe for fun or research.
     4  
     5  If you are interested in something like Noms, you probably want Dolt (https://github.com/dolthub/dolt) which is a fork of this project and actively maintained.
     6  
     7  Send me (aaron at aaronboodman.com) a message if you have questions.
     8  
     9  <hr>
    10  
    11  
    12  <img src='doc/nommy_cropped_smaller.png' width='350' title='Nommy, the snacky otter'>
    13  
    14  [Use Cases](#use-cases)&nbsp; | &nbsp;[Setup](#setup)&nbsp; | &nbsp;[Status](#status)&nbsp; | &nbsp;[Documentation](./doc/intro.md)&nbsp; | &nbsp;[Contact](#contact-us)
    15  <br><br>
    16  
    17  [![Build Status](https://travis-ci.org/attic-labs/noms.svg?branch=master)](https://travis-ci.org/attic-labs/noms)
    18  [![Docker Build Status](https://img.shields.io/docker/build/noms/noms.svg)](https://hub.docker.com/r/noms/noms/)
    19  [![GoDoc](https://godoc.org/github.com/attic-labs/noms?status.svg)](https://godoc.org/github.com/attic-labs/noms)
    20  
    21  # Welcome
    22  
    23  *Noms* is a decentralized database philosophically descendant from the Git version control system.
    24  
    25  Like Git, Noms is:
    26  
    27  * **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.
    28  * **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.
    29  
    30  Unlike Git, Noms is a database, so it also:
    31  
    32  * Primarily **stores structured data**, not files and directories (see: [the Noms type system](https://github.com/attic-labs/noms/blob/master/doc/intro.md#types))
    33  * **Scales well** to large amounts of data and concurrent clients
    34  * 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](https://cloud.google.com/spanner/docs/whitepapers/SpannerAndCap.pdf)")
    35  * Supports **efficient indexes** (see: [Noms prolly-trees](https://github.com/attic-labs/noms/blob/master/doc/intro.md#prolly-trees-probabilistic-b-trees))
    36  * Features a **flexible query model** (see: [GraphQL](./go/ngql/README.md))
    37  
    38  A Noms database can reside within a file system or in the cloud:
    39  
    40  * The (built-in) [NBS](./go/nbs) `ChunkStore` implementation provides two back-ends which provide persistence for Noms databases: one for storage in a file system and one for storage in an S3 bucket.
    41  
    42  Finally, because Noms is content-addressed, it yields a very pleasant programming model.
    43  
    44  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.
    45  
    46  <br>
    47  
    48  ## Use Cases
    49  
    50  #### [Decentralization](./doc/decent/about.md)
    51  
    52  Because Noms is very good at sync, it makes a decent basis for rich, collaborative, fully-decentralized applications.
    53  
    54  #### Mobile Offline-First Database
    55  
    56  Embed Noms into mobile applications, making it easier to build offline-first, fully synchronizing mobile applications.
    57  
    58  <br>
    59  
    60  ## Install
    61  
    62  1. Download the latest release:
    63   - [**Linux**](https://github.com/attic-labs/noms/releases/download/latest/linux.zip)
    64   - [**Mac OS**](https://github.com/attic-labs/noms/releases/download/latest/osx.zip)
    65  2. Unzip the directory somewhere and add it to your `$PATH`
    66  3. Verify Noms is installed correctly:
    67  
    68  ```
    69  $ noms version
    70  format version: 7.18
    71  built from <developer build>
    72  ```
    73  
    74  <br>
    75  
    76  ## Run
    77  
    78  Import some data:
    79  
    80  ```shell
    81  go install github.com/attic-labs/noms/samples/go/csv/csv-import
    82  curl 'https://data.cityofnewyork.us/api/views/kku6-nxdu/rows.csv?accessType=DOWNLOAD' > /tmp/data.csv
    83  csv-import /tmp/data.csv /tmp/noms::nycdemo
    84  ```
    85  
    86  Explore:
    87  
    88  ```shell
    89  noms show /tmp/noms::nycdemo
    90  ```
    91  
    92  Should show:
    93  
    94  ```go
    95  struct Commit {
    96    meta: struct Meta {
    97      date: "2017-09-19T19:33:01Z",
    98      inputFile: "/tmp/data.csv",
    99    },
   100    parents: set {},
   101    value: [  // 236 items
   102      struct Row {
   103        countAmericanIndian: "0",
   104        countAsianNonHispanic: "3",
   105        countBlackNonHispanic: "21",
   106        countCitizenStatusTotal: "44",
   107        countCitizenStatusUnknown: "0",
   108        countEthnicityTotal: "44",
   109  ...
   110  ```
   111  
   112  <br>
   113  
   114  ## Status
   115  
   116  Nobody is working on this right now. You shouldn't rely on it unless you're willing to take over development yourself.
   117  
   118  ### Major Open Issues
   119  
   120  These are the major things you'd probably want to fix before relying on this for most systems.
   121  
   122  * Sync performance with long commit chains (https://github.com/attic-labs/noms/issues/2233)
   123  * Migration (https://github.com/attic-labs/noms/issues/3363)
   124  * Garbage Collection (https://github.com/attic-labs/noms/issues/3374)
   125  * Query language
   126    * We started trying to hack in GraphQL but it's incomplete and maybe not the right thing. See: [ngql](./go/ngql/README.md)
   127  * [Various other smaller bugs and improvements](https://github.com/attic-labs/noms/issues?q=is%3Aissue+is%3Aopen+label%3AP0)
   128  
   129  <br>
   130  
   131  ## Learn More About Noms
   132  
   133  For the decentralized web: [The Decentralized Database](doc/decent/about.md)
   134  
   135  Learn the basics: [Technical Overview](doc/intro.md)
   136  
   137  Tour the CLI: [Command-Line Interface Tour](doc/cli-tour.md)
   138  
   139  Tour the Go API: [Go SDK Tour](doc/go-tour.md)
   140  
   141  <br>
   142  
   143  ## Contact Us
   144  
   145  Interested in using Noms? Awesome! We would be happy to work with you to help understand whether Noms is a fit for your problem. Reach out at:
   146  
   147  - [Mailing List](https://groups.google.com/forum/#!forum/nomsdb)
   148  - [Twitter](https://twitter.com/nomsdb)
   149  
   150  ## Licensing
   151  
   152  Noms is open source software, licensed by Attic Labs, Inc. under the Apache License, Version 2.0.