07.03.2011, 12:57 Uhr

Apache CouchDB - Datenbank mit dokumentorientiertem Ansatz

CouchDB ist eine dokumentenoriente Open-Source-Datenbank, die größtenteils in der funktionalen Programmiersprache Erlang entwickelt wurde und der Apache Lizenz 2.0 unterliegt. Sie verbindet den dokumentorientierten Ansatz von Lotus Notes mit dem MapReduce-Ansatz von BigTable.
Hinter der Entstehung von CouchDB stand die Frage, welche Art von Datenbank am besten für Internetanwendungen geeignet ist. Die Idee von CouchDB wurde ursprünglich von Damien Katz, einem Lotus Notes Entwickler, 2006 entwickelt und ist inzwischen unter der Apache 2.0-Lizenz verfügbar.Dass dokumentbasierte Datenbanken ihre Berechtigungen haben, zeigt die Erfolgsgeschichte von Lotus Notes. Anders als relationale Datenbanken speichern dokumentbasierte Datenbanken ihre Daten nicht in Tabellen, Zeilen und Spalten, sondern in Dokumenten ab, die bei CouchDB aus JSON-Objekten (JavaScript Object Notation) bestehen. Dadurch, dass Dokumente keiner festen Struktur (semi strukturell) genügen müssen, lassen sich nicht nur unterschiedliche Arten speichern, sondern auch Änderungen an Dokumenten flexibel vornehmen.

Programmiersprachen

Die Verbreitung von funktionalen Programmiersprachen, wie F#, Erlang und Scala, nimmt zu. Da die funktionale Programmiersprache Erlang sehr gut für die nebenläufige und verteilte Programmierung geeignet ist, wird diese zur Systemprogrammierung von CouchDB verwendet. Als Datenbanksprache wird das von der Programmiersprache unabhängige REST-Protokoll eingesetzt, das die wichtigen CRUD-Operationen (Create (Datensatz anlegen), Read (Datensatz lesen), Update (Datensatz aktualisieren) und Delete (Datensatz löschen)) zum Arbeiten mit Dokumenten unterstützt. Deshalb lässt sich CouchDB auch mit einfachen Browserwerkzeugen, wie curl, verwenden. Für mehrere Programmiersprachen (C, C#, Erlang, Haskell, Java, JavaScript, LISP, LotusScript, Objective-C, Perl, PHP, Python, Ruby, Smalltalk) gibt es erweiterte Bibliotheken, die das Erstellen von Anwendungen mit CouchDB erleichtern. Dabei ist insbesondere die Unterstützung für Python, Ruby, Java und JavaScript hervorzuheben, da diese Sprachen zur Realisierung von REST-Architekturen (REpresentational State Transfer) immer beliebter werden.

Verteilte Datenhaltung

CouchDB unterstützt die verteilte Datenhaltung in beliebig vielen Knoten, wobei sowohl Daten als auch Views (so genannte Design-Dokumente) untereinander repliziert werden. Da jeder Knoten, ähnlich wie bei Peer-to-Peer-Netzwerken, autonom (shared nothing) ist, gibt es keine zentrale Instanz. Dadurch ist zwar keine zentrale Steuerung und Optimierung möglich, dafür wird die Ausfallsicherheit und Skalierbarkeit erhöht. Da durch die Verarbeitung eine optimistische Verarbeitung ohne Sperren angenommen wird, verwaltet CouchDB mehrere Versionen (MVCC - Multi-Version Concurrency Control) der geänderten Dokumente. Die Konsistenzerreichung und Konfliktbeseitigung erfolgt automatisch (letztes Update gewinnt) oder kann durch eigene Verfahren ergänzt werden.

MapReduce-Verfahren

Die Verarbeitung erfolgt nach dem Google-MapReduce-Verfahren und wird durch Views auf Schlüssel-Wert-Paare mit Funktionen zum Filtern, Zählen, Verketten und Aggregieren realisiert. Die Views sind in mehreren unterstützen Programmiersprachen realisierbar. Dokumente werden komprimiert gespeichert und erhalten automatisch einen fortlaufenden Schlüssel zugewiesen, der neben dem Dokumentennamen (DocID) als B-Baum indiziert wird. Für die Codierung der Dokumente wird Unicode verwendet. CouchDB beschränkt sich bewusst auf zentrale Aufgaben und nutzt für erweitere Funktionalitäten, wie Caching, Load-Balancing und Authentifizierung die Möglichkeiten der bereits bestehenden Web-Infrastruktur. Die Autorisierung muss jedoch selbst programmiert werden, da neben dem Administrator alle anderen Benutzer sowohl Schreib- als auch Leserechte haben.
Weiterführende Informationen sowie die heruntladbare Programmfassung von CouchDB erhalten Sie hier. Eine ausführliche Dokumentation zur Datenbank CouchDB finden Sie hier und hier. (Frank Pientka/am)



Das könnte Sie auch interessieren