Open top menu

Brave new World: Was ist eigentlich NoSQL !?

Derzeit entsteht ein regelrechter Hype um die sogenannten NoSQL-Datenbanken wie zum Beispiel CouchDB oder MongoDB, aber was ist das eigentlich? Wie der Name schon sagt: man benutzt kein SQL, um auf die Datenbank zuzugreifen, aber NoSQL ist noch viel mehr!

Um zu verstehen, was Not only SQL eigentlich macht, ist es hilfreich, erst einmal zu Wissen was unsere Lieblings-Datenbank MySQL eigentlich alles so treibt: MySQL ist eine relationale Datenbank, die SQL spricht und über fest definierte Schemas (Tabellen) verfügt.  Relational heißt sie deshalb, weil (sehr sehr einfach ausgedrückt) eine einzelne Tabelle eine Relation zwischen Definition und Daten darstellt. Jeder Eintrag muss eindeutig sein (Primary Key) und Beziehungen zwischen Tabellen sind möglich (Foreign Keys). Operationen auf diese Tabellen werden durch die relationale Algebra bestimmt, und finden zumeist in SQL statt.

Das Problem ist nun, das relationale Datenbanken sehr schwer skalierbar sind, und die gesamte relationale Algebra beherrschen, obwohl der Entwickler nur eine kleine Teilmenge verwendet oder braucht. Besser ausgedrückt: Die Ansprüche an den Administrator wachsen mit der Anzahl der Daten! Erschwerend kommt hinzu, dass eine relationale Datenbank nicht in der Cloud betrieben werden kann.

Keine sonderlich großen Probleme, wenn man von einer 08/15-Community ausgeht, aber wenn man Facebook heißt, die Datenbank für die Mails 50TB hat, und man mal eben mit einem SELECT die Mails für einen bestimmten Benutzer abfragen möchte, hat man ein Problem.

Und genau hier kommt NoSQL ins Spiel. NoSQL-Datenbanken sprechen nicht nur nicht SQL, sondern sind auch keine relationale Datenbank! Die einfachste Form einer NoSQL-Datenbank ist die, dass man ein Key und ein Value abspeichern kann (vom Prinzip her also ein Array). Komplexere Strukturen funktionieren NICHT. Dies ist für die meisten Anwendungen ausreichend! Als Beispiel zum Beispiel ein Content Management System: Hier könnte als KEY die ID, und als Value das Dokument (oder ein serialisiertes Dokument) herhalten.

Manche NoSQL-Datenbanken erweitern dieses Konzept, in dem sie zusätzlich eine Verzeichnisstruktur zur Verfügung stellen. Ein prima Beispiel für eine solche Struktur ist die Registry von Windows!

Und jetzt mal ein bisschen Metacode, damit man sich etwas zu diesem Thema vorstellen kann:

$nosql = new nosql_database();
$nosql->login($username,$password);
$nosql->getRoot();
$nosql->addNode(‘my’).addNode(‘directory’);
$nosql->chdir(/my/directory’);
$nosql->put($key,$val);
print $nosql->get($key);
Guido
Geschrieben von Guido

Guido Mühlwitz ist Freiberufler mit Schwerpunkt HTML5, Zend Framework 2 / Node.js und individueller WordPress Plugin Entwicklung. Wenn er sich nicht gerade bei Twitter über PHP aufregt, bloggt er über aktuelle Themen aus dem Bereich der Anwendungsentwicklung.

1 Antworten auf Kommentar

  1. Avatar
    März 04, 2010

    Schöne Zusammenfassung! Finde das Thema sehr interessant, auch wenn ich mich bisher lediglich mit relationalen Datenbanksystemen beschäftigt habe :)
    Gibt übrigens auch eine schöne Chaosradio Express Folge zu CouchDB:
    http://chaosradio.ccc.de/cre125.html

    Antwort

Leave a comment