Eine Anleitung zu Installation findet ihr hier : CouchDB. Time to relax! Teil 1 – Installation

CouchDB ist eine Dokumenten Orientierte Datenbank. Was heißt das eigentlich? Das heißt erstmal, dass man sich von Tabellen verabschieden kann.  Jeder Datensatz ist ein in sich geschlossenes Dokument. Es gibt keine Referenzen wie in relationalen Datenbanken. Die Daten werden dadurch “realitätsgetreu” abgebildet, da alle Daten des Datensatzes wirlkich an einem Ort gespeichert werden und nicht wie in relationalen Datenbanken über Keys nur referenziert werden.


Dokumente werden in der CouchDB mit 2 Standard Attributen versehen. Diese sind zum einem das Attribut “_id” zur eindeutigen Identifizierung eines Dokumentes. Das Attribut “_rev” gibt die Version des Dokumentes an. Gespeichert werden die Dokumente als JSON Files. Das heißt in erster Linie Key:Value Paare. Values können aber auch aus Listen oder Arrays bestehen. Zu der Struktur von JSON findet man mehr unter www.json.org

Beispiel Dokument:

{
  "_id" : ""
  "_rev": ""
  "name": "Andreas Hoeppener",
  "email": "couch@modularthinkin.com"
}

Weitere Attribute können nach belieben hinzugefügt werden. Es gibt erstmal keine Schema oder ähnliches mit dem die Datenstruktur beschrieben wird. Es gibt aber verschiedene Ansätze, Dokumente trotzdem zu strukturieren und zu typisieren. Dafür kann man jedes Dokument mit einem Attribut “type” versehen, welches den genauen Typ des Dokuments beschreibt.

Beispiel Dokument mit Type:

{
  "_id" : "",
  "_rev": "",
  "@type": "vcard" ,
  "name": "Andreas Hoeppener",
  "email": "couch@modularthinkin.com"
}

Ein weiteres Konzept dazu sind so genannte Design Dokumente. Mit diesen lassen sich Validierung und weitere Funktionen definieren. Dazu aber später mehr.

Dokumente lassen sich entweder über die von CouchDB mitgelieferte grafische Oberfläche einfügen (host:5984/_utils) oder aber über die REST Schnittstelle. Für letzteres eignet sich das Unix Commandline Tool “curl” hervorragend. Unter Windows kann man dieses über das Tool Cygwin nutzen wenn man das entsprechende Package installiert.
Über die REST Schnittstelle lassen sich über die verschiedenen HTTP Methoden Dokumente finden, anlegen, löschen und verändern. Wie das Ganze funktioniert werden wir jetzt schrittweise durchgehen.

Hands on

Als erstes starten wir das Datenbanksystem und prüfen mit curl ob unsere Datenbank läuft. Curl verwendet standardmäßig die HTTP GET Methode soweit nichts anderes angegeben wurde.

>>> curl http://127.0.0.1:5984/
<<< {"couchdb":"Welcome","version":"1.1.0}

Das Datenbank System ist da und wir brauchen natürlich eine Datenbank. Mit der HTTP PUT Methode werden Elemente angelegt. Das gilt auch für Datenbanken. Mit dem Parameter -X HTTP-Methode kann man die entsprechende Methode auswählen.

>>> curl -X PUT http://127.0.0.1:5984/modularthinkin
<<< {"ok":true}

Damit sollten wir eine Datenbank mit dem Namen “modularthinkin” angelegt haben. Diese sollte auch in der Liste auftauchen wenn wir nach allen Datenbanken fragen

>>> curl http://127.0.0.1:5984/_all_dbs
<<< ["modularthinkin"]

Als nächstes wollen wir unser erstes Dokument anlegen. Dafür benötigen wir als erstes eine ID. Die lassen wir uns über folgenden Aufruf erzeugen

>>> curl -X GET http://127.0.0.1:5984/_uuids
<<< {"uuids":["cd03fa7013c1e14d2cebef191700051a"]}

Diese ID können wir jetzt verwenden um ein Dokument auf die Couch zu werfen. Als Beispiel soll eine kleine Visitenkarte die Namen und Email enthält dienen

>>> curl -X PUT http://127.0.0.1:5984/modularthinkin/cd03fa7013c1e14d2cebef191700051a -d
    '{"name":"Andreas Hoeppener","email":"andreas@modularthinkin.com"}'
<<< {"ok":true,"id":"cd03fa7013c1e14d2cebef191700051a",
    "rev":"1-823edcb5cfb6f3272b52d47762e8202f"}

Wir haben damit unser erstes Dokument angelegt. Mit der GET Methode können wir dieses jetzt auch finden. Der folgende Aufruf sollte uns das Dokument wieder liefern.

>>>  curl -X GET http://127.0.0.1:5984/modularthinkin/cd03fa7013c1e14d2cebef1917000a02
<<< {"_id":"cd03fa7013c1e14d2cebef1917000a02","_rev":"1-823edcb5cfb6f3272b52d47762e8202f","name":"Andreas Hoeppener","email":"andreas@modularthinkin.com"}

Sollte das Dokument jetzt angepasst werden, wird automatisch eine neue Version angelegt unter derselben ID. Der GET Befehlt liefert, soweit keine Revision angegeben wird, immer das aktuellste Dokument zurück.
Demnächst dann der nächste Teil über Map & Reduce und Design Documents.

Tagged with:
 

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

About The Author

andreas