HOME

TheInfoList



OR:

Apache CouchDB is an
open-source Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use and view the source code, design documents, or content of the product. The open source model is a decentrali ...
document-oriented
NoSQL NoSQL (originally meaning "Not only SQL" or "non-relational") refers to a type of database design that stores and retrieves data differently from the traditional table-based structure of relational databases. Unlike relational databases, which ...
database, implemented in Erlang. CouchDB uses multiple formats and protocols to store, transfer, and process its data. It uses
JSON JSON (JavaScript Object Notation, pronounced or ) is an open standard file format and electronic data interchange, data interchange format that uses Human-readable medium and data, human-readable text to store and transmit data objects consi ...
to store data,
JavaScript JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior. Web browsers have ...
as its query language using
MapReduce MapReduce is a programming model and an associated implementation for processing and generating big data sets with a parallel and distributed algorithm on a cluster. A MapReduce program is composed of a ''map'' procedure, which performs filte ...
, and
HTTP HTTP (Hypertext Transfer Protocol) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, wher ...
for an
API An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
. CouchDB was first released in 2005 and later became an
Apache Software Foundation The Apache Software Foundation ( ; ASF) is an American nonprofit corporation (classified as a 501(c)(3) organization in the United States) to support a number of open-source software projects. The ASF was formed from a group of developers of the ...
project in 2008. Unlike a
relational database A relational database (RDB) is a database based on the relational model of data, as proposed by E. F. Codd in 1970. A Relational Database Management System (RDBMS) is a type of database management system that stores data in a structured for ...
, a CouchDB database does not store data and relationships in tables. Instead, each database is a collection of independent documents. Each document maintains its own data and self-contained schema. An application may access multiple databases, such as one stored on a user's mobile phone and another on a server. 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 Multiversion concurrency control (MCC or MVCC), is a non-locking concurrency control method commonly used by database management systems to provide concurrent access to the database and in programming languages to implement transactional memory. ...
(MVCC) so it does not lock the database file during writes. Conflicts are left to the application to resolve. Resolving a conflict generally involves first merging data into one of the documents, then deleting the stale one. Other features include document-level
ACID An acid is a molecule or ion capable of either donating a proton (i.e. Hydron, hydrogen cation, H+), known as a Brønsted–Lowry acid–base theory, Brønsted–Lowry acid, or forming a covalent bond with an electron pair, known as a Lewis ...
semantics with eventual consistency, (incremental) MapReduce, and (incremental) replication. One of CouchDB's distinguishing features is multi-master replication, which allows it to scale across machines to build high-performance systems. A built-in Web application called Fauxton (formerly Futon) helps with administration.


History

''Couch'' is an acronym for ''cluster of unreliable commodity hardware''. The CouchDB project was created in April 2005 by Damien Katz, a former
Lotus Notes HCL Notes (formerly Lotus Notes then IBM Notes) is a proprietary collaborative software platform for Unix ( AIX), IBM i, Windows, Linux, and macOS, sold by HCLTech. The client application is called Notes while the server component is branded ...
developer at
IBM International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American Multinational corporation, multinational technology company headquartered in Armonk, New York, and present in over 175 countries. It is ...
. He self-funded the project for almost two years and released it as an open-source project under the
GNU General Public License The GNU General Public Licenses (GNU GPL or simply GPL) are a series of widely used free software licenses, or ''copyleft'' licenses, that guarantee end users the freedom to run, study, share, or modify the software. The GPL was the first ...
. In February 2008, it became an Apache Incubator project and was offered under the
Apache License The Apache License is a permissive free software license written by the Apache Software Foundation (ASF). It allows users to use the software for any purpose, to distribute it, to modify it, and to distribute modified versions of the software ...
instead. A few months after, it graduated to a top-level project. This led to the first stable version being released in July 2010. In early 2012, Katz left the project to focus on Couchbase Server. Since Katz's departure, the Apache CouchDB project has continued, releasing 1.2 in April 2012 and 1.3 in April 2013. In July 2013, the CouchDB community merged the codebase for BigCouch, Cloudant's clustered version of CouchDB, into the Apache project. The BigCouch clustering framework is included in the current release of Apache CouchDB. Native clustering is supported at version 2.0.0. And the new Mango Query Server provides a simple JSON-based way to perform CouchDB queries without JavaScript or MapReduce. Also in version 2.0.0 was the introduction of Fauxton, the new built-in web interface, to replace Futon, the old built-in web interface.


