Aus LinuxUser 08/2012

Daten für Web-Applikationen verwalten mit der NoSQL-Datenbank CouchDB

© Malalena, sxc.hu

Komfortables Sofa

Mit CouchDB und wenigen Javascript-Kenntnissen programmieren Sie im Nu eine Web-Applikation inklusive Datenbank. Ganz ohne Umdenken greift das neue Konzept aber nicht.

Eine Datenbank aufzusetzen, übersteigt die Möglichkeiten der meisten Heimanwender. Bietet der gemietete Webspace zusätzliche keine vorkonfigurierte Datenbank an, war das früher der Todesstoß für einigermaßen komplexe Anwendungen im Web. CouchDB [1] eröffnet einen einfacheren Weg, um nicht nur Daten, sondern komplette Programme zu speichern und auszuliefern.

Die Wurzeln des Projektes reichen zurück bis in die Zeit kurz nach der Jahrtausendwende: Nach seinem Studium arbeitete Damien Katz lange Zeit bei IBM an Lotus Notes. 2002 verließ er seinen Arbeitgeber und begann eine eigene Open-Source-Datenbank zu entwickeln. Sie sollte wie die von Notes arbeiten, aber wesentlich mehr Funktionen bieten. Als Programmiersprache wählte er Erlang [2] – mit dem sich die parallelen Zugriffe auf die gespeicherten Daten besonders einfach umsetzen ließen. Die erste Version der CouchDB getauften Datenbank erschien schließlich 2005.

Da Damien Katz in dieser Phase kaum Geld mit der Software verdiente, arbeitet er kurzzeitig für MySQL, das Unternehmen hinter der gleichnamigen Datenbank. Schließlich landete er wieder bei IBM. Dort durfte er weiterhin an CouchDB schrauben, musste aber die Rechte an der Datenbank an die Apache Software Foundation übergeben. Seit Ende 2008 ist das Programm ein vollwertiges Apache-Projekt und steht somit komplett unter der freien Apache-Lizenz.

2010 erreichte CouchDB die Versionsnummer 1.0. Bis dahin lief sie jedoch schon in zahlreichen Projekten und erfreute sich einer recht große Anhängerschaft. Mittlerweile gehört die Applikation zu den bekanntesten Datenbanken, die auf SQL als Abfragesprache verzichten. Solche Datenbanksysteme firmieren derzeit unter dem zwar modischen, aber leicht missverständlichen Begriff NoSQL.

Installation

CouchDB liegt einigen wenigen Distributionen bereits bei – allerdings mitunter in ziemlich alten Versionen. Das Repository von Ubuntu 12.04 bietet beispielsweise die Version 1.0.1 an, zum Redaktionsschluss aktuell war aber bereits die Version 1.2.0. Folglich kommen Sie meist nicht umhin, selbst den CouchDB-Quellcode zu übersetzen.

Dazu installieren Sie zunächst über den Paketmanager Erlang OTP (in der Version R12B5 oder höher), Make, GCC für C++, ICU, OpenSSL, Mozilla SpiderMonkey (mindestens in Version 1.7), Libcurl und Help2man. Unter Ubuntu 12.04 und Debian geht das am schnellsten über den folgenden Befehl in einem Terminal:

$ sudo apt-get install build-essential erlang erlang-eunit libicu-dev libmozjs-dev libcurl4-openssl-dev

Anschließend laden Sie von der CouchDB-Homepage oder der Heft-DVD das Archiv herunter und entpacken Sie es im Home-Verzeichnis. Dort übersetzen und installieren Sie CouchDB mit den folgenden drei Befehlen:

$ ./configure
$ make
$ sudo make install

Anschließend starten Sie CouchDB via sudo couchdb. Steuern Sie jetzt in einem Browser die Adresse http://127.0.0.1:5984/ an, meldet sich CouchDB mit {"couchdb":"Welcome","version":"1.2.0"}.

Schriftstücke

CouchDB speichert immer komplette Dokumente – wenn auch nicht Dateien im Sinne eines LibreOffice-Dokuments, sondern Textdateien im Austauschformat JSON [3]. Listing 1 zeigt ein kleines Beispiel für ein solches Dokument. In den geschweiften Klammern stehen alle zu speichernden Informationen. Um diese später einfacher auffinden und unterscheiden zu können, erhält jeder Wert zunächst einen eindeutigen Namen, den sogenannten Key.

Listing 1

{
"name": "Max Mustermann",
"strasse": "Musweg 4",
"ort": "Beidorf",
"plz": 74214,
"telefonnummern": [ "0123/4546780", "9876-543201" ]
}

Listing 1 führt beispielsweise die Ortsangabe Beidorf unter dem Key ort. Der Key selbst steht immer in Anführungszeichen. Ihm folgen ein Doppelpunkt und dann die eigentliche Information. Sofern es sich dabei um einen Text handelt, steht dieser ebenfalls in Anführungszeichen, bei Zahlen dürfen sie diese weglassen.

Die zu speichernden Daten trennen jeweils Kommas – in Listing 1 am Ende einer jeden Zeile. Aufzählungen beziehungsweise Listen stehen zwischen eckigen Klammern, wobei ebenfalls wieder Kommata die einzelnen Werte trennen. Welche Daten ein Dokument enthält, dürfen Sie frei festlegen. Als Werte erlaubt die Software übrigens wiederum JSON-Strukturen, wie das Beispiel aus Listing 2 zeigt.

Listing 2

{
"name": "Max Mustermann"
"bestellung": 1
"produkte": [
{"bestellung": "T-Shirt"
"anzahl": 1
},
{
"bestellung": "Schuhe"
"anzahl": 2
} ]
}

Anfragen und Anweisungen nimmt CouchDB über das HTTP-Protokoll entgegen, das Browser zum Abrufen von Webseiten verwenden. Vereinfacht gesagt: Sie rufen spezielle URLs auf, die CouchDB dann wiederum als Anweisungen interpretiert. Das Prinzip ist unter dem Namen RESTful [4] bekannt.

Am einfachsten setzen Sie solche Anfragen über das Hilfsprogramm cURL [5] ab, das sich in den Repositories aller gängigen Distributionen findet. Eine neue Datenbank adressbuch erzeugen Sie über den folgenden Aufruf:

$ curl -X PUT http://127.0.0.1:5984/adressbuch

Das Kommando PUT bezeichnet die entsprechende HTTP-Methode. Sie weist CouchDB an, etwas zu erstellen oder zu verändern. Hinter der Adresse 127.0.0.1 verbirgt sich der eigene Rechner, auf dem CouchDB standardmäßig am TCP-Port 5984 lauscht. CouchDB liefert also grundsätzlich auch alle Ausgaben in der JSON-Notation zurück. Die Rückmeldung auf diesen Befehl sollte {"ok":true} lauten.

Nummern-Girl

Die erstellte Datenbank können Sie jetzt mit Daten füllen – wie etwa denen aus Listing 1. Wie alle in CouchDB gespeicherten Dokumente benötigt auch dieses allerdings noch einen eindeutigen Namen – CouchDB speichert ihn später im Dokument unter dem Key _id.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
KAUFEN
LinuxUser 08/2012 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: