CouchDB – Abschied von der relationalen Datenbank

CouchDB Logo

Als ich neulich die Chaosradio Folge zur CouchDB angehört habe, war es plötzlich völlig klar: All die Jahre sind einem klassische relationale Datenbanken wie MySQL, DB/2 oder Oracle beim Webapplikationsdesign eigentlich immer im Weg gestanden.

CouchDB geht völlig neue Wege: Sie speichert semistrukturierte Dokumente als JSON (JavaScript Object Notation) Datenstrukturen, nutzt HTTP als Zugriffsprotokoll und JavaScript zur Definition von Views (a.k.a. Indizes).

CouchDB ist komplett in Erlang geschrieben, einer funktionale Programmiersprache die in den 80ern bei Ericsson ursprünglich zur Steuerung von Telefonnetzen entwickelt wurde und dementsprechend starke Fokusierung auf Parallelität und Ausfallsicherheit hat.

Erlang wird selten verwendet, fällt jedoch in der Internetwelt immer wieder einmal postiv auf, wie z.B. beim ejabberd, einem freien Jabber Server für *NIX Systeme, bei dem ich aus eigener Erfahrung nur sagen kann: installieren und nie wieder dran denken müssen!

CouchDB ist innerhalb weniger Monate in den erlauchten Kreis der Apache Projekte aufgenommen worden, steht dementsprechend unter Apache 2.0 Lizenz (einer BSD-artigen, d.h. egal wo man sie verwendet, es wird sicher kein Lizenzproblem geben) und hat dort ihre Webheimat: couchdb.apache.org

Was CouchDB darüber hinaus interessant macht: Es unterstützt Replikation über im Internet verstreute Datenbanken auf ganz einfache Art durch die Verwendung von UUIDs. Darüber hinaus liefert es eine vollständige Implementation der Map/Reduce Idee.

CouchDB liegt momentan in der Version 0.9.1 vor. Es gibt ein distributionsabhängiges Binary zum herunterladen unter http://couchdb.apache.org/downloads.html aber auch Debian Packages für Lenny und Ubuntu 9.04 (Jaunty Jackalope) und einen MacPort Port. Wobei Debian/Ubuntu Packages noch auf Version 0.8.0 der CouchDB setzen.

Es gibt bereits Perl Module dafür (CPAN). Wenn man mit dem Catalyst MVC Framework arbeiten will, sind die wichtigsten wohl CouchDB::Client und Catalyst::Model::CouchDB.

Ich habe bereits ein wenig damit herumgespielt und bin schwer begeistert. Was mir noch abgeht, ist ein Authentication Store: Catalyst::Authentication::Store::CouchDB – ich bastle gerade daran herum, jedoch ist das noch etwas problembehaftet. Robin Berjon (der Entwickler von CouchDB::Client) kommt scheinbar mit dem Tempo der CouchDB Entwickler nicht nach… Das API der CouchDB ändert sich an manchen Stellen doch noch des öfteren.

Mal sehen – vielleicht wird das mein erster Beitrag zum CPAN.