Webdesign aus Berlin
Konzept, Gestaltung, Umsetzung
Entwicklung, Hosting und Support

Dokument orientierte Datenbanksysteme - MySQL auf dem Abstieg?

Nachdem im HTML die Tabellen von den DIVs verdrängt wurden, geht es nun den Datenbank Tabellen an den Kragen. Es zeigt sich momentan ein kleiner wachsender Trend, weg von den relationalen Datenbanken, hin zu den Dokument orientierten Datenbanken. Um was es dabei genau geht, möchte ich hier ein bisschen versuchen zu erörtern.

Vor der Lösung steht das Problem

Wer schon öfters einmal größere Applikationen mit MySQL realisiert hat, weiß wie wichtig es ist, vor dem Start zu wissen, wie am Ende die Datenbankstruktur auszusehen hat. Jede spätere Änderung wirft Probleme auf oder lässt den Wunsch aufkommen noch einmal von Vorn zu starten und das ganze optimaler zu gestalten.

Jeder der mit MySQL zu tun hat kennt die umfangreiche SQL Abfragesprache, die einen bei komplexen Joins oder Selects in den Wahnsinn treiben kann.

Jeder der mit MySQL schon einmal viele Datenberge zu bewegen hatte, wird sich vor dem Tag grausen, wenn er selbige auf mehrere Rechner splitten muß.

Seien wir ehrlich, oft müssen wir aus einer Gießkanne ein Elefanten programmieren und Daten in das starre relationale Datenbanksystem pressen. Eine Tabelle für die User, eine Tabelle für die User Gruppen und eine für Profil Informationen. Alles per Insert in die entsprechenden Tabellen aufgeteilt. Und hinterher alles wieder schön mit Joins zusammen knoten. Nur warum? Warum nicht gleich alles so speichern wie es zusammengehört?

Klar, manche User gehören ein und derselben Gruppe an und Gruppen muß man extra erfassen können um nicht alle Datensätze bei Änderungen anfassen zu müssen. Aber trotzdem hat man das Gefühl, das MySQL oder relationale Datenbanksysteme für heutige Web Applikationen nicht wirklich geschaffen sind.

Lösungsansatz

Neben relationalen, hierarchischen und objektorientierten Datenbanksystemen gibt es eben noch die Dokument orientierten Datenbanksysteme. Ableger sind unter anderem Amazon SimpleDB, Apache CouchDB, FeatherDB oder MongoDB. Im Kern machen Sie aber alle das gleiche.

Hier gibt es nun keine Datensätze mehr, sondern Dokumente. Jedes Dokument hat eine einmalige ID die dieses benennt. Diese wird vom Datenbanksystem generiert und ermöglicht es Dokumente zu adressieren und auf sie zu zugreifen.

In diesem Dokument kann man nun Daten in der Form "Schlüssel : Wert" abspeichern und auch genau so wieder abrufen. Das lustige daran ist, das jedes Dokument nun unterschiedliche Schlüssel/Werte Paare enthalten kann. Wer weiß wie ein JSON Dokument aussieht, kann sich so ungefähr auch dieses Dokument vorstellen.

Man kann die Daten also jederzeit erweitern oder verkleinern, da es keine Tabelle mehr gibt, die einen über die Spalten Schlüssel vorgibt.

Beginnt man mit einem Projekt, ist das Aussehen der Datenbank also völlig egal. Man speichert erst einmal ab. Die Datenbank wächst dann mit der Applikation mit, ohne das man Kompromisse eingehen müsste.

Zugriffsbonus mit CouchDB

Während MySQL noch PHP oder eine andere serverseitige Sprache voraussetzte, benutzt CouchDB z.B. eine RESTful JSON API. Das heisst, wenn man mit APIs von Flickr, Twitter oder Facebook umgehen kann, dann gestaltet sich das hier bei dieser Datenbank ähnlich. Man kann Datenbank abfragen direkt von Javascript aus starten und bekommt direkt JSON Dokumente zurück, die sofort weiter verarbeitet werden können.

Ein wichtiger Performance Sprung. Heute üblich, müssen Daten per JS erfasst, per JSON an PHP übermittelt, in PHP in Arrays oder Objekte umgewandelt und von dort in SQL auf dem MySQL Server gespeichert werden. Und das oft mehrmals hintereinander in beiden Richtungen, man denke da an Chat Applikationen. Eine ziemlich lange Kette also, die viele Gefahren und Fehler bürgen kann. Direkter und besser gehts hier eben im Beispiel mit CouchDB.

Weitere Linktipps und Dokumente

Dieser Eintrag wurde von polarity am 02.07. 2009 - 14:43 Uhr verfasst.


Get Social


Kommentare

Was halten andere von dem Eintrag

Bitte Einloggen / Registrieren zum kommentieren.

Signin Twitter

Wats going ab in the blog?

Mehr Artikel aus dem Blog, gibt es im Blog. Wer hätte das gedacht? Am besten RSS Feed abonnieren!

Cheat Sheets zum Ausdrucken D
Blog: App URL Schemes auf iOS und Android - Warum nutzt sie keiner?
App URL-Schemes dienen dazu Anwendungen auf Mobilgeräten, über simple URLs die man aus dem Browser kennt, zu Steuern. Leider werden sie viel zu selten eingesetzt.
Cheat Sheets zum Ausdrucken D
Forum: HTML5 Games die auf den Canvas Tag basieren
Wollte hier mal den Platz nutzen um HTML5 Games zu sammeln, die auf den Canvas Tag von HTML5 basieren. Wer möchte ist natürlich Herzlich eingeladen beizutragen. Biolab Desaster Tolle Wurst. Astreines Parallax Scrolling und ausgebuffter Level Editor. Wann wird die impact.js Engine endlich released? Biolab Desaster spielen Canvas Rider Wie
Cheat Sheets zum Ausdrucken D
Blog: HTML5 Gaming, Javascript Game Engines, Working Draft Podcast und Ich
Ich bastel ja gerade an einem kleinen Spiel (Lena!). Genauer an einem Jump and Run. Um mit der Zeit zu gehen, wird das Game per HTML5 und Javascript realisiert. Das blieb natürlich nicht lange unbemerkt und ich wurde von Peter zum Working Draft Podcast diesbezüglich eingeladen.

"{s}criptshit" konzeptioniert und gestaltet Webseiten und setzt diese nach modernen Standards um. Sie finden hier Internetationen über unsere Leistungen und Wissenswertes über Webdesign und das Internet.

{s}criptshit Matternstraße 14
10249 Berlin
030 202/754/85
✉ robert[]scriptshit.de

Wir benutzen

Strikte Seo URLs mit MODx CMS D
MODx
Wir benutzen das kleine, schlanke und quell-offene Content Management System.
Strikte Seo URLs mit MODx CMS D
Blueprint CSS
Das CSS Framework hilft effizient und Browsersicher Webseiten umzusetzen.
Strikte Seo URLs mit MODx CMS D
jQuery
Das Javascript Framwork hilft uns bei userfreundlich bedienbaren Webseiten
Strikte Seo URLs mit MODx CMS D
CodeIgniter
Ermöglicht uns schnell und sicher PHP Anwendungen zu realisieren.

Hier kannst Du Dich Registrieren, Einloggen oder die User Liste anschauen