CouchDB
Apache CouchDB
|
|
---|---|
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
- J. Chris Anderson, Jan Lehnardt, and Noah Slater: CouchDB: The Definitive Guide. O'Reilly, Sebastopol / CA January 2010. ISBN 0-596-15589-1 . In English, text is licensed under the Creative Commons Attribution License. A preliminary version, "Rough Cuts Version", was released in 2008.
- Christopher Chandler: CouchDB in Action . Manning, Greenwich / CT 2009. ISBN 1-935182-28-5 .
- Mario Scheliga: CouchDB in a nutshell . O'Reilly, Cologne April 30, 2010. ISBN 3-89721-559-4 . In German language.
- Oliver Frommel: Relax. On: Linux-Magazin Online, September 29, 2009.
- Rudolf Jansen: CouchDB. Popular representative of the "NoSQL" databases. On: heise developer, February 12, 2010.
- Andreas Wenk and Till Klampäckel: CouchDB: The practical book for developers and administrators. Galileo Computing, September 28, 2011. ISBN 978-3836216708 . In German language.
- Oliver Kurowski: CouchDB with PHPentwickler.press , June 2012, ISBN 978-3-86802-068-7 . In German language.
Web links
-
Official website (English)
- Official Wiki (English)
- Podcast episode FS136 with the topic CouchDB by Tim Pritlove on Freak Show (July 2014)
- Podcast episode CRE125 on CouchDB by Tim Pritlove on Chaosradio Express (June 2009)
Individual evidence
- ↑ projects.apache.org . (accessed on April 8, 2020).
- ↑ Release 3.1.0 . May 4, 2020 (accessed July 14, 2020).
- ↑ Christopher Chandler: CouchDB in Action (PDF; 1.1 MB) . Manning, Greenwich / CT 2009, p. 8. ISBN 1-935182-28-5 .
- ↑ Port Numbers on the IANA website, last update of the document on June 19, 2009. (Accessed June 21, 2009)
- ↑ New Gig - Blog entry from January 1st, 2008 on Damien Katz's website. (Accessed June 21, 2009)
- ↑ Damien Katz and CouchDB - blog entry from January 16, 2008 on the website of Anant Jhingran. (Accessed June 21, 2009)
- ↑ Committers on the CouchDB project page at Apache Incubator.
- ^ Rudolf Jansen: Freedom for the documents . In: heise Developer . Heise Zeitschriften Verlag GmbH & Co. KG. February 12, 2010. Retrieved August 4, 2010.
- ↑ Apache mailing list announcement of February 9, 2008 on mail-archives.apache.org (Accessed January 31, 2017.)
- ^ O'Reilly Emerging Technology Conference - ETech 2008: CouchDB from 10,000 ft , talk by Jan Lehnardt on March 6, 2008. (Accessed June 21, 2009)
- ^ 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)
- ↑ Incubated Projects on Apache, table Graduated from incubation with start and end dates February 12, 2008 to November 19, 2008. (Accessed June 21, 2009)
- ^ A b CouchDB in the wild - A list of software projects and websites that use CouchDB. (Accessed June 21, 2009)
- ↑ http://www.nytimes.com/external/idg/2010/07/14/14idg-couchdb-nosql-database-ready-for-production-use-58614.html
- ↑ https://www.heise.de/developer/meldung/CouchDB-unterstuetzt-SSL-nativ-1256145.html
- ^ E-mail from Elliot Murphy (Canonical) to the CouchDB developer list
- ↑ heise Developer: Canonicals CouchDB replacement
- ↑ U1DB Philosophy ( page no longer available , search in web archives ) Info: The link was automatically marked as defective. Please check the link according to the instructions and then remove this notice.
- ↑ 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)
- ↑ 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.
- ↑ https://github.com/langalex/couch_potato
- ↑ https://web.archive.org/web/20140309095728/http://couchapp.org/page/index
- ↑ https://mustache.github.io/
- ↑ Published as an e-book ( Manning Early Access ) in April 2009, print edition announced for December 2009.