Nicht nur relational

NoSQL - die neue (alte) Datenbank-Generation?

20.03.2013
Von Heinz Axel Pürner

Datenbankmodelle für NoSQL

Trotz gleicher Zielkriterien unterscheiden sich die NoSQL-Systeme zum Teil erheblich in ihren theoretischen Grundlagen. Eine Möglichkeit, die große Familie der NoSQL-Datenbanken zu untergliedern, bietet die Unterteilung nach Datenbankmodellen. Dabei gilt es jedoch zu beachten, dass sich die verschiedenen Urheber solcher Unterteilungen nicht immer einig sind, welches Datenbankprodukt in welche Gruppe gehört. So findet man beispielsweise Amazons SimpleDB als spaltenorientierte wie auch als dokumentenbasierte Datenbank eingeordnet. Dazu kommt, dass einzelne Produkte verschiedene Konzepte miteinander kombinieren. OrientDB zum Beispiel verbindet dokumentenbasierte Technik mit Graphen-Datenbanktechnik und Objektorientierung. Von den Datenbankmodellen her lässt sich die Familie der NoSQL-Datenbanken folgendermaßen unterteilen:

  1. Key/Value-Datenbanksysteme: Diese sind schon seit den 70er Jahren im Einsatz, zum Beispiel als eingebettete Datenbanken unter Unix wie "dbm", "gdbm" oder "Berkeley DB". Sie bedienen sich eines einfachen Schlüssel- und Wertschemas. Ein Wert ist immer einem bestimmten Schlüssel zugeordnet.
    Er kann aus einer strukturierten oder willkürlichen Zeichenkette bestehen. Der Zugriff auf einen Datensatz erfolgt nur über dessen Schlüssel. Moderne Vertreter der Key/Value-Systeme sind "Dynamo" oder "Redis". Unter den Key/Value-Datenbanksystemen gibt es auch einige In-Memory-Datenbanken (Hauptspeicherdatenbanken), die sich gut als Cache-Speichersysteme einsetzen lassen; Beispiele sind "Memcached" oder "Redis".

  2. Spaltenorientierte Datenbanksysteme: Vertreter dieser Kategorie werden auch als Wide Column Stores bezeichnet. Sie speichern im Gegensatz zu den Relationalen Datenbanken Daten mehrerer Einträge in Spalten anstatt in Zeilen. Die Struktur einer Spalte besteht aus dem Namen der Spalte, den Daten und einem Zeitstempel. Leseprozesse funktionieren in so organisierten Systemen schnell, da keine unnötigen Daten wie bei zeilenorientierten Datenbanken gelesen werden müssen. Schreibprozesse sind aber nur dann ebenso schnell, wenn nur eine Spalte betroffen ist. Gut geeignete Einsatzbereiche für solche Datenbanken sind daher Reporting, Business Intelligence (BI) und Data-Mining. Die Idee der Spaltenorientierten Datenablage gibt es schon seit Ende der 80er Jahre. Über längere Zeit hat indes nur Sybase Entwicklungen in diese Richtung betrieben und in dem BI-Produkt "Sybase IQ" umgesetzt. Neuere Vertreter sind "SimpleDB", "Cassandra", "BigTable", "Hypertable" und "Hbase".

  3. Dokumentenorientierte Datenbanksysteme: Dieser Typus von NoSQL-Datenbanksystemen speichert Daten nicht relational in Form von Tabellen, sondern in sogenannten Dokumenten ab. Ein Dokument ist dabei als eine mehr oder minder strukturierte Zusammenstellung bestimmter Daten ohne Schemavorgabe zu verstehen. Dokumente sind nicht normiert und besitzen keine Beziehungen (Relationen) zueinander. Jedes Dokument besitzt einen eindeutigen Schlüssel (Identifier - ID). Komplexere Abfragen werden durch selbst zu programmierende Map-Reduce-Funktionen unterstützt. Eines der ältesten Produkte dieser Kategorie ist "Lotus Notes". Neuere Systeme sind "CouchDB" oder "MongoDB".

  4. Graphendatenbanken: In einer Graphendatenbank werden die Informationen als Knoten oder Kanten (Beziehungen zwischen den Knoten) und deren Eigenschaften abgebildet. Ihr Vorteil liegt in einem einfachen und effizienten Durchlauf (Traversierung) durch ein solches Netz, was sich mit relationalen Datenbanken nur mühselig abbilden lässt. Traversierung eines Graphen bedeutet, dass der Graph beginnend von einem Startknoten durchlaufen wird. Dies stellt eine der wichtigsten Operationen in diesem Modell dar. So können aufwendige Datenbankabfragen wie mehrere rekursiv verschachtelte Joins vermieden werden. Das Graphenmodell bietet eine bessere Performance als SQL.

Folgende Anwendungen lassen sich auf Graphen zurückführen:

  • Fahr- oder Flugplanoptimierung,

  • Verkehrsleitsysteme,

  • Geoinformationssysteme,

  • Hyperlink-Struktur des WWW,

  • Bedeutung von Seiten für Suchmaschinen (PageRank) und

  • "Wer kennt wen"-Beziehungen in sozialen Netzen.

Bekannter Vertreter dieser Kategorie ist Neo4j. Das System ist im Übrigen transaktionsorientiert mit ACID-Konsistenz, erfüllt also eines der als typisch geltenden Kriterien für NoSQL nicht.

Im Video: NoSQL-Datenbanken - Redis