CouchDB

from Wikipedia, the free encyclopedia
Apache CouchDB

CouchDB.svg
Couchdb screenshot.png
Administration interface futon
Basic data

developer Apache Software Foundation
Publishing year 2005, November 5, 2013
Current  version 3.1.0
( May 4, 2020 )
operating system Linux, Unix, Mac OS X, Windows
programming language Erlang
category document-oriented database
License Apache
German speaking No
couchdb.apache.org

Apache CouchDB is a database management system based on the approach of a document-oriented database , which has been developed as free software since 2005 and distributed under the conditions of Version 2.0 of the Apache license . CouchDB is largely written in the Erlang programming language. JavaScript is used as the script language , which is interpreted by SpiderMonkey on the server side .

The goal of CouchDB is to combine the simple data model of a document-oriented database with the scalability and performance of a professional relational database . For this, CouchDB must be able to be used on multi-core systems and in multi-server environments.

Development history

CouchDB has been developed since 2005 by Damien Katz, who previously worked on Lotus Notes as a senior developer . Its aim is to combine the document -oriented approach of Lotus Notes with the MapReduce approach of Bigtable , the distributed high-performance database from Google , which is not freely available as a proprietary solution. CouchDB was supposed to create a database system without a schema, which enables a high throughput rate through distributability. The name CouchDB is a semi-ironic Backronym that for " C luster o f u nreliable c ommodity h ardware D ata B is ase". (In German: "Database on a cluster of unreliable standard hardware ".)

In November 2007 the IANA CouchDB officially assigned the port number 5984 (tcp / udp).

After Damien Katz ran CouchDB development privately for two years, he worked from January 2008 to 2009 as a full-time employee at IBM , where he drove the further open source development of CouchDB. The IBM manager responsible for hiring Katz did not describe this step as an acquisition , although the use of CouchDB in IBM products is conceivable in the future. In addition to Damien Katz, six other developers are actively working on CouchDB. In late 2009, Katz founded his own company called Relaxed Inc with $ 2 million in venture capital .

From February 2008 CouchDB was in the Incubator of the Apache Software Foundation ; there projects are adapted to the guidelines of the Apache Foundation before they become a top-level project. In March and July 2008 Jan Lehnardt (CouchDB committer) and Damien Katz gave lectures at the O'Reilly developer conferences ETech 2008 and OSCON 2008. In November 2008 CouchDB was upgraded to an Apache Project . Despite the version number of 0.11, CouchDB was already being used productively in around 13 software projects and 40 websites in June 2009.

Version 1.0 was released on July 14, 2010 with drastically improved operating speed and support for Windows operating systems. From version 1.1.0 from the beginning of June 2011, SSL is natively supported.

commitment

CouchDB is used, among other things, in software projects, for websites or in Facebook applications . As a central part of Ubuntu , CouchDB is used to synchronize addresses and bookmarks. At the end of December 2011, Canonical announced, however, that it would turn away from CouchDB and, in future, rely on a slightly different approach based on a database API it had developed with the project name U1DB .

properties

The main features of CouchDB:

architecture
CouchDB is a document-oriented database and, like other document-oriented databases (e.g. Lotus Notes ), differs fundamentally from relational databases (RDBM). In contrast to these RDBMs, CouchDB does not store the data in tables, rows and columns, but manages it in documents consisting of JSON objects (older versions of CouchDB used XML ).
Access and interfaces
CouchDB accesses the data via a REST - HTTP interface.
Indirectly
Libraries and clients are available for many classic programming languages ​​in order to standardize access to CouchDB, as with other data stores (e.g. SQL databases or text files): JavaScript (standard), PHP , Perl , Ruby or Python . Support for other languages ​​is planned.
In addition, CouchDB offers a plug-in architecture that allows the user to add additional functions.
Directly
Documents and files can be delivered directly from CouchDB to a browser without an additional web server . These can reload additional content via Ajax (which is also supplied by CouchDB) and attach it to the DOM . However, HTML generated dynamically on the server side can also be loaded directly.
MapReduce
In contrast to conventional databases, filters with CouchDB are processed in parallel via MapReduce and not during the actual query. Nevertheless, queries (so-called views ) in CouchDB can also contain functions that are executed during the query.
Multiversion Concurrency Control
In order to avoid read-write blockages, Multiversion Concurrency Control does not overwrite data, but always adds new versions. When replicating, the large amount of old versions is not propagated. About the use of ACID is u. a. the version management and high access speed reached.
Merge replication
With the option of merge replication , several instances can be operated simultaneously and independently.

CouchDB is often compared to column-oriented databases, such as Bigtable . CouchDB is not a column-oriented storage, as individual documents within the same database can have a different structure from one another.

Integrated software

