CouchDB

CouchDB
Apache CouchDB
logo
Couchdb screenshot.png
Administrationsoberfläche Futon
Basisdaten
Entwickler Apache Software Foundation
Aktuelle Version 1.1.0
(6. Juni 2011)
Betriebssystem Linux, Unix, Mac OS X, Windows(beta)
Programmier­sprache Erlang
Lizenz Apache
Deutschsprachig Nein
couchdb.org

Apache CouchDB ist ein Datenbankmanagementsystem nach dem Ansatz einer dokumentenorientierten Datenbank, das seit 2005 als freie Software entwickelt und unter den Bedingungen von Version 2.0 der Apache-Lizenz verbreitet wird. CouchDB ist größtenteils in der Programmiersprache Erlang geschrieben. Als Skriptsprache wird JavaScript eingesetzt, welches serverseitig von SpiderMonkey interpretiert wird.

Das Ziel von CouchDB ist es, das einfache Datenmodell einer dokumentenorientierten Datenbank mit der Skalierbarkeit und Leistung einer professionellen relationalen Datenbank zu verknüpfen. Dazu muss CouchDB auf Mehrkern-Systemen und in Multi-Server-Umgebungen einsetzbar sein.

Inhaltsverzeichnis

Entwicklungsgeschichte

CouchDB wird seit 2005 von Damien Katz entwickelt, der vorher als Senior Developer an Lotus Notes gearbeitet hatte. Sein Ziel ist die Verbindung des dokumentenorientierten Ansatzes von Lotus Notes mit dem MapReduce-Ansatz von Google BigTable, der verteilten High-Performance-Datenbank von Google, die als proprietäre Lösung nicht frei verfügbar ist. Mit CouchDB sollte ein schemaloses Datenbanksystem entstehen, das durch Verteilbarkeit eine hohe Performance ermöglicht.[1] Der Name CouchDB ist ein halbironisches Backronym, das für „Cluster of unreliable commodity hardware Data Base“ steht. (Zu deutsch: „Datenbank auf einem Cluster aus unzuverlässiger Standardhardware“.)

Im November 2007 wies die IANA CouchDB offiziell die Portnummer 5984 (tcp/udp) zu.[2]

Nachdem Damien Katz die CouchDB-Entwicklung für zwei Jahre privat betrieb, arbeitete er von Januar 2008[3] bis 2009 als Vollzeitangestellter von IBM, und trieb dort die weitere Opensource-Entwicklung von CouchDB voran. Der für die Einstellung von Katz verantwortliche IBM-Manager bezeichnete diesen Schritt nicht als Akquisition, wenngleich in der Zukunft die Verwendung von CouchDB in IBM-Produkten vorstellbar sei.[4] Neben Damien Katz arbeiten sechs weitere Entwickler aktiv an CouchDB. (Stand Juni 2009)[5] Ende 2009 gründeten Katz mit 2 Millionen Dollar Venture-Kapital eine eigene Firma namens Relaxed Inc. [6]

CouchDB war ab Februar 2008 im Incubator (zu Deutsch: Brutkasten) der Apache Software Foundation;[7] dort werden Projekte an die Richtlinien der Apache Foundation angepasst, bevor sie ein Top-Level-Projekt werden. Im März und im Juli 2008 hielten Jan Lehnardt (CouchDB-Committer) und Damien Katz Vorträge auf den O’Reilly-Entwicklerkonferenzen ETech 2008[8] und OSCON 2008.[9] Im November 2008 wurde CouchDB zu einem Apache Project aufgewertet.[10] Trotz der Versionsnummer von 0.11 wurde CouchDB im Juni 2009 schon produktiv in etwa 13 Softwareprojekten und 40 Websites eingesetzt.[11]

Version 1.0 erschien am 14. Juli 2010 mit dramatisch verbesserter Arbeitsgeschwindigkeit und Unterstützung für Windows-Betriebssysteme.[12] Seit der Version 1.1.0 von Anfang Juni 2011 wird SSL nativ unterstützt.[13]

Einsatz

Als zentraler Bestandteil von Ubuntu wird CouchDB eingesetzt, um Adressen und Lesezeichen zu synchronisieren.[14]

Eigenschaften

Die wichtigsten Eigenschaften von CouchDB:

Architektur
CouchDB ist eine dokumentenorientierte Datenbank und unterscheidet sich wie andere dokumentenorientierte Datenbanken (z. B. Lotus Notes) grundlegend von relationalen Datenbanken (RDBM). Im Gegensatz zu diesen RDBMs speichert CouchDB die Daten nicht in Tabellen, Zeilen und Spalten, sondern verwaltet sie in Dokumenten, die aus JSON-Objekten bestehen (ältere Versionen von CouchDB benutzten XML).
Zugriff und Schnittstellen
Der Zugriff auf die Daten erfolgt bei CouchDB über eine REST-HTTP-Schnittstelle.
Indirekt
Für viele klassische Programmiersprachen stehen Bibliotheken und Clients zur Verfügung, um wie bei anderen Datenspeichern (z. B. SQL-Datenbanken oder Textdateien), den Zugriff auf CouchDB zu standardisieren[15]: JavaScript (Standard), PHP[16], Perl, Ruby[17] oder Python. Die Unterstützung für weitere Sprachen ist geplant.
Zusätzlich bietet CouchDB eine Plug-in-Architektur, die es dem Nutzer erlaubt, weitere Funktionen hinzuzufügen.
Direkt
Dokumente und Dateien können direkt von CouchDB ohne einen zusätzlichen Webserver an einen Browser ausgeliefert werden. Diese können per, ebenfalls von CouchDB ausgelieferten Ajax weitere Inhalte nachladen und an das DOM hängen. Es kann aber auch direkt dynamisch serverseitig generiertes HTML geladen werden.[18]
MapReduce
Im Gegensatz zu herkömmlichen Datenbanken werden Filter bei CouchDB parallel über MapReduce und nicht während der eigentlichen Abfrage abgearbeitet. Trotzdem können Abfragen (sogenannte views) in CouchDB auch Funktionen enthalten, die während der Abfrage ausgeführt werden.
Multiversion Concurrency Control
Um Schreib-Lese Blockaden zu vermeiden werden mit Multiversion Concurrency Control Daten nicht überschrieben, sondern immer komplett neue Versionen hinzugefügt. Beim Replizieren wird die große Menge an alten Versionen nicht weitergegeben. Eine Versionsverwaltung kann so nicht stattfinden[19].
Merge-Replikation
Durch die Möglichkeit der Merge-Replikation können mehrere Instanzen gleichzeitig und unabhängig betrieben werden.

Oft wird CouchDB mit spaltenorientierten Datenbanken verglichen, wie zum Beispiel Google BigTable. CouchDB ist aber kein spaltenorientierter Speicher, da einzelne Dokumente innerhalb derselben Datenbank eine voneinander unterschiedliche Struktur besitzen können.

Integrierte Software

Da CouchDB eigenständig als Webserver Dokumente direkt an den Browser verteilen kann, kann auf jegliche zusätzliche Software wie Webserver und serverseitige Skriptsprachen (z. B. PHP, Ruby) verzichtet werden.

Futon

Futon ist eine freie Javascript-Applikation zur Administration der CouchDB selbst. Ähnlich zu phpMyAdmin können auch Datenbanken auf fremden Rechnern über eine Netzwerkverbindung oder über das Internet administriert werden. Futon ist in den meisten CouchDB-Installationen vorinstalliert.

Couchapp

Couchapp ist ein integriertes Javascript-Web Application Framework für CouchDB. Couchapp nutzt stark das Paradigma Konvention vor Konfiguration und bietet clientseitige jQuery-Bibliotheken an. Über die Couchapp-Kommandozeile lässt sich ein strukturierter Dateibaum als Mustervorlage für eine CouchDB-Anwendung erzeugen und als Design-Dokument in die CouchDB laden.

In Couchapp sind folgende jQuery-Erweiterungen integriert:

