CouchDB Tutorial Einführung

Dieses Tutorial ist in Arbeit.

CouchDB ist eine dokumentorientierte Datenbank. In meinem Blog habe ich schon ausführlich erklärt, was das ist. Die Installation wird im Ubuntuusers.de Wiki beschrieben.

Da CouchDB eigentlich ein Datenbankserver UND ein Webserver ist, wird für einen Teil des Tutorials der Browser verwendet. Um zu testen, ob CouchDB läuft, öffnet man diesen Link http://127.0.0.1:5984/ Die Antwort sollte in etwa lauten

{"couchdb":"Welcome","version":"1.0.1"}

Die Version sollte mindestens 1.0.1 sein. Da im Browser nicht alles so ohne weiteres funktioniert wird auch noch das Programm curl benötigt. Da es nicht zu einer Standard Ubuntu Installation gehört muss es installiert werden.

~$ sudo apt-get install curl

Der Befehl

~$ curl http://127.0.0.1:5984/

sollte das gleiche Ergebnis liefern wie der Browser.

Datenbanken abfragen

~$ curl -X GET http://127.0.0.1:5984/_all_dbs

Mit diesem Befehl kann man abfragen, welche Datenbanken auf dem Server existieren. Bei einem frisch installierten Server sollte nur eine Datenbank vorhanden sein. Die Ausgabe des Befehls sieht so aus.

["_users"]

Datenbanken anlegen

Um eine Datenbank anzulegen wird das Programm curl benötigt, denn für diese Aktion benötigt man die PUT Anweisung.

~$ curl -X PUT http://127.0.0.1:5984/foo
~$ curl -X PUT http://127.0.0.1:5984/bar

Jetzt wurden zwei Datenbanken angelegt. Der Rückgabewert lautet jeweils

{"ok":true}

Führt man jetzt noch einmal den Befehl zur Datenbankabfrage aus sieht man das Ergebnis

~$ curl -X GET http://127.0.0.1:5984/_all_dbs
["foo","bar","_users"]

Wie man sieht erhält man einmal ein Ergebnis in geschweiften Klammern {} und einmal in eckigen Klammern []. Das Ergebnis in den geschweiften Klammern ist ein sogenanntes Dictionary oder assoziatives Array. Jeder Eintrag in einem Dictionary besteht aus einem Schlüssel und einem Wert, getrennt von einem Doppelpunkt. In diesem Beispiel lautet der Schlüssel (Key) „ok“ und der Wert (Value) ist true.

Das zweite Ergebnis ist eine Liste, erkennbar an den eckigen Klammern. Die Liste enthält derzeit drei Einträge, getrennt durch ein Komma.

Datenbank löschen

Das Löschen einer Datenbank geschieht mit dem DELETE Kommando.

~$ curl -X DELETE http://127.0.0.1:5984/bar
{"ok":true}

Das Ergebnis ist wieder {„ok“:true}. Um zu testen was passiert, wenn man eine nicht existierende Datenbank löscht führt man den Befehl einfach noch einmal aus.

~$ curl -X DELETE http://127.0.0.1:5984/bar
{"error":"not_found","reason":"missing"}

Wie man sieht erhält man wieder ein Dictionary, jedoch diesmal mit zwei Key/Value Paaren, getrennt durch ein Komma. Man sieht auch, dass die Werte hier in “ “ stehen. Das bedeutet, es handelt sich dabei um Werte vom Datentyp String. Der Wert true steht nicht in Anführungszeichen, da es sich dabei um einen Boolschen Wert handelt. Man erfährt auch in dem Dictionary auch den Grund für den Fehler.

Von dem Erfolg der Löschaktion kann man sich auch noch überzeugen.

~$ curl -X GET http://127.0.0.1:5984/_all_dbs
["foo","_users"]

Alles HTTP

Wie man sieht handelt es sich bei der Schnittstelle zu CouchDB um ein normales HTTP Protokoll. Es ist daher nicht nur möglich, CouchDB als normalen Datenbankserver für eine beliebige Sprache zu verwenden sondern es ist auch möglich, komplette Webseiten zu erstellen, die vollständig auf dem CouchDB Server laufen.

Was ist eine Datenbank?

Im bisherigen Teil des Tutorials wurde gezeigt, wie Datenbanken erstellt und gelöscht werden. Aber was ist eine Datenbank? CouchDB ist ein Datenbank Managementsystem, also ein Server, der beliebig viele Datenbanken verwalten kann. Wenn von einer Datenbank die Rede ist ist also nicht der komplette Server gemeint.

Wer bisher mit relationalen Datenbanken wie MySQL gearbeitet hat kann es am ehesten mit einem Schema vergleichen. Wer jedoch in einer CouchDB Datenbank mehrere Tabellen erwartet wird enttäuscht.

Dokumente

In einer CouchDB werden sogenannte Dokumente abgelegt. Struktur und Inhalt dieser Dokumente ist nahezu beliebig. Man kann sich eine CouchDB Datenbank eher wie einen Ordner vorstellen, in den man zum Beispiel Rechnungen abheftet. Die komplette Rechnung wäre ein einzelnes Dokument.

Design Dokumente

In jeder Datenbank lassen sich beliebig viele Design Dokumente ablegen. Dabei handelt es sich um eine spezielle Art von Dokumenten, um mit der Datenbank arbeiten zu können. Ein Design Dokument kann zum Beispiel spezielle Funktionen enthalten, um Informationen aus der Datenbank auszulesen.

Views

Views, zu deutsch in etwa „Ansichten“, sind Funktionen in Design Dokumenten, die normalerweise in JavaScript programmiert sind. Ein View liefert ein bestimmtes Ergebnis auf eine Anfrage, zum Beispiel ein einzelnes Dokument, mehrere Dokumente aus einem bestimmten Bereich oder einzelne Informationen aus den Dokumenten.

Replikation

Mittels Replikation lassen sich Daten zwischen Datenbanken austauschen. Die Datenbanken können dabei auf dem gleichen Server oder auf einem entfernten Server im Internet liegen. Mittels Replikation lassen sich Sicherungen erstellen, Datenbankcluster für hohe Performance aufbauen, Daten auf verschiedenen Rechnern synchron halten und einiges mehr.

Für die Initialisierung reicht es, in einem einfachen Befehl die Adresse beider Datenbanken anzugeben. Die Replikation kann in jeweils eine oder beiden Richtungen und einmalig oder kontinuierlich erfolgen.

Backup

Für die Erstellung eines Backups kann man die Replikation verwenden, indem man einfach alle Daten auf einen anderen Server kopiert. Wer die Daten richtig archivieren will sollte dies mit couchdb-dump tun. Die Syntax des Befehls lautet

couchdb-dump [Options] dbname

Der Befehl gibt das Backup in der Konsole aus. Man muss die Ausgabe also in eine Datei umleiten. Möchte man beispielsweise die Datenbank „adressbuch“ auf dem lokalen Server sichern sähe der Befehl so aus

couchdb-dump http://127.0.0.1:5984/adressbuch > adressbuch.txt

Um die Datenbank wieder herzustellen benutzt man den Befehl couchdb-load. Die Syntax lautet

couchdb-load [Options] dbname

Zunächst löscht man eine eventuell existierende Datenbank und erstellt eine leere.

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

Anschließend läd man mit couchdb-load das Backup wieder auf den Server.

couchdb-load --input=adressbuch.txt http://127.0.0.1:5984/adressbuch

Teil 2 - Futon

Weiter geht es auf dem Futon

couchdb/couchdb_tutorial.txt · Zuletzt geändert: 2011/02/28 16:03 von burli
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki