Login
Immer anmelden
SSL Login

 
Newsletter
Werbung
Shopping
International Shopping
 
 


Yatego Shopping bei über 10000 Händlern und über
3 Mio. Artikel.


Linux

:

Linux-Bücher

Handy
Shop

  und Computer.

Viele Services

:

Apple iPad Reader,


Ratgeber,

 

Techniktops,

 

Yatego Clicks

  & über 3000

Gutscheine.

 
Do, 8. Juli 2010, 15:58

CouchDB – Datenbank mal anders

Wenn von einer Datenbank gesprochen wird, denkt man normalerweise als erstes an relationale, SQL-basierte Datenbanken wie Oracle, MySQL, PostgreSQL oder SQLite. Aber es gibt auch einen völlig anderen Ansatz: die dokumentenorientierte Datenbank CouchDB. Der Name der Datenbank steht in erster Linie nicht für das besonders bequeme Arbeiten, sondern ist ein Akronym für Cluster Of Unreliable Commodity Hardware Data Base.

CouchDB mit curl nutzen

Alternativ zur Weboberfläche kann man CouchDB auch über das HTTP-basierte API abfragen. Dazu werden im Folgenden einige Beispiele unter Verwendung von curl gezeigt. Die Abfragen lassen sich auch auf eine ähnliche Art und Weise per JavaScript über dessen XMLHttpRequest durchführen.

Möchte man den Eintrag in der Programmdatenbank zu gedit komplett abrufen, so geschieht dies mit dem Befehl:

curl -X GET http://localhost:5984/fm/Gedit

Das Ergebnis sieht dann so aus:

{"_id":"Gedit","_rev":"1-bab8730b676e3b9c86cdacc95afba681","os":["Linux"],"lizenz":"GPL",
"beschreibung":"Texteditor, durch zahlreiche Plugins erweiterbar, Teil des GNOME-Projekts"}

wobei die Revisionsnummer höchstwahrscheinlich anders ist.

Möchte man via curl eine Ansicht abrufen, so lautet der Befehl ähnlich wie bei der Abfrage eines einzelnen Eintrags. Im folgenden Beispiel wird davon ausgegangen, dass die Ansicht zur Anzeige des Durchschnittspreises im Design Document "fm_bsp" unter dem Namen "durchschnittspreis" gespeichert ist:

curl -X GET http://localhost:5984/fm/_design/fm_bsp/_view/durchschnittspreis

Natürlich kann man auch Daten in die Datenbank schreiben. Im folgenden Beispiel wird ein Eintrag für Rhythmbox hinzugefügt:

curl -X PUT http://localhost:5984/fm/Rhythmbox -d '{"_id":"Rhythmbox","os":["Linux"],"lizenz":"GPL","beschreibung":"Mediaplayer, mit Plugins erweiterbar"}'

Wichtig ist dabei, dass die geschweiften Klammern, welche die Schlüssel-Werte-Paare umschließen, zusätzlich in einfache Hochkommas ' ', so genannte Single Quotes, gesetzt werden.

Um das Ergebnis zu überprüfen, kann man via Futon nachsehen, ob der Eintrag auch wirklich geschrieben wurde. Das erfolgreiche Schreiben wird aber auch von CouchDB mittels einer Rückmeldung wie unten zu sehen signalisiert.

{"ok":true,"id":"Rhythmbox","rev":"1-d0bc0c400fa6eaa2e8c563fc0a2471d7"}

Im letzten Beispiel wird gezeigt, wie man mittels curl eine temporäre Ansicht generiert:

curl -X POST http://localhost:5984/fm/_temp_view -d '{"map":"function(doc) {var worte = doc.beschreibung.split(\" \"); emit (\"Worte:\",worte.length);}","reduce":"function(key,values,rereduce) {return sum(values)}"}'

Die Ansicht besteht aus einer MapReduce-Funktion, welche die Gesamtanzahl der Worte in den Beschreibungstexten zählt. Wie man im Beispiel sieht, ist es wichtig, dass alle Anführungsstriche, welche innerhalb eines Schlüssels oder Wertes vorkommen, mittels Backslash maskiert werden. Dies ist in dieser Form innerhalb von Futon nicht notwendig, dort wird es automatisch erledigt.

Anregungen

Wer Gefallen an CouchDB gefunden hat, kann basierend auf diesem Beispiel sicherlich noch weiterführende Experimente machen. So kann man z.B. alle Dokumenten mit einem Feld "kategorie" versehen (Büro, Multimedia etc.) und darüber Ansichten generieren. Oder man speichert die unterstützen Betriebssysteme nicht in einem Array, sondern als separate Werte. Dabei sollte der Schlüssel der Betriebssystemname sein, ein Wert ist nicht unbedingt notwendig, dieser kann also null sein. Wer unbedingt einen Wert einsetzen möchte, kann den Booleschen Wert true einsetzen. Wahrheitswerte dürfen übrigens innerhalb von CouchDB nicht in Anführungsstriche gesetzt werden.

Nach dem gleichem Schema wie die Programmdatenbank lässt sich aber z.B. auch eine Datenbank für ein einfaches Blogsystem generieren. Die Ausgabe könnte man direkt mittels einer shows-Funktion formatieren.

Zusammenfassung

CouchDB ist eine interessante Datenbank, die jetzt schon sehr viel Potential und Einsatzmöglichkeiten bietet. Sobald ein umfassenderes Rechtesystem vorhanden ist, wird CouchDB sicherlich für einen noch größeren Kreis von Nutzern und Entwicklern interessant. Wer hauptsächlich Daten in Form von Text speichert, sollte auf jeden Fall einen Blick auf CouchDB oder eine der Alternativen werfen.

Autoreninformation

Jochen Schnelle ist zufällig im Internet auf CouchDB gestoßen und hat damit aus Neugier ein wenig experimentiert. Nachdem gedanklich der SQL-Ballast über Bord geworfen war, entstand eine Python-basierte Intranet-Applikation, bei der die Daten zur Erstellung von Datenblättern von CouchDB geliefert werden.

Dieser Artikel ist in freiesMagazin 06/2010 erschienen. Veröffentlichung mit freundlicher Genehmigung des Autors.

  • Dieses Werk wurde unter der GNU Free Documentation License veröffentlicht. Das Kopieren, Verbreiten und/oder Modifizieren ist erlaubt unter den Bedingungen der GNU Free Documentation License, Version 1.2 oder einer späteren Version, veröffentlicht von der Free Software Foundation. - Weitere Informationen
Pro-Linux
Newsletter
Neue Nachrichten