Evently
durch Javascript-Events werden Widgets an die HTML-Grundstruktur nachgeladen. Neben inhaltlichen Elementen werden vor allem Elemente zu Bearbeitung von Dokumenten über Evently gesteuert.
Mustache
eine einfache Template Engine[20].
Pathbinder
kann aus dem URL-Fragment (hash) (seite.html#unten) Javascript-Events anstoßen.
CouchApp Loader
lädt ein Design-Dokument der CouchDB in die Javascript-Anwendung.
Markdown
zur Eingabe von Inhalten ist die vereinfachte Auszeichnungssprache Markdown eingebunden.

Im Gegensatz zu serverbasierten, klassischen großen Webframeworks kann Couchapp keine Bilder skalieren oder E-Mails verschicken.

Literatur

Weblinks

Einzelnachweise

  1. Christopher Chandler: CouchDB in Action. Manning, Greenwich/CT 2009, S. 8. ISBN 1-935182-28-5.
  2. Port Numbers auf den Seiten der IANA, letzte Aktualisierung des Dokuments am 19. Juni 2009. (Abgerufen am 21. Juni 2009)
  3. New Gig - Blogeintrag vom 1. Januar 2008 auf der Website von Damien Katz. (Abgerufen am 21. Juni 2009)
  4. Damien Katz and CouchDB - Blogeintrag vom 16. Januar 2008 auf der Website von Anant Jhingran. (Abgerufen am 21. Juni 2009)
  5. Committers auf der Projektseite zu CouchDB bei Apache Incubator. (Abgerufen am 21. Juni 2009)
  6. Rudolf Jansen (12. Februar 2010): Freiheit für die Dokumente. heise Developer. Heise Zeitschriften Verlag GmbH & Co. KG. Abgerufen am 4. August 2010.
  7. Apache mailing list announcement vom 9. Februar 2008 auf mail-archives.apache.org (Abgerufen am 21. Juni 2009.)
  8. O’Reilly Emerging Technology Conference - ETech 2008: CouchDB from 10,000 ft, Vortrag von Jan Lehnardt vom 6. März 2008. (Abgerufen am 21. Juni 2009)
  9. O’Reilly Open Source Convention - OSCON 2008: CouchDB from 10,000 ft, Vortrag von Jan Lehnardt vom 23. Juli 2008. (Abgerufen am 21. Juni 2009)
  10. Incubated Projects auf Apache, Tabelle Graduated from incubation mit Start- und Enddatum 12. Februar 2008 bis 19. November 2008. (Abgerufen am 21. Juni 2009)
  11. CouchDB in the wild - Eine Liste der Softwareprojekte und Websites, die CouchDB einsetzen. (Abgerufen am 21. Juni 2009)
  12. http://www.nytimes.com/external/idg/2010/07/14/14idg-couchdb-nosql-database-ready-for-production-use-58614.html
  13. http://heise.de/-1256145.html
  14. E-Mail von Elliot Murphy (Canonical) an die CouchDB-Entwicklerliste
  15. Bibliotheken und Klienten für CouchDB auf der CouchDB-Website, letzte Änderung am 29. September 2008. (Abgerufen am 21. Juni 2009.)
  16. http://arbitracker.org/phpillow.html
  17. http://github.com/langalex/couch_potato
  18. http://couchapp.org/page/index
  19. Versioning docs in CouchDB
  20. http://mustache.github.com/
  21. Erschienen als E-Book (Manning Early Access) im April 2009, Printausgabe angekündigt für Dezember 2009.

Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • CouchDB — Apache CouchDB CouchDB s Futon Administration Interface, User database Original author(s) Damien Katz, Jan Lehnardt, Noah Slater, Christopher Lenz …   Wikipedia

  • CouchDB — Apache CouchDB Тип Документо ориентированная СУБД Автор …   Википедия

  • CouchDB — Apache CouchDB …   Wikipédia en Français

  • Cloudant — is a Massachusetts based enterprise software company which provides an open source non relational, distributed database service of the same name that requires zero configuration. Cloudant is based on the Apache backed CouchDB project and the… …   Wikipedia

  • Couchbase — is a Silicon Valley based enterprise software company[1] which offers product Couchbase (a database combining the leading NoSQL data management technologies CouchDB [of the Apache Software Foundation[2]], Membase, and Memcached) [3], plus sells… …   Wikipedia

  • Cloud database — A cloud database is a database running on Cloud Computing platform, such as Amazon EC2, GoGrid and Rackspace. There are two common deployment models: Users can run databases on the cloud independently, using a Virtual Machine image, or they can… …   Wikipedia

  • Datenbank (Liste) — Die Liste der Datenbankmanagementsysteme umfasst Software zur Verwaltung von Datenbanken, vor allen von relationalen Datenbanken, objektorientierten Datenbanken und objektrelationalen Datenbanken. Inhaltsverzeichnis 0 9 A B C D E F G H I J …   Deutsch Wikipedia

  • Datenbankliste — Die Liste der Datenbankmanagementsysteme umfasst Software zur Verwaltung von Datenbanken, vor allen von relationalen Datenbanken, objektorientierten Datenbanken und objektrelationalen Datenbanken. Inhaltsverzeichnis 0 9 A B C D E F G H I J …   Deutsch Wikipedia

  • Liste von Datenbanken — Die Liste der Datenbankmanagementsysteme umfasst Software zur Verwaltung von Datenbanken, vor allen von relationalen Datenbanken, objektorientierten Datenbanken und objektrelationalen Datenbanken. Inhaltsverzeichnis 0 9 A B C D E F G H I J …   Deutsch Wikipedia

  • NoSQL — En informatique, NoSQL est un buzzword pour désigner une catégorie de système de gestion de base de données (abr. SGBD) destinés à manipuler des bases de données géantes pour des sites web de très grande audience tels que Google, Amazon.com,… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”