Structured Storage / NoSQL [Teil II/II]

NoSQL ist ein aktueller Trendbegriff und steht für Datenbanken, die auch unstrukturierte Daten optimal und in großen Mengen verarbeiten können. Der Begriff NoSQL ist allerdings irreführend und stattdessen besser von Structured Storage gesprochen werden, denn dieses Akronym steht für Not only SQL. NoSQL bezeichnet zudem nicht ein einziges Datenbankmodell, sondern sehr viele unterschiedliche, die in vier Kategorien unterschieden werden können:

Key-Value-Datenbanken sind die einfachsten NoSQL-Formen

Key-Value-Datenbanken sind eine Urform von Datenbanken – jeder Software-Entwickler hat bereits bewusst oder unbewusst mit der (meistens flüchtigen) Speicherung von Daten in Key-Value-Paaren gearbeitet. Im Grunde sind Key-Value-Datenbanken vergleichsweise primitiv, speichern Daten dafür in Rekordzeiten und rufen diese ebenso schnell wieder ab. Komplexe Geschäftslogiken lassen sich direkt in der Datenbank jedoch eher weniger abbilden. Die Analyse muss an externer Stelle, also außerhalb der Datenbank, erfolgen.

In reinen Key-Value-Datenbanken werden üblicherweise große Datenmengen unter schnellsten Zugriffszeiten verarbeitet, beispielsweise Sensordaten von Produktionsanlagen.

Key-Value-Datenbanken beschreiben ein grundlegendes Konzept, welches in fast allen anderen strukturierten Datenbanken aufgegriffen wird. Mit anderen Worten: Ein bisschen Key-Value steckt auch in den anderen NoSQL-Datenbanken.

Spaltenorientierte Datenbanken bieten einen extrem schnellen Datenzugriff

Spaltenorientierte Datenbanken sind im Vergleich zu zeilenorientierten Datenbanken (relationale Datenbanken) sehr viel schneller im Hinzufügen von neuen Datensätzen, denn dies geschieht über das Hinzufügen neuer Spalten. Solche Datenbanken können ähnlich komplexe Datenmodelle abbilden, wie zeilenorientierte Datenbanken, haben demgegenüber jedoch einen enormen Geschwindigkeitsvorteil, wenn Daten in nahezu Realtime in die Datenbank geschrieben und ausgewertet werden sollen. Der Nachteil an der Spaltenorientierung ist, dass die Abänderung von bestehenden Datensätzen in der Regel umständlich und langsam ist, daher ist die Eignung für transaktionsintensive Datenbanken in der Regel nicht gegeben. Zudem lassen sich auch in dieser Art von Datenbank weitgehend nur strukturierte Daten sinnvoll verarbeiten.

Spaltenorientierte Datenbanken spielen ihren Vorteil im Data Warehousing sowie für OLAP-Analysen aus. Ferner werden spaltenorientierte Datenbanken häufig für die Speicherung und Auswertung von Maschinendaten eingesetzt.

Dokumentenorientierte Datenbanken speichern Daten am flexibelsten

Dokumentenorientierte Datenbanken sind meistens gemeint, wenn von NoSQL gesprochen wird. Sie sind die flexibelste Form der Datenspeicherung, denn sie kennen keine echte tabellenorientierte Datenhaltung und können unstrukturierte bzw. semi-strukturierte Daten am besten speichern und wieder abrufen. Dokumentenbasierte Datenbanken speichern Daten in Dateien bestimmter Formate, oftmals abhängig von der Art der gerade abzuspeichernden Daten.

Strukturierte Daten werden in der Regel im XML-Format oder JSON-Format abgespeichert, doch auch völlig unstrukturierte Daten, wie Bilder oder Videos können als Binärdateien in der Datenbank abgelegt werden. Auf Relationen oder sonstige Verknüpfungen zwischen Datensätzen wird auf Ebene der Datenbank komplett verzichtet, so ist sie – anders als relationale Datenbanken – auch nicht dazu in der Lage, beispielsweise Integritätsverletzungen oder Konsistenzprüfungen vorzunehmen. Somit müssen diese außerhalb der Datenbank über externe Abfrage/Programmiersprachen hergestellt werden. Dokumentenorientierte Datenbanken sind frei von festgelegten Schemata und können dadurch Daten sehr flexibel speichern, ohne dass die Datenbank strukturell angepasst werden müsste.

Dokumentenorientierte Datenbanken bleiben auch bei sehr großen Datenmengen sehr schnell und bieten eine maximale Flexibilität. Vernetzte Daten können in einer solchen Datenbank jedoch nicht optimal gespeichert und abgerufen werden, selbst einfach JOIN-Verbindungen, wie sie im SQL alltäglich sind, sind mit einer dokumentenorientierten Datenbank nur mit Umwegen zu erreichen.
In der Regel können solche Datenbanken auch sehr transaktionsintensive Anwendungsfällen gerecht werden, die Auswertung der Daten muss jedoch außerhalb der Datenbank erfolgen.

Graphenorientierte Datenbanken für hochgradig vernetzte Daten

Graphenorientierte Datenbanken bilden die Königsklasse, wenn es um vernetzte bzw. verlinkte Daten geht. Die meisten Datenbanken knicken bei Abfragen über viele Verbindungspfade hinsichtlich ihrer Performance schnell ein, nicht jedoch graphenorientierte Datenbanken, die genau solche Daten sehr schnell und überaus tiefgreifend speichern und schnell auswerten können.

Relationale Datenbanken können 1:n-Beziehungen zwar ebenfalls gut darstellen, büßen bei vielen n:m-Beziehungen jedoch enorm an Performance ein und würden sich beispielsweise in einem Datenbankdiagramm nicht mehr übersichtlich darstellen lassen. Für graphenorientierte Datenbanken sind hochgradig vernetzte Daten gar kein Problem und sind zudem über Vektoren-Darstellungen sehr schön zwei- oder drei-dimensional visualisierbar.
Für weniger vernetzte Daten eignen sich graphenorientierte Datenbanken jedoch tendenziell eher nicht, da diese den Fokus auf die Auswertung von Graphen legen und hierauf optimiert wurden.

Zum Einsatz kommen graphenorientierte Datenbanken beispielsweise bei Daten aus der Telekommunikation, dem Social Media oder aus astronomischen Anwendungen.

Fazit

NoSQL ist nicht gleich NoSQL, sondern ein Sammelbegriff für unterschiedliche nicht-relationale Datenbanken. SQL wird nicht in absehbarer Zeit aus der Geschäftswelt verschwinden, denn relationale Datenbanken sind für strukturierte Geschäftsdaten immer noch die beste Wahl. Die von Sekunde zu Sekunde anwachsenden unstrukturierten Daten und Daten in besonders großen Mengen oder in besonders komplexen Strukturen sind in spezialisierte NoSQL-Datenbanken jedoch deutlich besser aufgehoben. Eine pauschale Empfehlung für oder gegen eine NoSQL-Datenbank gibt es nicht.