Apache CouchDB - Jan Lehnardt - University of Hamburg
- Lecture2Go
- Catalog
- Weitere Einrichtungen
- Heinrich-Heine-Universität Düsseldorf
- Rheinjug / Java User Group Düsseldorf
Catalog
Apache CouchDB
Die Nachlese zum CouchDB-Vortrag wurde von Andreas Schlappig geschrieben.
Wer in seiner Freizeit gerne Datenbank-Schemata entwirft, muss nach dem Vortrag von Jan Lehnardt vielleicht über ein neues Hobby nachdenken. Möglicherweise taucht er oder sie ein in die Welt der Dokumente, die (als serialisierbare Objekte) per einfachem db.createDocument(doc) auf der Couch landen. Um die Serialisierung kümmert sich JSON - jedes Dokument ist per ID identifizierbar. Eine Revisions-ID verhindert parallele Änderungen, der Rest eines Dokumentes geht zurück auf Standard-Datentypen und gegebenenfalls binäre Anhänge.
Dokumente sind das, was man in der CouchDB speichert. Angelehnt an Dinge aus unserer Alltagswelt (z.B. Briefe, Rechnungen, Visitenkarten, Personalausweise oder Steuerformulare) bilden sie konkreter das ab, worum sich die Software kümmert, als es die Datensätze relationaler Datenbanken tun. CouchDB wird in der Programmiersprache Erlang entwickelt. Eine Stärke von Erlang ist, dass einzelne instabile Vorgänge die Gesamtsoftware nicht stören können. Unter anderem die sparsame RAM-Nutzung macht CouchDB auch für Handys und Smartphones interessant.
CouchDB wird ausschließlich über HTTP angesprochen und stellt darüber ein natürliches RESTful Interface zur Verfügung. Treiber zur Einbindung der Datenbank erübrigen sich. Abfragen an die Datenbank lassen sich effizient über in Javascript erstellte Map-Reduce-Algorithmen realisieren, bei denen zunächst die einem bestimmten Muster entsprechenden Daten extrahiert und indiziert und anschließend aus diesem Zwischenergebnis genaue Auswertungen berechnet werden. CouchDB sorgt dafür, dass diese Algorithmen nicht für jede Abfrage erneut ausgeführt werden müssen. Folgt etwas später eine gleiche Anfrage, so wird der Algorithmus nur auf zwischenzeitlich geänderte Daten angewandt und das Ergebnis mit dem zuvor bestimmten integriert.
Über eine N-Master-Replikation können bei CouchDB Load-Balancing und komplexe Redundanzen realisiert werden. Dabei können Daten-Änderungen auf einem beliebigen Datenbank-Server des Netzes vorgenommen werden. Paarweise erfolgt jeweils zwischen zwei Datenbank-Servern der Abgleich - zunächst von der Quelldatenbank zur Zieldatenbank und anschließend mit vertauschten Rollen in umgekehrter Richtung. Belastbare Replikation ist einer der Aspekte, die die Robustheit von CouchDB als Datenbanksystem ausmachen. Des weiteren werden alle Datenänderungen (auch Löschaufträge) ausschließlich am Ende der Datenbankdatei angefügt (append-only). Regelmäßige Verdichtungsläufe (compaction) sorgen dafür, dass nicht mehr benötigte Daten tatsächlich gelöscht werden. Schreibvorgänge sind für CouchDB erst dann abgeschlossen, wenn die entsprechenden Daten tatsächlich physikalisch geschrieben wurden.
CouchDB ist nicht als absolute Alternative zu relationalen Datenbanken entworfen worden, die je nach Anforderung weiterhin ihre Vorzüge haben. Jan Lehnardt hat mit seinem packenden Vortrag im gefüllten Hörsaal jedoch breit Interesse und Neugierde auf CouchDB mit seinen Stärken im Web-Umfeld geweckt. Der unterhaltsame und gleichzeitig technisch fundierte Vortrag mit durchgängig sehr viel Raum für Fragen und Kommunikation mit den Zuhörenden hat den Abend zu spannenden Event werden lassen, das Spaß gemacht hat.