NoSQL
In diesem Artikel dreht sich alles ums Thema „NoSQL“ und „NoSQL Datenbank-Managementsysteme“. Wir erklären, was es mit dem Begriff NoSQL auf sich hat und gehen auf folgende Punkte näher ein:
Was ist NoSQL?
„Not Only SQL“ oder „Nicht nur SQL“ – kurz NoSQL – bezeichnet eine Gruppe von Datenbankmanagementsystemen (DBMS), die alternative Datenbankmodelle und -strukturen nutzen. Im Gegensatz zu herkömmlichen relationalen Datenbanken, die auf Tabellen basieren, setzen NoSQL-Datenbanken auf Modelle wie Dokumente, Spalten oder Graphen. Diese bieten oft eine höhere Flexibilität, Skalierbarkeit und Performance, insbesondere für Anwendungen mit vielen Schreibvorgängen oder unstrukturierten Daten.
NoSQL-Datenbanken sind besonders in Big-Data-Anwendungen gefragt, die massive Datenmengen in Echtzeit verarbeiten müssen. Beispiele sind die Social-Media-Analyse oder Online-Werbung. Im Kontext von Big Data haben sich die Anforderungen an moderne Datenbanksysteme in den letzten beiden Jahrzenten stark verändert. Die Bewältigung von großen Datenmengen beliebiger Struktur rücken in den Vordergrund. Wie NoSQL Datenbanken bei der Bewältigung helfen können und was NoSQL Datenbanksysteme dem relationalen Modell im Voraus haben, erfahren Sie hier.
Was sind NoSQL Datenbankmanagementsysteme?
Relationale Datenbanksysteme bilden seit den 70er Jahren des 20. Jahrhunderts das führende Modell für die Speicherung von Daten in Computersystemen. Dabei werden strukturierte Daten in Tabellen gespeichert und mithilfe der eigens für diesen Zweck entwickelten Abfragesprache SQL abgefragt. Mit steigendem Datenvolumen und dem vermehrten Aufkommen von unstrukturierten Daten, sind auch die Anforderungen an Datenbanksysteme stets gestiegen. Seit den frühen 2000er Jahren wurde daher das Konzept der NoSQL Datenbanksysteme entwickelt.
Als NoSQL Datenbankmanagementsysteme (DBMS) werden Datenbankmanagementsysteme zusammengefasst, die einen anderen Ansatz als relationale Datenbanken wählen. NoSQL steht dabei für Not Only SQL und sagt aus, dass NoSQL DBMS auf SQL als Abfragesprache weitestgehend verzichten und stattdessen einen anderen Ansatz verfolgen. Dennoch kann SQL – in Abhängigkeit vom konkreten NoSQL Datenbanksystem – immer noch teilweise Anwendung finden.
Geschichtlicher Ursprung der NoSQL DBMS
Die Geschichte der NoSQL DBMS ist vergleichsweise jung. Der IBM Mitarbeiter Carlo Strozzi hat das Konzept zum ersten Mal 1998 erwähnt, um seine eigens entwickelte Datenbank zu beschreiben, die vollständig auf das relationale Modell verzichtete. Damals wurde unter dem Sammelbegriff NoSQL noch Datenbanken zusammengefasst, die auf SQL als universelle Datenbanksprache komplett verzichteten. Im Laufe der Zeit hat sich dieses Bild aber zur heutigen Bedeutung gewandelt. NoSQL DBMS sind heute zu einem unverzichtbaren Instrument für die Speicherung und Analyse großer Datenmengen geworden.
Welche Arten von NoSQL DBMS gibt es?
Die wichtigsten Hauptvertreter von NoSQL DBMS bilden Key-Value DBMS, Document DBMS, Wide-Column DBMS und Graphen DBMS.
Key-Value Datenbanken speichern ihre Daten jeweils in einem Schlüssel-Wert-Paar. In der Regel ist der Schlüssel dabei eine ID ähnlich eines Primärschlüssels einer relationalen Datenbank, anhand dessen ein Datensatz eindeutig erkennbar ist. So kann ein Key beispielsweise eine Session ID in einem Online-Shop sein, zu der spezifische personenbezogene Informationen gespeichert werden.
Wide-Column-Datenbanken erweitern Key-Value-Datenbanken um eine weitere Dimension, indem sie die eine Tabellenstruktur mit Spalten und Zeilen implementieren, die jedoch im Gegensatz zu relationalen Datenbanken keiner besonderen Form bedürfen und die Anzahl von Zeilen und Spalten daher immer unterschiedlich sein kann.
Dokumenten-Datenbanken speichern ihre Daten in Form eines Dokuments. Der Aufbau eines Dokuments ist dabei in einem JSON-ähnlichen Format, das beliebig auf die individuellen Bedürfnisse angepasst werden kann.
Graphen-Datenbanken bilden ihre Daten in Form eines mathematischen Graphen mit Knoten und Kanten ab. So werden die einzelnen Entitäten als Knoten dargestellt und die Beziehungen zwischen den einzelnen Entitäten als Kanten. Die Beziehungen zwischen den einzelnen Entitäten müssen nicht immer neu berechnet werden, sondern bleiben in der Graphen-Datenbank bestehen. Dadurch können Verknüpfungen effizient aufgebaut werden.
Die wichtigsten Arten von NoSQL Datenbanken bilden die folgenden:
Key-Value DBMS
Key-Value Datenbanken speichern ihre Daten jeweils in einem Schlüssel-Wert-Paar. In der Regel ist der Schlüssel dabei eine ID ähnlich eines Primärschlüssels einer relationalen Datenbank, anhand dessen ein Datensatz eindeutig erkennbar ist. So kann ein Key beispielsweise eine Session ID in einem Online-Shop sein, zu der spezifische personenbezogene Informationen gespeichert werden.
Wide-Column DBMS
Wide-Column-Datenbanken erweitern Key-Value-Datenbanken um eine weitere Dimension, indem sie die eine Tabellenstruktur mit Spalten und Zeilen implementieren, die jedoch im Gegensatz zu relationalen Datenbanken keiner besonderen Form bedürfen und die Anzahl von Zeilen und Spalten daher immer unterschiedlich sein kann.
Graphen DBMS
Graphen-Datenbanken bilden ihre Daten in Form eines mathematischen Graphen mit Knoten und Kanten ab. So werden die einzelnen Entitäten als Knoten dargestellt und die Beziehungen zwischen den einzelnen Entitäten als Kanten. Die Beziehungen zwischen den einzelnen Entitäten müssen nicht immer neu berechnet werden, sondern bleiben in der Graphen-Datenbank bestehen. Dadurch können Verknüpfungen effizient aufgebaut werden.
Was sind die Vorteile von NoSQL DBMS?
Der größte Vorteil von NoSQL Datenbanken ist die einfache horizontale Skalierbarkeit. Im Gegensatz zu SQL Datenbanken können einfach bei Bedarf mehrere Server parallel nebeneinander geschaltet werden, so dass der Workload der Daten gleichmäßig auf verschiedene Server verteilt werden kann. Zudem repliziert eine NoSQL DBMS über mehrere Server und bietet seinen Usern somit eine geringe Latenz und nahezu keine Ausfallzeiten. Außerdem wird der Datenverkehr zwischen den einzelnen Servern aufgeteilt, um die Belastung eines einzelnen Servers zu verringern. Relationale Datenbanken können eine horizontale Skalierung mithilfe von Partitionierung und Shading zwar gewährleisten, sind jedoch dabei ab einer zu großen Datenmenge unwirtschaftlich. Eine vertikale Skalierung ist für relationale Datenbanksysteme möglich, jedoch ist die dafür notwendige Hardware teuer und lohnt sich daher oftmals nicht.
Ein weiterer großer Vorteil von NoSQL DBMS gegenüber relationalen DBMS ist, dass Daten innerhalb von NoSQL DBMS keiner besonderen Form bedürfen. So können neben strukturierten Daten auch semistrukturierte Daten und unstrukturierte Daten in einer NoSQL Datenbank gespeichert werden. Datenbankentwickler können sich somit auf das Wesentliche konzentrieren und müssen sich über Schemata keine Gedanken machen. Außerdem können Datentypen flexibel vergeben werden.
Ein weiterer Vorteil von NoSQL DBMS ist, dass keine komplizierte Joins zwischen Tabellen durchgeführt werden müssen, wodurch sich die Geschwindigkeit und Performance von Abfragen deutlich vereinfachen lässt. Außerdem ist die gesamte Datenbank auf Performance ausgelegt, wodurch Anfragen schnell bearbeitet werden können. Dies ist auch der Grund dafür, warum sich NoSQL DBMS für den Einsatz im Big Data Umfeld besser eignen als relationale DBMS.
Beispiele: Anwendungsfälle von NoSQL DBMS
NoSQL Datenbanken werden also dort verwendet, wo eine große Menge von Daten oftmals auch in Echtzeit analysiert werden muss, um darauf bestimmte Empfehlungen oder Handlungsempfehlungen ableiten zu können. Ein denkbarer Use-Case ist die Auswertung von Webshop-Daten in Echtzeit. Viele Online-Shops sehen sich mit hohen gleichzeitigen Nutzern sowie unterschiedlichem Userverhalten konfrontiert. Daten müssen ich Echtzeit ausgewertet werden, um Besuchern eine personalisierte User Experience zu gewährleisten. NoSQL Datenbanken können aufgrund ihrer Struktur sehr viele Anfragen in kürzester Zeit – dazu noch kostengünstig – beantworten. Durch den schemalosen Aufbau und die In-Memory-Speicherung der Daten können für die Personalisierung benötigte Informationen sofort bereitgestellt werden um beispielsweise Next Best Offers basierend auf dem individuellen Userverhalten heraus zu generieren. Zudem lässt sich mithilfe von NoSQL Datenbanken eine horizontale Skalierbarkeit gewährleisten: Gerade bei schwer vorherzusehender Anzahl von Usern, die ich für meinen Online-Shop erwarte, ist eine problemlose Erweiterbarkeit der Server sinnvoll. So können bei steigender Nutzerzahl im Shop einfach weitere Server kostengünstig parallel aufgebaut werden, um den steigenden Bedarf zu decken. Dies erhöht zudem die Flexibilität der Lösung.
Ein weiterer möglicher Use Case ist die Erkennung von Fraud Detection mithilfe von NoSQL Datenbanken vor allem in den Branchen Banken und Versicherungen, in denen große Datenmengen analysiert werden müssen. Hierfür eigenen sich beispielsweise Graphendatenbanken besonders gut. So können Beziehungen zwischen einzelnen Entitäten benutzt werden, um Kauftransaktionen in Echtzeit zu verarbeiten. So kann für jede Transaktion geprüft werden, ob beispielsweise die gleiche Kreditkarte bereits in einem Betrugsfall benutzt wurde oder ob Anmeldedaten in einem Online-Banking zu einer validen Benutzername-Passwort-Kombination gehört. Durch die Verwendung von Graphendatenbanken können auf der einen Seite Muster erkannt werden und auf der anderen Seite Ergebnisse der Analyse schneller zurückgegeben werden. Dadurch eignen sich Graphendatenbanken deutlich besser für die Echtzeit Analyse als relationale Datenbanken.
Fazit zu NoSQL
NoSQL Datenbanken sind eine sinnvolle Ergänzung zu klassischen relationalen Datenbanken. Überall dort wo große Menge von Daten in einer kurzen Zeit analysiert und zurückgegeben werden müssen, sind sie gegenüber relationalen Datenbanken zu bevorzugen, weil sie deutlich effizienter sind. Die konkrete Implementierung von NoSQL Datenbanksystemen hängt von Use Case zu Use Case ab und ist immer individuell zu betrachten. Gerne helfen Ihnen die Expert: innen von CINTELLIC bei der Umsetzung Ihres konkreten Use Case. Sprechen Sie uns gerne zu diesem Thema an.