Apache CouchDB

Document metadata contains revision information, making it possible to merge any differences that may have occurred while the databases were disconnected.

CouchDB implements a form of multiversion concurrency control (MVCC) so it does not lock the database file during writes.

One of CouchDB's distinguishing features is multi-master replication, which allows it to scale across machines to build high-performance systems.

[4] The CouchDB project was created in April 2005 by Damien Katz, a former Lotus Notes developer at IBM.

[13] Replication and synchronization capabilities of CouchDB make it ideal for using it in mobile devices, where network connection is not guaranteed, and the application must keep on working offline.

CouchDB is well suited for applications with accumulating, occasionally changing data, on which pre-defined queries are to be run and where versioning is important (CRM, CMS systems, by example).

[27] As a consequence, view servers have been developed in a variety of languages (JavaScript is the default, but there are also PHP, Ruby, Python and Erlang).

CouchDB includes a number of other open source projects as part of its default package.