CouchDB – Time to relax
Apache CouchDB ist eine dokumentenbasierte Datenbank, die in der Programmiersprache Erlang geschrieben ist. Die Abfrage und das Indizieren der Dokumente geschehen mit MapReduce via JavaScript. Der geistige Vater Damien Katz, einst Entwickler bei Lotus Notes, arbeitet derzeit für IBM an dem Apache-CouchDB-Projekt. Die Installation ist allerdings nicht einfach, verläuft aber auf dem Linux/Mac-OS-System in der Regel problemlos. Das Besondere an CouchDB ist, dass sämtliche Dokumente (schemafrei) in der JSON-Syntax gespeichert werden und der Zugriff auf die Datenbank via HTTP/REST APIs erfolgt:
curl -X POST http://woody:5984/articles -d'{"article":"NoSQL im JavaMagazin", "authors":["Warzecha", "Wessendorf"]}'
Mit dem Unix-Kommandozeilentool curl wird hier ein Dokument in der Datenbank articles angelegt. Im Erfolgsfall bekommt man ein weiteres JSON-Dokument zurückgeliefert:
{"ok":true,"id":"3aa2d6b50934b1a7fa9064d8b9789447","rev":"1-8f4e988fffd0787228bbe9a33909633e"}
Die ID des neuen JSON-Dokuments lässt sich nun für die Abfrage der Daten über HTTP/REST nutzen: curl -X GET http://woody:5984/articles/3aa2d6b50934b1a7fa9064d8b9789447. Das Ergebnis sieht anschließend wie folgt aus:
{"_id":"3aa2d6b50934b1a7fa9064d8b9789447","_rev":"1-8f4e988fffd0787228bbe9a33909633e","article":"NoSQL im JavaMagazin","authors":["Warzecha","Wessendorf"]}
Alternativ können Dokumente/Datenbanken mit dem webbasierten Administrationswerkzeug Fluton (Abb. 1) verwaltet werden, dass durch seine Oberfläche überzeugt. Fluton bietet ebenfalls einen erstklassigen Support für die Erstellung von map/reduce-Funktionen. Der eingebaute Support für HTTP/REST bietet einem Java-Entwickler wiederum weitere Möglichkeiten, um mit CouchDB zu kommunizieren. Statt der direkten Nutzung der JDK-Klasse HttpURLConnection, stehen verschiedene APIs wie das hier benutzte jcouchdb-Projekt bereit:
Database db = new Database("woody", "articles");Map doc = new HashMap();doc.put("article", "NoSQL im JavaMagazin");doc.put("authors", new String[] {"Bartosch Warzecha", "Matthias Wessendorf"});db.createDocument(doc);
Mit einer einfachen Syntax ermöglicht jcouchdb den Zugriff auf die Daten. Innerhalb von fünf Zeilen wird hier ein ähnliches Dokument erstellt wie bereits zuvor mit curl. Ein schöner Aspekt der jcouchdb ist die im Projekt enthaltene Beispielandwendung Hood, die den Umgang mit dem API veranschaulicht. CouchDB selbst ist ein sehr fortgeschrittenes NoSQL-System, das aktuell in einer BETA-Version (0.10.x) angeboten wird. Mit der Mozilla Foundation und der Ubuntu-9.10-Version hat das Apache-CouchDB-Projekt zwei populäre "Kunden". Für die CouchDB gibt es bereits verschiedene Publikationen, beispielsweise das "CouchDB: The Definitive Guide" -Buch, das auch online zugänglich ist. Es existieren bereits Unternehmen, die im Umfeld des Apache-CouchDB-Projekts Hosting, Schulungen und kommerziellen Support anbieten.



