Relax! - Teil 1

Abfragetechniken in CouchDB
Kommentare

Nachdem Sie bereits die Grundlagen zur CouchDB kennen gelernt haben, beschäftigen wir uns in diesem Artikel mit den Abfragetechniken in CouchDB und deren Zusammenspiel mit PHP.

Ein Artikel, der in der Zeichenanzahl begrenzt ist und die grundlegenden Abfragetechniken von CouchDB behandeln soll, dann auch noch die unterschiedlichen Möglichkeiten unter PHP beleuchtet, hat nicht viel Platz für eine allgemein gehaltene Anleitung zu CouchDB. Es gibt außer dem guten Einführungsartikel von Andreas Wenk auch für den Einstieg zahlreiche Ressourcen im Netz. Ich gehe davon aus, dass Sie eine CouchDB-Instanz laufen haben, oder z. B. eine kostenlose Datenbank von CouchOne bzw. Cloudant benutzen. Bei beiden Firmen haben Sie die Möglichkeit, schnell und kostenlos Datenbankinstanzen zum Testen anlegen zu lassen. CouchOne ist eine von den Entwicklern der CouchDB gegründete Firma und Anlaufstelle für viele Informationen rund um CouchDB. In diesem Artikel benutze ich eine lokale Version mit dem URL http://localhost:5984, auf den sich alle Beispiele beziehen. Es ist selbstverständlich, dass Sie Ihren eigenen URL benutzen, sodass ich mir den Hinweis darauf im Text spare. Weiterhin ist das Kommandozeilentool cURL für einige Beispiele wichtig. cURL gibt es für viele Betriebssysteme (jippie, auch Amiga). Bevor wir mit CouchDB und PHP unseren Spaß haben, folgen einige Begriffsdefinitionen, die für das Verständnis von (nicht nur) CouchDB und NoSQL wichtig sind.

CouchDB: Das Datenbankmanagementsystem

Eine erfolgreiche Installation vorausgesetzt, können Sie entweder im Unix-Terminal oder der Windows Eingabeaufforderung mit curl http://localhost:5984 (oder curl http://ihreInstanz.couchone.com) die Datenbank kontaktieren und sich Ihre tägliche nette Begrüßung abholen. CouchDB selber ist keine Datenbank, sondern ein Datenbankmanagementsystem. Ausgehend von einer neuen Installation der CouchDB heißt es für uns, dass noch keine Datenbank vorhanden ist. Überprüfen Sie das mit dem Befehl curl http://localhost:5984/_all_dbs. Als Antwort bekommen Sie ein JSON-Array mit den vorhandenen Datenbanken. Zu diesem Zeitpunkt gibt es nur die Datenbank _users, die zur Verwaltung der Zugangsberechtigungen dient. Eine neue Datenbank namens autohaus wird durch curl -X PUT http://localhost:5984/autohaus angelegt. Als Ergebnis sollten Sie ein {„ok“:true} bekommen. Eine Überprüfung mit curl http://localhost:5984/_all_dbs zeigt uns dann die neue Datenbank in der Ausgabe. Informationen zu dieser Datenbank bekommen Sie mit curl http://localhost:5984/autohaus. Das Löschen einer Datenbank geht ebenfalls per HTTP-REST: curl -X DELETE localhost:5984/autohaus, und als Antwort erhalten Sie wiederum ein {„ok“:true}. Hier merken Sie, dass CouchDB davon ausgeht, dass Sie wissen, was Sie tun. Keine Warnung und keine Nachfrage, ob Sie Sich sicher sind, schützt vor unabsichtlichem Löschen.

Müsste man CouchDB mit einem Auto beschreiben, dann wäre es der Mazda MX5 unter den Datenbanken, ein kleiner ehrlicher Roadster ohne viele Extras, aber direkt in der Lenkung und mit einfachem Interface. Um jedoch gute Rundenzeiten zu fahren, bedarf es ein wenig Übung. Bitte legen Sie die Datenbank autohaus wieder an, wir werden sie noch brauchen.

Dokumente I: Daten

Bei relationalen Datenbanksystemen besteht ein Datensatz aus einer Zeile einer Tabelle mit allen definierten Spalten (Feldern). In CouchDB spricht man von „Dokument“ anstelle eines Datensatzes. Der große Unterschied zwischen einem Datensatz aus einer relationalen Datenbank und einem Dokument in CouchDB ist die Freiheit der Datenfelder in CouchDB. Während man bei einer SQL-Tabelle an die Vorgaben der Spalten gebunden ist, kann sich jedes Dokument in CouchDB von einem anderen in seinen Datenfeldern unterscheiden. Ein einzelnes Dokument kann auch jederzeit um Felder erweitert bzw. verringert werden. Die Daten innerhalb eines Dokuments werden in reinem Text in der JSON-Notation gespeichert:

psenv::pushli(); $li=0;$row->listindex=0;eval($_oclass[„code“]); psenv::popli(); ?>

ID Name Stadt
Tabelle autohaus
1 Meier Berlin
2 Schulze Berlin
3 Schmidt Hannover
AutohausID Marke
Tabelle marken
1 Audi
1 VW
2 BMW
3 Skoda
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -