CouchDB
By Apache Software Foundation
Apache CouchDB is an open-source NoSQL document database that stores data as JSON documents and exposes an HTTP/REST API as its primary interface, with built-in support for multi-master replication.
Definition
Apache CouchDB is an open-source NoSQL document database that stores data as JSON documents and exposes an HTTP/REST API as its primary interface, with built-in support for multi-master replication.
Overview
Unlike a traditional relational database such as PostgreSQL, CouchDB stores data as schema-flexible JSON documents rather than rows and tables — similar in spirit to MongoDB — but with a distinguishing design choice: every interaction with the database — reading, writing, and even querying via "views" — happens over plain HTTP, making it directly accessible from a browser or any HTTP client without a separate driver library. CouchDB uses multi-version concurrency control (MVCC), so readers never block writers and vice versa, and it's built around a replication protocol designed to be robust across unreliable networks — changes can sync between servers, or even down to browser-embedded databases like PouchDB, and later reconcile any conflicting edits. This makes CouchDB particularly well suited to offline-first applications that need to keep working without a network connection and sync up once connectivity returns. Written in Erlang, a language built for fault tolerance and concurrency, CouchDB has long been positioned less around raw query performance and more around resilience and replication — a different set of tradeoffs than search-oriented document stores like Elasticsearch or general-purpose document databases optimized for rich querying.
Key Features
- JSON documents accessed and queried entirely over an HTTP/REST API
- Multi-version concurrency control (MVCC) for non-blocking reads and writes
- Built-in, conflict-tolerant multi-master replication
- Offline-first design, including sync with browser-embedded databases like PouchDB
- MapReduce-based views for querying and indexing documents
- Written in Erlang for fault tolerance and concurrency
- ACID guarantees at the single-document level