Main features

; ACID Semantics : CouchDB provides
ACID An acid is a molecule or ion capable of either donating a proton (i.e. Hydron, hydrogen cation, H+), known as a Brønsted–Lowry acid–base theory, Brønsted–Lowry acid, or forming a covalent bond with an electron pair, known as a Lewis ...
semantics.CouchDB, Technical Overview
It does this by implementing a form of Multi-Version Concurrency Control, meaning that CouchDB can handle a high volume of concurrent readers and writers without conflict. ; Built for Offline : CouchDB can replicate to devices (like smartphones) that can go offline and handle data sync for you when the device is back online. ; Distributed Architecture with Replication : CouchDB was designed with bi-directional replication (or synchronization) and off-line operation in mind. That means multiple replicas can have their own copies of the same data, modify it, and then sync those changes at a later time. ; Document Storage : CouchDB stores data as "documents", as one or more field/value pairs expressed as
JSON JSON (JavaScript Object Notation, pronounced or ) is an open standard file format and electronic data interchange, data interchange format that uses Human-readable medium and data, human-readable text to store and transmit data objects consi ...
. Field values can be simple things like strings, numbers, or dates; but ordered lists and
associative array In computer science, an associative array, key-value store, map, symbol table, or dictionary is an abstract data type that stores a collection of (key, value) pairs, such that each possible key appears at most once in the collection. In math ...
s can also be used. Every document in a CouchDB database has a unique id and there is no required document schema. ; Eventual Consistency : CouchDB guarantees eventual consistency to be able to provide both availability and partition tolerance. ; Map/Reduce Views and Indexes : The stored data is structured using views. In CouchDB, each view is constructed by a
JavaScript JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior. Web browsers have ...
function that acts as the Map half of a
map A map is a symbolic depiction of interrelationships, commonly spatial, between things within a space. A map may be annotated with text and graphics. Like any graphic, a map may be fixed to paper or other durable media, or may be displayed on ...
/reduce operation. The function takes a document and transforms it into a single value that it returns. CouchDB can index views and keep those indexes updated as documents are added, removed, or updated. ; HTTP API : All items have a unique URI that gets exposed via HTTP. It uses the HTTP methods POST, GET, PUT and DELETE for the four basic
CRUD In computer programming, create, read, update, and delete (CRUD) are the four basic operations (actions) of persistent storage. CRUD is also sometimes used to describe user interface conventions that facilitate viewing, searching, and changing info ...
(Create, Read, Update, Delete) operations on all resources. CouchDB also offers a built-in administration interface accessible via Web called Fauxton.


Use cases and production deployments

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). Master-master replication is an especially interesting feature, allowing easy multi-site deployments.Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase comparison
from Kristóf Kovács


Users