Since CouchDB can independently distribute documents directly to the browser as a web server, there is no need for any additional software such as web servers and server-side scripting languages (e.g. PHP, Ruby).

Futon

Futon is a free Javascript application for the administration of the CouchDB itself. Similar to phpMyAdmin , databases on other computers can also be administered via a network connection or via the Internet. Futon is preinstalled in most CouchDB installations and can be accessed via "server: 5984 / _utils".

Couch app

Couchapp is an integrated JavaScript web framework for CouchDB. Couchapp makes extensive use of the convention over configuration paradigm and offers client-side jQuery libraries. Using the Couchapp command line, a structured file tree can be created as a template for a CouchDB application and loaded into the CouchDB as a design document.

The following jQuery extensions are integrated in Couchapp :

Evently
by Javascript events are widgets on the HTML recharged -Grundstruktur. In addition to content elements, elements for processing documents are controlled via Evently.
Mustache
a simple template engine .
Pathbinder
can trigger Javascript events from the URL fragment (hash) ( page.html # below ).
CouchApp Loader
loads a CouchDB design document into the Javascript application.
Markdown
The simplified markdown language Markdown is integrated for entering content .

In contrast to server-based, classic large web frameworks , Couchapp cannot scale images or send e-mails.

PouchDB

PouchDB is a CouchDB API compatible database written in JavaScript and it can be used as a complement to CouchDB. PouchDB runs in the browser and on Node.js and saves the documents in the browser's web storage . One application scenario is the unrestricted function of a web application without permanent internet access . A synchronization of the data between PouchDB and CouchDB can take place at a time when an internet connection is available again.

literature

Web links

Individual evidence

  1. projects.apache.org . (accessed on April 8, 2020).
  2. Release 3.1.0 . May 4, 2020 (accessed July 14, 2020).
  3. Christopher Chandler: CouchDB in Action (PDF; 1.1 MB) . Manning, Greenwich / CT 2009, p. 8. ISBN 1-935182-28-5 .
  4. Port Numbers on the IANA website, last update of the document on June 19, 2009. (Accessed June 21, 2009)
  5. New Gig - Blog entry from January 1st, 2008 on Damien Katz's website. (Accessed June 21, 2009)
  6. Damien Katz and CouchDB - blog entry from January 16, 2008 on the website of Anant Jhingran. (Accessed June 21, 2009)
  7. Committers on the CouchDB project page at Apache Incubator.
  8. ^ Rudolf Jansen: Freedom for the documents . In: heise Developer . Heise Zeitschriften Verlag GmbH & Co. KG. February 12, 2010. Retrieved August 4, 2010.
  9. Apache mailing list announcement of February 9, 2008 on mail-archives.apache.org (Accessed January 31, 2017.)
  10. ^ O'Reilly Emerging Technology Conference - ETech 2008: CouchDB from 10,000 ft , talk by Jan Lehnardt on March 6, 2008. (Accessed June 21, 2009)
  11. ^ O'Reilly Open Source Convention - OSCON 2008: CouchDB from 10,000 ft , talk given by Jan Lehnardt on July 23, 2008. (Accessed June 21, 2009)
  12. Incubated Projects on Apache, table Graduated from incubation with start and end dates February 12, 2008 to November 19, 2008. (Accessed June 21, 2009)
  13. ^ A b CouchDB in the wild - A list of software projects and websites that use CouchDB. (Accessed June 21, 2009)
  14. http://www.nytimes.com/external/idg/2010/07/14/14idg-couchdb-nosql-database-ready-for-production-use-58614.html
  15. https://www.heise.de/developer/meldung/CouchDB-unterstuetzt-SSL-nativ-1256145.html
  16. ^ E-mail from Elliot Murphy (Canonical) to the CouchDB developer list
  17. heise Developer: Canonicals CouchDB replacement
  18. U1DB Philosophy  ( page no longer available , search in web archivesInfo: The link was automatically marked as defective. Please check the link according to the instructions and then remove this notice.@1@ 2Template: Dead Link / people.canonical.com  
  19. Libraries and clients for CouchDB ( Memento of the original from January 31, 2017 in the Internet Archive ) Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. on the CouchDB website, last updated September 29, 2008. (Retrieved June 21, 2009) @1@ 2Template: Webachiv / IABot / wiki.apache.org
  20. Archived copy ( memento of the original from October 25, 2010 in the Internet Archive ) Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. @1@ 2Template: Webachiv / IABot / arbitracker.org
  21. https://github.com/langalex/couch_potato
  22. https://web.archive.org/web/20140309095728/http://couchapp.org/page/index
  23. https://mustache.github.io/
  24. Published as an e-book ( Manning Early Access ) in April 2009, print edition announced for December 2009.