Open Source im professionellen Einsatz

Sicht der Dinge

Zur Strukturierung von Anfragen dienen bei CouchDB die so genannten Views. Sie geben dem Anwender eine bestimmte Sicht auf den Wust an Daten, können zum Beispiel die Abfragen nach den gewünschten Kriterien filtern. Im komplizierteren Fall kann der Programmierer eigene Filterfunktionen in Javascript definieren, die eine Menge von Resultaten sukzessive auf ein überschaubares Ergebnis reduzieren. Dieses Prinzip ist auch als Map/Reduce-Methode [3] von Googles verteilter Datenbank Bigtable bekannt (wie auch im freien Projekt Hadoop implementiert).

Die einfachste View-Funktion sieht so aus:

function(doc) {
   emit(null, null);
}

Der Emit-Aufruf hat die beiden Argumente Key und Value, wobei der Key-Wert in diesem Fall leer ist. Ohne speziellen Filterschlüssel gibt CouchDB mit dieser Funktion also einfach das komplette Dokument aus. Wer zum Beispiel bei einer Abfrage nach dem Nachnamen gerne die Adresse erfahren möchte, kann die folgende Funktion verwenden:

function(doc) {
   emit(doc.Nachname, {Strasse: doc.Strasse, PLZ: doc.plz, Ort: doc.city});
}

Solche Abfragen lassen sich als ,,Temporary Views" ebenfalls im Futon-Webinterface ausprobieren. Die CouchDB-Experten raten allerdings aus Performance-Gründen davon ab, Temporary Views produktiv einzusetzen. Hierzu soll der CouchDB-Anwender eine gefundene View als Designdokument permanent speichern, was wesentlich schneller ist.

Abbildung 4: Dynamische Views verwenden eine Javascript-Funktion zum Filtern.

Wie bereits erwähnt erlauben Reduce-Funktionen gegenüber diesen einfachen Views, Ergebnislisten auf weniger Elemente zu reduzieren oder Beispiel numerische Felder einfach zu addieren

Interna

Obwohl CouchDB seinen eigenen Weg geht, gleicht es in vielem den so genannten Key-Value-Stores, die immer häufiger als Backend für Web-Dienste dienen. Eine Übersicht solcher Projekte gibt ein zukünftiger Artikel auf Linux-Magazin Online. Wie CouchDB-Protagonist Jan Lehnardt anmerkt, gibt es alle ,,coolen" Techniken in der Informatik schon seit 25 Jahren, so zum Beispiel die in CouchDB verwendeten B-Trees, die den Zugriff auf ein Element mit geringer Laufzeit ermöglichen. Das, kombiniert mit der REST-Architektur und dem JSON-Format, macht das Besondere von CouchDB aus. Dazu kommt noch Programmiersprache Erlang, die neben ihrem mythenbildenden Charakter auch noch für weniger Fehler bei verteilten und parallel laufenden Tasks sorgt.

Um die für Datenbanken oft geforderte ACID-Integrität zu erreichen, setzt CouchDB auf Versionierung der Daten nach dem MVCC-Prinzip (Multi Version Concurrency Control), gemäß dem für gleichzeitige Zugriffe auf Daten immer neue Kopien (Versionen) angelegt werden -- ein Prinzip, das ebenfalls aus dem Anfang der achtziger Jahre stammt.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook