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
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





