OrbitDB
OrbitDB is a serverless, distributed, peer-to-peer database. OrbitDB uses IPFS as its data storage and Libp2p Pubsub to automatically sync databases with peers. It's an eventually consistent database that uses Merkle-CRDTs for conflict-free database writes and merges making OrbitDB an excellent choice for p2p and decentralized apps, blockchain applications and local-first web applications.
OrbitDB provides various types of databases for different data models and use cases:
- events: an immutable (append-only) log with traversable history. Useful for "latest N" use cases or as a message queue.
- documents: a document database to which JSON documents can be stored and indexed by a specified key. Useful for building search indices or version controlling documents and data.
- keyvalue: a key-value database just like your favourite key-value database.
- keyvalue-indexed: key-value data indexed in a Level key-value database.
All databases are implemented on top of OrbitDB's OpLog, an immutable, cryptographically verifiable, operation-based conflict-free replicated data structure (CRDT) for distributed systems. OpLog is formalized in the paper Merkle-CRDTs. You can also easily extend OrbitDB by implementing and using a custom data model benefitting from the same properties as the default data models provided by the underlying Merkle-CRDTs.
This is the Javascript implementation and it works both in Browsers and Node.js with support for Linux, OS X, and Windows.
A Go implementation is developed and maintained by the Berty project at berty/go-orbit-db.
Installation
Install OrbitDB and its dependencies:
npm install @orbitdb/core helia