CouchDB
CouchDB | |
---|---|
Offizielles Logo
| |
Entwickler | Apache Software Foundation |
Entwicklungsjahr | 2005 |
Aktuelle Version | 3.3.1 (11. Januar 2023) |
Betriebssystem | Windows, Unix, macOS, Linux |
Programmiersprache | Erlang |
Kategorie | Dokumentenorientierte Datenbank |
Lizenz | Apache |
deutschsprachig | nein |
CouchDB ist eine Open-Source Datenbank, die seit 2005 entwickelt wird. Allerdings ist sie keine relationalen Datenbanken wie SQL, sondern eine dokumentenorientierte Datenbanksprache, die ihre Daten nicht in Tabellen speichert, sondern in JSON-Objekten in Dokumenten. Damit ist CouchDB Teil der NoSQL-Datenbanken.
Entwicklungsgeschichte
CouchDB wird seit 2005 von Damien Katz entwickelt. Der Name CouchDB ist ein halbironisches Backronym, also ein Akronym, dessen Bezeichnung vor der Bedeutung festgelegt wurde, das für „Cluster of unreliable commodity hardware Data Base“ steht.
Im November 2007 wies die IANA (Internet Assigned Numbers Authority) CouchDB offiziell die Portnummer 5984 (TCP/UDP) zu.[1]
Nachdem Damien Katz die Entwicklung von CouchDB für zwei Jahre privat betrieb, arbeitete er von 2008 bis 2009 bei IBM als Vollzeitangestellter, wo er die Open-Source-Entwicklung von CouchDB weiter voran trieb. Im Jahr 2009 gründete Damien Katz eine eigene Firma namens Relaxed Inc.
Im November 2008 wurde CouchDB zu einem Apache-Projekt der Apache Software Foundation.
Eigenschaften
Die wichtigsten Eigenschaften von CouchDB:
- Architektur
- CouchDB ist eine dokumentenorientierte Datenbank und unterscheidet sich wie andere dokumentenorientierte Datenbanken (z. B. MongoDB) grundlegend von relationalen Datenbanken (RDBM). Im Gegensatz zu diesen speichert CouchDB die Daten nicht in Tabellen, Zeilen und Spalten, sondern in Dokumenten als JSON-Objekte (ä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: JavaScript (Standard), PHP, Perl, Ruby 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 (Document Object Model) hängen. Es kann aber auch direkt dynamisch serverseitig generiertes HTML geladen werden.
- MapReduce
- Im Gegensatz zu herkömmlichen Datenbanken werden Filter bei CouchDB parallel über MapReduce, einem von Google entwickelten Programmier-Modell, das es erlaubt Prozesse zu parallelisieren und auf verschiedene Rechner aufzuteilen, 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, einem Verfahren, das dazu dient, konkurrierende Zugriffe auf eine Datenbank möglichst effizient auszuführen, ohne zu blockieren oder die Konsistenz der Datenbank zu gefährden, 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-Modell (atomicity, consistency, isolation und durability; deutsch: Atomarität, Konsistenz, Isolation und Dauerhaftigkeit) wird u. a. die Versionsverwaltung und hohe Zugriffsgeschwindigkeit erreicht.
- Merge-Replikation
- Durch die Möglichkeit der Merge-Replikation können mehrere Instanzen gleichzeitig und unabhängig betrieben werden, ohne das Dateninkonsistenzen entstehen.
Anwendung
Aufgrund seiner Geschwindigkeit und Möglichkeit mit unstrukturierten Daten gut umzugehen wird CouchDB z.B. beim Lagre Hadron Collider in CERN verwendet. Weiterhin wird die Datenbank auch von Organisationen wie dem Internationalen Roten Kreuz und United Airlines verwendet.