OrbitDB is a serverless, distributed, peer-to-peer database. OrbitDB uses IPFS as its data storage and IPFS Pubsub to automatically sync databases with peers. It's an eventually consistent database that uses CRDTs for conflict-free database merges making OrbitDB an excellent choice for decentralized apps (dApps), blockchain applications and local-first web applications. All databases are implemented on top of ipfs-log, an immutable, operation-based conflict-free replicated data structure (CRDT) for distributed systems. If none of the OrbitDB database types match your needs and/or you need case-specific functionality, you can easily implement and use a custom database store of your own. OrbitDB is alpha-stage software. It means OrbitDB hasn't been security audited and programming APIs and data formats can still change. We encourage you to reach out to the maintainers if you plan to use OrbitDB in mission critical systems.
Features
- An immutable (append-only) log with traversable history. Useful for "latest N" use cases or as a message queue
- Mutable log with traversable history. Entries can be added and removed. Useful for "shopping cart" type of use cases, or for example as a feed of blog posts or "tweets"
- Key-value database just like your favourite key-value database
- 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
- Useful for counting events separate from log/feed data
- Compatible with js-ipfs versions <= 0.52 and go-ipfs versions <= 0.6.0