Key/Value-Datenbanksysteme

KeyValue/Datenbanksysteme sind seit den 70er Jahren im Einsatz und gehören somit zu den ältesten NoSQL-Datenbanksystemen. Sie erfahren jedoch im Web 2.0- und Cloud-Zeitalter einen großen Aufschwung und gehören wahrscheinlich zu dem am schnellsten wachsenden Bereich der NoSQL-Bewegung. Dies ist auch dadurch zu begründen, dass das Datenvolumen mit Firmen wie Facebook und Amazon extrem gestiegen ist und somit auf viele verschiedene Rechnerinstanzen verteilt werden muss, wofür sich diese Systeme sehr gut eignen.

Datenmodell

Key/Value-Systeme bedienen sich eines einfachen Schlüssel- und Wertschemas. Ein Wert ist immer einem bestimmten Schlüssel zugeordnet, der aus einer strukturierten oder willkürlichen Zeichenkette bestehen kann. Diese Schlüssel können in Namensräume sowie in Datenbanken aufgeteilt werden. Die Werte (auch Values genannt) des Systems können neben Strings auch Listen, Sets oder Hashes enthalten, wie es beispielsweise bei Redis der Fall ist (Siehe Abbildung).

Value Typen in Redis
Value Typen in Redis

Hashs funktionieren exakt wie Key/Values-Paare, unter einem Key wird ein Hash und ein Value gespeichert. Mit Listen können Daten ähnlich wie bei Stacks und Queues aufgefasst werden. Die Elemente können von beiden Seiten hinzugefügt oder entfernt werden können. Im Gegensatz zu Sets lassen Listen doppelte Werte zu. Sets und sortierte Sets fungieren ähnlich wie Listen, jedoch kann nur von oben auf die Elemente zugegriffen werden und es können keine doppelten Werte eingefügt werden. Die Datenbank Chordless? erlaubt zusätzlich beliebige Java-Objekte, welche die Schnittstelle "Serializable" implementieren.

Vorteile

Der Vorteil solcher Systeme ist die Skalierbarkeit. Sowie die schnelle und effiziente Datenverwaltung, die durch das einfach gehaltene Schema entsteht. Durch das Web 2.0-Zeitalter sind schemafreie bzw. Systeme mit schwächeren Schemaanforderungen vermehrt in den Fokus der Entwickler gerückt. Dies ist dadurch zu begründen, dass in relationalen Datenbankanwendungen, die Tera- bis Petabyte an Daten verwalten, Schemaerweiterungen große Gefahren mit sich bringen, die das ganze System für mehrere Stunden lahm legen und somit nicht mehr ohne weiteres durchgeführt werden können. So übernimmt die Anwendung des Key/Value-Systems ein Teil der Verantwortung im Umgang mit dem Schema. Deshalb müssen die Datenbanken bei Änderungen nicht für eine längere Zeit gesperrt werden, stattdessen wird der Ansatz der Datenversionierung verfolgt. Dies bedeutet, dass beispielsweise bei dem Hinzufügen eines neuen Feldes (Schemaänderung), die Anwendung von Anfang an die Daten schreiben kann, während ein weiterer Prozess die Daten im Hintergrund konvertiert und als neue Version speichert.

Nachteile

Der Zugriff auf einen Datensatz erfolgt lediglich über dessen Schlüssel. Diese einfache Handhabung des Schemas bringt natürlich auch den Nachteil mit, dass die Systeme oft nur eingeschränkte Abfragemöglichkeiten bieten. Einige Key/Value-Systeme verzichten somit auf komplexe Suchalgorithmen und Indizes, um so eine Laufzeit von O(1) für Lese- und Schreiboperationen ermöglichen zu können. So ist es oft nicht möglich komplexe Queries selbst zu schreiben, daher muss sich auf die Funktionalität der API verlassen werden.

Kategorisierung von Key/Value-Systemen:

Zudem gibt es noch viele weitere KEY-Value-NoSQL-Datenbanken, deren Anzahl schnell wächst.

Kategorie: Neue DB-Entwicklungen, NoSQL, KeyValue-DB, K

Quellen:

  • Edlich et. Al.(2010): „NoSQL – Einstieg in die Welt nichtrelationaler Web 2.0 Datenbanken „ Carl Hanser Verlag, München
  • Redmond, E, Wilson, J.R.: "Seven Databases in Seven Weeks, A Guide to Modern Databases and the noSQL-Movement", The Pragmatic Programmers, 2012, ISBN 978-1-93435-692-0