CouchDB
| CouchDB
| |
|---|---|
| colspan="2" class="notheme" style="text-align:center; background:#Vorlage:Standardfarbe; color:#202122;" | Datei:Apache CouchDB logo.svg | |
| Datei:Couchdb screenshot.png Administrationsoberfläche Futon | |
| Basisdaten
| |
| Maintainer | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) |
| Entwickler | Apache Software Foundation |
| Erscheinungsjahr | 2005 |
| Aktuelle Version | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) (Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)) |
| Aktuelle Vorabversion | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) (Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)) |
| Betriebssystem | Linux, Unix, Mac OS X, Windows |
| Programmiersprache | Erlang |
| Kategorie | dokumentenorientierte Datenbank |
| Lizenz | Apache |
| deutschsprachig | ja |
| couchdb.apache.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.
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 Durchsatzrate ermöglicht.<ref>Christopher Chandler: CouchDB in Action (PDF; 1,1 MB). Manning, Greenwich/CT 2009, ISBN 1-935182-28-5, S. 8.</ref> 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.<ref>Port Numbers auf den Seiten der IANA, letzte Aktualisierung des Dokuments am 19. Juni 2009. (Abgerufen am 21. Juni 2009)</ref>
Nachdem Damien Katz die CouchDB-Entwicklung für zwei Jahre privat betrieb, arbeitete er von Januar 2008<ref>New Gig – Blogeintrag vom 1. Januar 2008 auf der Website von Damien Katz. (Abgerufen am 21. Juni 2009)</ref> bis 2009 als Vollzeitangestellter von IBM und trieb dort die weitere Open-Source-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.<ref>Damien Katz and CouchDB – Blogeintrag vom 16. Januar 2008 auf der Website von Anant Jhingran. (Abgerufen am 21. Juni 2009)</ref> Neben Damien Katz arbeiten sechs weitere Entwickler aktiv an CouchDB.<ref>Committers auf der Projektseite zu CouchDB bei Apache Incubator.</ref> Ende 2009 gründete Katz mit 2 Millionen Dollar Venture-Kapital eine eigene Firma namens Relaxed Inc.<ref>Rudolf Jansen: Freiheit für die Dokumente. In: heise Developer. Heise Zeitschriften Verlag GmbH & Co. KG, 12. Februar 2010, abgerufen am 4. August 2010.</ref>
CouchDB war ab Februar 2008 im Incubator (zu Deutsch: Brutkasten) der Apache Software Foundation;<ref>Apache mailing list announcement vom 9. Februar 2008 auf mail-archives.apache.org (Abgerufen am 31. Januar 2017.)</ref> 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<ref>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)</ref> und OSCON 2008.<ref>O’Reilly Open Source Convention – OSCON 2008: <templatestyles src="Webarchiv/styles.css" />CouchDB from 10,000 ft ( des Vorlage:IconExternal vom 24. Oktober 2008 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis., Vortrag von Jan Lehnardt vom 23. Juli 2008. (Abgerufen am 21. Juni 2009)</ref> Im November 2008 wurde CouchDB zu einem Apache Project aufgewertet.<ref>Incubated Projects auf Apache, Tabelle Graduated from incubation mit Start- und Enddatum 12. Februar 2008 bis 19. November 2008. (Abgerufen am 21. Juni 2009)</ref> Trotz der Versionsnummer von 0.11 wurde CouchDB im Juni 2009 schon produktiv in etwa 13 Softwareprojekten und 40 Websites eingesetzt.<ref name="CouchDB in the wild"><templatestyles src="Webarchiv/styles.css" />CouchDB in the wild ( des Vorlage:IconExternal vom 9. November 2016 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis. – Eine Liste der Softwareprojekte und Websites, die CouchDB einsetzen. (Abgerufen am 21. Juni 2009)</ref>
Version 1.0 erschien am 14. Juli 2010 mit drastisch verbesserter Arbeitsgeschwindigkeit und Unterstützung für Windows-Betriebssysteme.<ref>nytimes.com</ref> Ab der Version 1.1.0 von Anfang Juni 2011 wird SSL nativ unterstützt.<ref>heise.de</ref>
Außer der Referenzimplementierung im Apache CouchDB Projekt werden von den Herstellern IBM<ref>Cloudant – Overview. Abgerufen am 28. März 2022 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> und Couchbase<ref>Couchbase: The Modern Database for Enterprise Applications. Abgerufen am 28. März 2022.</ref> auch kommerzielle CouchDB-kompatible Datenbanken als SaaS angeboten und entwickelt.
Einsatz
Beim CERN in Genf werden am Large Hadron Collider Daten in der Menge von ca. 10 PB pro Jahr produziert. Hierfür wird Apache CouchDB als Data Management System aufgrund der großen Mengen unstrukturierter Daten eingesetzt.<ref>Why Large Hadron Collider Scientists are Using CouchDB. In: ReadWrite. 26. August 2010, abgerufen am 28. März 2022 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Das Disaster Action Team des Internationalen Roten Kreuz setzt in Katastrophengebieten die auf CouchDB basierende mobile App iDAT ein. CouchDB ermöglicht hiermit den Betrieb als fehlertolerante Multi-Node (Peer-to-Peer) Datenbank in Regionen mit stark eingeschränkter Netzverfügbarkeit.<ref>iDAT. Red Cross Code, 31. Juli 2021, abgerufen am 28. März 2022.</ref> Bei IBM wird CouchDB als zentrales Fundament zur Bereitstellung und Orchestrierung der Infrastruktur der IBM Cloud-Dienste eingesetzt.<ref>Database-Deep-Dives-CouchDB. Abgerufen am 28. März 2022 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref><ref>couchdb. Abgerufen am 28. März 2022 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
United Airlines verwendet CouchDB für Betrieb und Management des „In-Flight Entertainment System“ in seinen über 3.000 Flugzeugen.<ref>Database-Deep-Dives-CouchDB. Abgerufen am 29. März 2022 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref><ref>United Airlines Streamlines Operations With Couchbase | Case Study. Abgerufen am 29. März 2022.</ref> Auch Facebook verwendet CouchDB in diversen Softwareprojekten und Anwendungen.<ref name="CouchDB in the wild" /> Die Node.js Paketverwaltung npm verwendet Apache CouchDB als zentrale verteilte Datenbank.<ref>What’s new from GitHub Changelog? September 2021 recap. In: The GitHub Blog. 19. Oktober 2021, abgerufen am 28. März 2022 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Das dynamische Content-Management-System der englischen Sendergruppe BBC wurde mit CouchDB als Datenbank realisiert.<ref>Erlang Factory – Enda Farrell, Software Architect for internet scaling. Abgerufen am 28. März 2022.</ref>
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<ref><templatestyles src="Webarchiv/styles.css" />Bibliotheken und Klienten für CouchDB ( vom 31. Januar 2017 im Internet Archive) auf der CouchDB-Website, letzte Änderung am 29. September 2008. (Abgerufen am 21. Juni 2009.)</ref>: JavaScript (Standard), PHP<ref><templatestyles src="Webarchiv/styles.css" />Archivierte Kopie ( vom 25. Oktober 2010 im Internet Archive)</ref>, Perl, Ruby<ref>github.com</ref> 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 Ajax (das ebenfalls von CouchDB ausgeliefert wird) weitere Inhalte nachladen und an das DOM hängen. Es kann aber auch direkt dynamisch serverseitig generiertes HTML geladen werden.<ref>web.archive.org</ref>
- 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 neue Versionen hinzugefügt. Beim Replizieren wird die große Menge an alten Versionen nicht weitergegeben. Über die Nutzung von ACID wird u. a. die Versionsverwaltung und hohe Zugriffsgeschwindigkeit erreicht.<ref>couchdb. Abgerufen am 28. März 2022 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
- 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 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.
Fauxton
Fauxton ist ein Web-Interface zur Administration von CouchDB. Ähnlich wie phpMyAdmin, können auch Datenbanken auf fremden Rechnern über eine Netzwerkverbindung oder das Internet administriert werden. Ab Version 2.0 ist Fauxton in die CouchDB-Installation integriert und über „server:5984/_utils“ erreichbar.
Couchapp
Couchapp ist ein integriertes Javascript-Webframework 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 zur Bearbeitung von Dokumenten über Evently gesteuert.
- Mustache
- eine einfache Template-Engine.<ref>mustache.github.io</ref>
- 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 Unterschied zu serverbasierten, klassischen großen Webframeworks kann Couchapp keine Bilder skalieren oder E-Mails verschicken.
PouchDB
PouchDB ist eine mit CouchDB API-Kompatible Datenbank in JavaScript geschrieben und sie kann als Ergänzung zur CouchDB verwendet werden. PouchDB läuft im Browser und auf Node.js und speichert die Dokumente im Web Storage des Browsers. Ein Anwendungsszenario ist die uneingeschränkte Funktion einer Webapplikation ohne permanenten Internetzugang. Eine Synchronisierung der Daten zwischen PouchDB und CouchDB kann zu einem Zeitpunkt erfolgen, wenn wieder eine Internetverbindung besteht.
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.<ref>Erschienen als E-Book (Manning Early Access) im April 2009, Printausgabe angekündigt für Dezember 2009.</ref> ISBN 1-935182-28-5.
- Mario Scheliga: CouchDB kurz und gut. O’Reilly, Köln 30. April 2010, ISBN 3-89721-559-4. In deutscher Sprache.
- 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.
- Andreas Wenk und Till Klampäckel: CouchDB: Das Praxisbuch für Entwickler und Administratoren. Galileo Computing, 28. September 2011, ISBN 978-3-8362-1670-8. In deutscher Sprache.
- Oliver Kurowski: CouchDB mit PHP entwickler.press, Juni 2012, ISBN 978-3-86802-068-7. In deutscher Sprache.
Weblinks
- Offizielle Website (englisch)
- Offizielles Wiki (englisch)
- Podcast-Folge FS136 mit dem Thema CouchDB von Tim Pritlove auf Freak Show (Juli 2014)
- Podcast-Folge CRE125 über CouchDB von Tim Pritlove auf Chaosradio Express (Juni 2009)
Einzelnachweise
<references />