Users of CouchDB include: *
CERN The European Organization for Nuclear Research, known as CERN (; ; ), is an intergovernmental organization that operates the largest particle physics laboratory in the world. Established in 1954, it is based in Meyrin, western suburb of Gene ...
uses CouchDB as database for the Data Management System at the
Large Hadron Collider The Large Hadron Collider (LHC) is the world's largest and highest-energy particle accelerator. It was built by the CERN, European Organization for Nuclear Research (CERN) between 1998 and 2008, in collaboration with over 10,000 scientists, ...
. *
Red Cross The organized International Red Cross and Red Crescent Movement is a Humanitarianism, humanitarian movement with approximately 16million volunteering, volunteers, members, and staff worldwide. It was founded to protect human life and health, to ...
use the application iDAT for completing casework electronically in disaster areas. Here CouchDB is used as multi-node peer-to-peer offline-first database. *
IBM International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American Multinational corporation, multinational technology company headquartered in Armonk, New York, and present in over 175 countries. It is ...
Cloud services are based at a fundamental level on CouchDB. *
United Airlines United Airlines, Inc. is a Major airlines of the United States, major airline in the United States headquartered in Chicago, Chicago, Illinois that operates an extensive domestic and international route network across the United States and six ...
uses CouchDB for the in-flight entertainment systems in over 3,000 planes. * Amadeus IT Group, for some of their back-end systems. *
Credit Suisse Credit Suisse Group AG (, ) was a global Investment banking, investment bank and financial services firm founded and based in Switzerland. According to UBS, eventually Credit Suisse was to be fully integrated into UBS. While the integration ...
, for internal use at commodities department for their marketplace framework."CouchDB in the wild"
article of the product's Web, a list of software projects and websites using CouchDB
* Meebo, for their social platform (Web and applications). Meebo was acquired by Google and most products were shut down on July 12, 2012. * npm uses CouchDB as replicating database for their package registry. *
Sophos Sophos Limited is a British security software and hardware company. It develops and markets managed security services and cybersecurity software and hardware, such as managed detection and response, incident response and endpoint security s ...
, for some of their back-end systems. *
BBC The British Broadcasting Corporation (BBC) is a British public service broadcaster headquartered at Broadcasting House in London, England. Originally established in 1922 as the British Broadcasting Company, it evolved into its current sta ...
, for a dynamic CMS-Platform. *
Canonical The adjective canonical is applied in many contexts to mean 'according to the canon' the standard, rule or primary source that is accepted as authoritative for the body of knowledge or literature in that context. In mathematics, ''canonical exampl ...
began using it in 2009 for its synchronization service "Ubuntu One", but stopped using it in November 2011. * CANAL+ for international on-demand platform at CANAL+ Overseas. * Protogrid, as storage back-end for their rapid application development framework


Data manipulation: documents and views

CouchDB manages a collection of
JSON JSON (JavaScript Object Notation, pronounced or ) is an open standard file format and electronic data interchange, data interchange format that uses Human-readable medium and data, human-readable text to store and transmit data objects consi ...
documents. The documents are organised via views. Views are defined with
aggregate function In database management, an aggregate function or aggregation function is a function where multiple values are processed together to form a single summary statistic. Common aggregate functions include: * Average (i.e., arithmetic mean) * Count ...
s and filters are computed in parallel, much like
MapReduce MapReduce is a programming model and an associated implementation for processing and generating big data sets with a parallel and distributed algorithm on a cluster. A MapReduce program is composed of a ''map'' procedure, which performs filte ...
. Views are generally stored in the database and their indexes are updated continuously. CouchDB supports a view system using external socket servers and a JSON-based protocol.View Server Documentation
on wiki.apache.org
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).


Accessing data via HTTP

Applications interact with CouchDB via HTTP. The following demonstrates a few examples using
cURL cURL (pronounced like "curl", ) is a free and open source computer program for transferring data to and from Internet servers. It can download a URL from a web server over HTTP, and supports a variety of other network protocols, URI scheme ...
, a command-line utility. These examples assume that CouchDB is running on
localhost In computer networking, localhost is a hostname that refers to the current computer used to access it. The name ''localhost'' is reserved for loopback purposes. It is used to access the network services that are running on the host via t ...
(127.0.0.1) on port 5984.


Open source components

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


See also

*
Document-oriented database A document-oriented database, or document store, is a computer program and data storage system designed for storing, retrieving and managing document-oriented information, also known as semi-structured data. Document-oriented databases are one ...
*
XML database An XML database is a data persistence software system that allows data to be specified, and stored, in XML format. This data can be queried, transformed, exported and returned to a calling system. XML databases are a flavor of document-oriented ...


References


Bibliography

* * * * * *


External links

*
CouchDB: The Definitive Guide

Complete HTTP API Reference

Simple PHP5 library to communicate with CouchDB

Asynchronous CouchDB client for Java

Asynchronous CouchDB client for Scala
* * * {{DEFAULTSORT:CouchDB CouchDB Client-server database management systems Cross-platform software Database-related software for Linux Distributed computing architecture Document-oriented databases Erlang (programming language) Free database management systems NoSQL Structured storage Unix network-related software Free software programmed in Erlang 2005 software