CouchDB - Ein erfrischend anderer Ansatz

Wednesday, 19 December 2007, 23:10 von Blackflash

Seit einiger Zeit interessiere ich mich stark für eine Datenbank namens CouchDB. Eine kurze Übersicht findet man im CouchDB-Wiki. Deshalb möchte ich darüber nicht allzu viele Worte verlieren. Viel eher geht es mir darum, mit ein paar Gedanken zu spielen, die mir im Kopf rumschwirren.

Was macht CouchDB anders als die gesamten relationalen Datenbanken? Man ist hat keine starren Strukturen. Ist das wirklich eine gute Idee? Meines Erachtens schon. Es kommt dabei immer darauf an, welche Daten man bearbeitet. Bei sehr vielen statistischen Daten sind die RDBM-Systeme sicherlich besser geeignet. Aber ehrlich gesagt, hatte ich bisher nicht allzu viele Möglichkeiten, so was wirklich effektiv nutzen zu können. Das mag einerseits daran liegen, dass ich noch lange kein Profi in solchen Sachen bin, aber es liegt sicherlich auch sehr viel am Web. Denn im Web gliedert sich sehr vieles in Dokumente, also semistrukturierte Daten. Ein Blogeintrag wie ich ihn gerade schreibe ist semistrukturiert. Warum? Ich habe einen Text, verschiedene Tags, ein Datum und einen Autoren. Eine Struktur ist natürlich drin und man könnte die Daten noch weiter strukturieren. Ist das sinnvoll? Ja, aber es macht das System als solches komplizierter. Bleiben wir bei dem Beispiel Blogeintrag. Jeder, der ein wenig mit RDBMS programmiert hat, wird es verstehen, wenn ich behaupte, dass man die Tags als eigene Tabelle kapseln sollte, sodass man keine unsauberen Strings in einem Feld hat. Ein String á la "foo bar foobar fubar" der die Tags "foo", "bar", "fobar" und "fubar" darstellt, ist unpassend für relationale Datenbanken. Man kann z.B. nicht effektiv alle Einträge mit einem bestimmten Tag auswählen. Möglich ist es, aber darauf sind relationale Datenbanken i.d.R. nicht ausgelegt. Wie macht man so was mit CouchDB? Ganz einfach: Man nimmt eine Liste als Feld. Effektiv dasselbe mag man meinen. Nein, ganz sicher nicht. Denn über sog. Views lässt sich so was sehr einfach realisieren: Einfach einen View schreiben, der jedes Dokument auswählt, das ein bestimmtes Tag enthält und schon hat man eine Liste aller Einträge, die dieses Tag enthalten.

Ein weiterer Vorteil ist, dass man viele Views direkt in der Datenbank verankern kann. Somit muss man die Datenbank von dem Applikationscode trennen. Die Trennung wird somit um ein Vielfaches sauberer. Hier könnte man vllt. geteilter Meinung sein, aber das ist nebensächlich.

Nunja.. Ein paar Gedanken habe ich jetzt schon publik gemacht und ich habe noch etliche Ideen. Aber über die werde ich noch in alle Ruhe und dann im Detail berichten. Bin am Überlegen, ob ich meine Homepage neuprogrammiere und dabei auf CouchDB setze. Man mag meinen, dass es nicht sinnvoll ist, Software zu benutzen, die erst Alpha-Status hat. Aber wie soll man CouchDB effektiv testen, wenn es nicht im produktiven Einsatz läuft? Damit will ich natürlich keinen Freischein für die Nutzung von Alpha-Projekten ausstellen, aber bei einigen Seiten könnte dies durchaus Sinn haben. Meine Seite ist ja als "Spielplatz" für neue Technologien konzipiert, also sehe ich kein Hindernis, mich auf das Experiment einzulassen.

Kommentare


Kommentiere!

Your Name:


Your Email:


Your URL:


Spam Prevention:
Enter the text above into the box below.
If you are unable to read it, refresh the page.


Your Comment: