{"id":13393165,"url":"https://github.com/attic-labs/noms","last_synced_at":"2025-03-13T19:31:27.280Z","repository":{"id":33138711,"uuid":"36778364","full_name":"attic-labs/noms","owner":"attic-labs","description":"The versioned, forkable, syncable database","archived":true,"fork":false,"pushed_at":"2021-08-27T22:44:22.000Z","size":72323,"stargazers_count":7450,"open_issues_count":293,"forks_count":268,"subscribers_count":199,"default_branch":"master","last_synced_at":"2024-04-27T14:31:15.098Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/attic-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-06-03T03:44:49.000Z","updated_at":"2024-04-22T17:30:53.000Z","dependencies_parsed_at":"2022-07-13T10:20:26.094Z","dependency_job_id":null,"html_url":"https://github.com/attic-labs/noms","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attic-labs%2Fnoms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attic-labs%2Fnoms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attic-labs%2Fnoms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attic-labs%2Fnoms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/attic-labs","download_url":"https://codeload.github.com/attic-labs/noms/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243205246,"owners_count":20253425,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T17:00:44.470Z","updated_at":"2025-03-13T19:31:24.224Z","avatar_url":"https://github.com/attic-labs.png","language":"Go","funding_links":[],"categories":["Go","Uncategorized","Database","Application Definition \u0026 Development","others","\u003ca name=\"Go\"\u003e\u003c/a\u003eGo"],"sub_categories":["Uncategorized","Security"],"readme":"# Warning - This project is not active\n\nNoms is not being maintained. You shouldn't use it, except maybe for fun or research.\n\nIf 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.\n\nSend me (aaron at aaronboodman.com) a message if you have questions.\n\n\u003chr\u003e\n\n\n\u003cimg src='doc/nommy_cropped_smaller.png' width='350' title='Nommy, the snacky otter'\u003e\n\n[Use Cases](#use-cases)\u0026nbsp; | \u0026nbsp;[Setup](#setup)\u0026nbsp; | \u0026nbsp;[Status](#status)\u0026nbsp; | \u0026nbsp;[Documentation](./doc/intro.md)\u0026nbsp; | \u0026nbsp;[Contact](#contact-us)\n\u003cbr\u003e\u003cbr\u003e\n\n[![Build Status](https://travis-ci.org/attic-labs/noms.svg?branch=master)](https://travis-ci.org/attic-labs/noms)\n[![Docker Build Status](https://img.shields.io/docker/build/noms/noms.svg)](https://hub.docker.com/r/noms/noms/)\n[![GoDoc](https://godoc.org/github.com/attic-labs/noms?status.svg)](https://godoc.org/github.com/attic-labs/noms)\n\n# Welcome\n\n*Noms* is a decentralized database philosophically descendant from the Git version control system.\n\nLike Git, Noms is:\n\n* **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.\n* **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.\n\nUnlike Git, Noms is a database, so it also:\n\n* 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))\n* **Scales well** to large amounts of data and concurrent clients\n* 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)\")\n* Supports **efficient indexes** (see: [Noms prolly-trees](https://github.com/attic-labs/noms/blob/master/doc/intro.md#prolly-trees-probabilistic-b-trees))\n* Features a **flexible query model** (see: [GraphQL](./go/ngql/README.md))\n\nA Noms database can reside within a file system or in the cloud:\n\n* 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.\n\nFinally, because Noms is content-addressed, it yields a very pleasant programming model.\n\nWorking 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.\n\n\u003cbr\u003e\n\n## Use Cases\n\n#### [Decentralization](./doc/decent/about.md)\n\nBecause Noms is very good at sync, it makes a decent basis for rich, collaborative, fully-decentralized applications.\n\n#### Mobile Offline-First Database\n\nEmbed Noms into mobile applications, making it easier to build offline-first, fully synchronizing mobile applications.\n\n\u003cbr\u003e\n\n## Install\n\n1. Download the latest release:\n - [**Linux**](https://github.com/attic-labs/noms/releases/download/latest/linux.zip)\n - [**Mac OS**](https://github.com/attic-labs/noms/releases/download/latest/osx.zip)\n2. Unzip the directory somewhere and add it to your `$PATH`\n3. Verify Noms is installed correctly:\n\n```\n$ noms version\nformat version: 7.18\nbuilt from \u003cdeveloper build\u003e\n```\n\n\u003cbr\u003e\n\n## Run\n\nImport some data:\n\n```shell\ngo install github.com/attic-labs/noms/samples/go/csv/csv-import\ncurl 'https://data.cityofnewyork.us/api/views/kku6-nxdu/rows.csv?accessType=DOWNLOAD' \u003e /tmp/data.csv\ncsv-import /tmp/data.csv /tmp/noms::nycdemo\n```\n\nExplore:\n\n```shell\nnoms show /tmp/noms::nycdemo\n```\n\nShould show:\n\n```go\nstruct Commit {\n  meta: struct Meta {\n    date: \"2017-09-19T19:33:01Z\",\n    inputFile: \"/tmp/data.csv\",\n  },\n  parents: set {},\n  value: [  // 236 items\n    struct Row {\n      countAmericanIndian: \"0\",\n      countAsianNonHispanic: \"3\",\n      countBlackNonHispanic: \"21\",\n      countCitizenStatusTotal: \"44\",\n      countCitizenStatusUnknown: \"0\",\n      countEthnicityTotal: \"44\",\n...\n```\n\n\u003cbr\u003e\n\n## Status\n\nNobody is working on this right now. You shouldn't rely on it unless you're willing to take over development yourself.\n\n### Major Open Issues\n\nThese are the major things you'd probably want to fix before relying on this for most systems.\n\n* Sync performance with long commit chains (https://github.com/attic-labs/noms/issues/2233)\n* Migration (https://github.com/attic-labs/noms/issues/3363)\n* Garbage Collection (https://github.com/attic-labs/noms/issues/3374)\n* Query language\n  * We started trying to hack in GraphQL but it's incomplete and maybe not the right thing. See: [ngql](./go/ngql/README.md)\n* [Various other smaller bugs and improvements](https://github.com/attic-labs/noms/issues?q=is%3Aissue+is%3Aopen+label%3AP0)\n\n\u003cbr\u003e\n\n## Learn More About Noms\n\nFor the decentralized web: [The Decentralized Database](doc/decent/about.md)\n\nLearn the basics: [Technical Overview](doc/intro.md)\n\nTour the CLI: [Command-Line Interface Tour](doc/cli-tour.md)\n\nTour the Go API: [Go SDK Tour](doc/go-tour.md)\n\n\u003cbr\u003e\n\n## Contact Us\n\nInterested 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:\n\n- [Mailing List](https://groups.google.com/forum/#!forum/nomsdb)\n- [Twitter](https://twitter.com/nomsdb)\n\n## Licensing\n\nNoms is open source software, licensed by Attic Labs, Inc. under the Apache License, Version 2.0.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fattic-labs%2Fnoms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fattic-labs%2Fnoms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fattic-labs%2Fnoms/lists"}