Bei CouchDB handelt es sich um ein in Erlang geschriebenes dokumentenbasiertes DBMS, das durch sein Design einige interessante Features anbietet.
Die meisten Linux-Distributionen bieten bereits vorgefertigte Pakete an. Unter Ubuntu kann CouchDB z.B. wie folgt installiert werden:
$ sudo apt-get install couchdb
Für den Zugriff auf CouchDB-Datenbanken sind keine speziellen Client-Anwendungen notwendig. Da CouchDB eine HTTP-basierte REST-Schnittstelle anbietet, kann nahezu jeder beliebige HTTP-Client (z.B. curl) verwendet werden, um auf die Daten zuzugreifen.
CouchDB bietet dennoch von Haus aus eine einfache Oberfläche zum Administrieren und Bearbeiten von Datenbanken an. Standardmäßig ist dieses unter http://localhost:5984/_utils/ erreichbar.
Im Gegensatz zu relationalen Datenbanksystemen ist es bei CouchDB nach dem Anlegen einer Datenbank nicht notwendig, ein Datenbankschema in Form von Tabellen zu definieren.
Stattdessen werden JSON-formatierte Dokumente direkt in der Datenbank abgelegt. Jedes Dokument verfügt dabei zunächst nur über zwei Felder:

  • _id: ein eindeutiger Bezeichner für das jeweilige Dokument; wird er vom Benutzer nicht mit angegeben, vergibt CouchDB automatisch eine einzigartige ID
  • _rev: die Revisionsnummer des Dokuments; sie wird bei jedem Update hochgezählt und intern von CouchDB zur Lösung von Konflikten verwendet

Weitere Felder können nach Bedarf beliebig hinzugefügt werden. Dabei ist es möglich, dass mehrere Dokumente unterschiedliche Felder enthalten.
Ein Zugriff auf die Dokumente ist über das _id-Feld möglich. Um über andere Felder nach Dokumenten zu suchen, müssen Views definiert werden. Diese bestehen aus JavaScript-Funktionen, die Dokumente bestimmten Schlüsseln zuordnet.
Um beispielsweise bei einem Blog alle Posts finden zu können, die an einem Donnerstag veröffentlicht wurden, könnte man eine View definieren, die den einzelnen Wochentagen jeweils die entsprechenden Blog-Posts zuordnet. Über die optionale Integration von Apache Lucene ist es auch möglich, Volltextsuchen durchzuführen.
Views werden beim Bearbeiten von Dokumenten aktualisiert und verwenden intern einen binären Baum, um eine ähnliche Performance anzubieten wie Indizes bei relationalen Datenbanksystemen.
Mehr Informationen zu CouchDB-Features wie z.B. Replikation, Dokumenten-Validierung und etlichen weiteren gibt es auf der offiziellen Webseite unter http://couchdb.apache.org/ und im online verfügbaren Buch “CouchDB: The Definitive Guide
” unter http://guide.couchdb.org/.