CouchDB
Apache CouchDB | |
---|---|
logo | |
Basisdaten | |
Entwickler | Apache Software Foundation |
Erscheinungsjahr | 2005 |
Aktuelle Version | 0.11 (29. März 2010) |
Betriebssystem | Linux, Unix, Mac OS X |
Programmiersprache | Erlang |
Lizenz | Apache 2.0 Lizenz |
deutschsprachig | nein |
couchdb.org |
Apache CouchDB ist ein Datenbankmanagementsystem nach dem Ansatz einer dokumentenorientierten Datenbank, das seit 2005 als freie Software entwickelt und unter der Apache 2.0 Lizenz veröffentlicht wird. CouchDB ist größtenteils in der Programmiersprache Erlang geschrieben.
Das Ziel von CouchDB ist es, das einfache Datenmodell einer dokumentenorientierten Datenbank mit der Skalierbarkeit und Performance einer professionellen relationalen Datenbank zu verknüpfen. Dazu muss CouchDB auf Multi-Core-Systemen und in Multi-Server-Umgebungen einsetzbar sein.
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 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]
CouchDB war ab Februar 2008 im Incubator (zu Deutsch: Brutkasten) der Apache Software Foundation.[6] Im März und im Juli 2008 hielten Jan Lehnardt (CouchDB-Committer) und Damien Katz Vorträge auf den O’Reilly-Entwicklerkonferenzen ETech 2008[7] und OSCON 2008.[8] Im November 2008 wurde CouchDB zu einem Apache Project aufgewertet.[9] Trotz der Versionsnummer von 0.9 wird CouchDB produktiv in ca. 13 Softwareprojekten und 40 Websites eingesetzt. (Stand Juni 2009)[10]
Als zentraler Bestandteil von Ubuntu wird CouchDB eingesetzt, um Adressen und Lesezeichen zu synchronisieren.[11]
Vergleich zu anderen Datenbanken
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).
Oft wird CouchDB mit spaltenorientierten Datenbanken verglichen, wie zum Beispiel Googles BigTable. CouchDB ist auch kein spaltenorientierter Speicher, da einzelne Dokumente innerhalb derselben Datenbank eine voneinander unterschiedliche Struktur besitzen können.
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.
Architektur und Schnittstellen
Der Zugriff auf die Daten erfolgt bei CouchDB über eine REST-HTTP-Schnittstelle. Da diese HTTP Entwicklern in vielen Programmiersprachen zur Verfügung steht, gibt es bereits viele Bibliotheken und Clients, die den Zugriff auf CouchDB erleichtern.[12]
Zusätzlich bietet CouchDB eine Plug-in-Architektur, die es dem Nutzer erlaubt, weitere Funktionen hinzuzufügen. Diese Funktionen können zum Beispiel in JavaScript (Standard), PHP, Perl, Ruby oder Python geschrieben werden. Die Unterstützung für weitere Sprachen ist geplant.
Literatur
- J. Chris Anderson, Jan Lehnardt und Noah Slater: CouchDB: The Definitive Guide. O'Reilly, Sebastopol/CA Januar 2010. ISBN 0-596-15589-1. In englischer Sprache, Text ist lizenziert nach Creative Commons Attribution License. Eine Vorabversion, "Rough Cuts Version", erschien 2008.
- Christopher Chandler: CouchDB in Action. Manning, Greenwich/CT 2009.[13] ISBN 1-935182-28-5.
- Oliver Frommel: Mal ausspannen. Auf: Linux-Magazin Online, 29. September 2009.
- Rudolf Jansen: CouchDB. Angesagter Vertreter der "NoSQL"-Datenbanken. Auf: heise developer, 12. Februar 2010.
Weblinks
- Offizielle Website von CouchDB (englisch)
- Offizielles CouchDB Wiki (englisch)
- Planet CouchDB - Entwicklerblog (englisch)
- CouchDB-Podcast von Tim Pritlove auf Chaosradio Express (Juni 2009)
Einzelnachweise
- ↑ Christopher Chandler: CouchDB in Action . Manning, Greenwich/CT 2009, S. 8. ISBN 1-935182-28-5.
- ↑ Port Numbers auf den Seiten der IANA, letzter Update des Dokuments am 19. Juni 2009. (Abgerufen am 21. Juni 2009)
- ↑ New Gig - Blogeintrag vom 1. Januar 2008 auf der Website von Damien Katz. (Abgerufen am 21. Juni 2009)
- ↑ Damien Katz and CouchDB - Blogeintrag vom 16. Januar 2008 auf der Website von Anant Jhingran. (Abgerufen am 21. Juni 2009)
- ↑ Committers auf der Projektseite zu CouchDB bei Apache Incubator. (Abgerufen am 21. Juni 2009)
- ↑ Apache mailing list announcement vom 9. Februar 2008 auf mail-archives.apache.org (Abgerufen am 21. Juni 2009.)
- ↑ 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)
- ↑ 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)
- ↑ Incubated Projects auf Apache, Tabelle Graduated from incubation mit Start- und Enddatum 12. Februar 2008 bis 19. November 2008. (Abgerufen am 21. Juni 2009)
- ↑ CouchDB in the wild - Eine Liste der Softwareprojekte und Websites, die CouchDB einsetzen. (Abgerufen am 21. Juni 2009)
- ↑ E-Mail von Elliot Murphy (Canonical) an die CouchDB-Entwicklerliste
- ↑ Bibliotheken und Klienten für CouchDB auf der CouchDB-Website, letzte Änderung am 29. September 2008. (Abgerufen am 21. Juni 2009.)
- ↑ Erschienen als E-Book (Manning Early Access) im April 2009, Printausgabe angekündigt für Dezember 2009.