NoSQL – Funktion und Vorteile von NoSQL-Datenbanken

Die Anforderungen an die moderne Anwendungsentwicklung haben sich in den vergangenen 15 Jahren grundlegend verändert – immer größere Datenmengen müssen immer schneller gespeichert, verarbeitet und aktualisiert werden. Was die Bewältigung großer Datenmengen betrifft, machen nicht-relationale oder NoSQL-Datenbanken schon länger von sich reden. Aber was ist NoSQL eigentlich? Und welche Vorteile bietet dieser moderne Datenbankansatz?

Was ist NoSQL?

NoSQL steht für „not only SQL“ und als das will sich das Datenbankmodell auch verstehen: keineswegs als Gegenstück, sondern vielmehr als Bereicherung und nützliche Ergänzung zu den traditionellen, relationalen SQL-Datenbanken. Dabei überwinden NoSQL-Datenbanken die Grenzen der relationalen Systeme und nutzen stattdessen alternative Datenbankmodelle. Dies muss aber nicht bedeuten, dass keine SQL-Systeme eingesetzt werden. Es gibt auch zahlreiche gemischte Varianten, in denen mit beiden Lösungen gearbeitet wird, und die ebenfalls unter den Überbegriff NoSQL fallen.

Bis in die späten 2000er-Jahre waren SQL-Datenbanken das Nonplusultra in der Anwendungsentwicklung. Andere Ansätze, wie objektorientierte Datenbanken, erreichten aufgrund ihrer komplexen Handhabung und Implementierung nie diesen hohen Stellenwert. Eine echte Alternative ergab sich durch die Entwicklung der NoSQL-Datenbanken, die Antwort auf die Einschränkungen und Probleme relationaler Datenbanken waren – denn relationale Datenbanken sind den Anforderungen der modernen Anwendungsentwicklung oft nicht mehr gewachsen. Stattdessen nutzen NoSQL-Systeme Neuerungen wie Cloud-Server, um ein alternatives Datenmodell zu bieten, in dem viele unterschiedliche Daten gespeichert und verarbeitet werden können. Die daraus resultierenden Datenstrukturen sind leistungsstark und flexibel und können schnell auf veränderte Anforderungen reagieren.

NoSQL-Systeme werden oft als strukturierte Datenspeicher bezeichnet, was den signifikanten Unterschied zu den relationalen SQL-Datenbanken verdeutlicht: Anders als diese nutzen NoSQL-Datenbanken keine starren Tabellenschemata, in denen Daten vor der Speicherung definiert werden müssen. Sie setzen auf flexiblere Methoden, mit denen problemlos neue Datensätze eingepflegt werden können, die sich laufend in der Anwendung aktualisieren. NoSQL-Lösungen eignen sich zudem zur Verarbeitung unstrukturierter oder auch unbekannter Daten – mit einer relationalen Datenbank ein Ding der Unmöglichkeit.

Wie funktionieren NoSQL-Datenbanken?

Anders als relationale SQL-basierte Datenbanken nutzen NoSQL-Datenbanken keine traditionellen Tabellen mit Zeilen und Spalten zur Datenspeicherung. Stattdessen organisieren sie große Datenmengen mithilfe flexibler Techniken, beispielsweise mit Dokumenten, Graphen, Wertepaaren und Spalten. Damit eignen sich NoSQL-Systeme optimal für Anwendungen, bei denen große Datenmengen verarbeitet werden müssen und die daher flexible Strukturen erfordern. Da NoSQL-Systeme Hardware-Cluster und Cloud-Server nutzen, werden die Kapazitäten gleichmäßig verteilt und die Datenbank läuft auch bei starkem Datenaufkommen flüssig. Im Gegensatz zu relationalen Datenbanken, die bei steigender Datenmenge schnell an Leistung verlieren, bilden NoSQL-Datenbanken damit auch bei hohem Datenvolumen eine leistungsstarke, flexible und skalierbare Lösung.

Eine Besonderheit der NoSQL-Systeme ist außerdem die horizontale Skalierung. Relationale SQL-Datenbanken sind vertikal skaliert und stützen ihre gesamte Leistungskraft auf einen einzelnen Server. Um ihre Kapazitäten zu erhöhen, müsste in einen stärkeren Server investiert werden – das ist auf Dauer nicht nur teuer, sondern schränkt auch die Möglichkeiten in der Anwendungsentwicklung ein. NoSQL-Lösungen verteilen die Daten in der Regel auf mehrere Server. Erhöht sich die Datenmenge, werden einfach neue Server hinzugefügt. Dadurch können NoSQL-Datenbanken ohne Probleme große Datenmengen speichern und verarbeiten, wodurch sie sich vor allem für Big-Data-Anwendungen eignen.

Die vier wichtigsten NoSQL-Ansätze

Die strukturierten Datenspeicher verzichten auf die starren Schemata ihrer relationalen Mitstreiter und lassen sich damit besonders gut für Big-Data-Anwendungen einsetzen. Weltweit gibt es bereits zahlreiche verschiedene NoSQL-Systeme – meistens Open Source – die je nach Anbieter und Anforderungen unterschiedlich aufgebaut sind. Obwohl es keine einheitlichen Regelungen gibt, lassen sich die verschiedenen NoSQL-Ansätze in vier Hauptkategorien unterteilen.

Dokumentenorientierte Datenbanken

In dokumentenorientierten NoSQL-Datenbanken werden Daten direkt in Dokumenten von variierender Länge gespeichert. Die Daten müssen dabei nicht strukturiert sein. Ihnen werden verschiedene Attribute oder sogenannte „Tags“ zugeordnet, auf deren Basis die Inhalte des Dokuments durchsucht werden können. Dokumentenorientierte NoSQL-Datenbanken eignen sich besonders gut für Content-Management-Systeme und Blogs. Als Datenformat wird heute vor allem JSON (JavaScript Object Notation) verwendet, das den schnellen Datenaustausch zwischen Anwendungen ermöglicht.

Graphdatenbanken

Eine Graphdatenbank bildet Beziehungen zwischen Daten mithilfe von Knoten und Kanten ab. Über Knotenpunkte und deren Verbindungen zueinander wird das Beziehungsgeflecht der Daten organisiert. Bei Datenbeständen mit stark vernetzten Informationen erreichen NoSQL-Graphdatenbanken dadurch eine deutlich bessere Performance als relationale SQL-Datenbanken. Sie werden vor allem im Bereich Social Media angewendet – beispielsweise, um die Beziehungen zwischen Followern auf Twitter oder Instagram darzustellen.

Key-Value-Datenbanken

Während relationale SQL-Datenbanken starre Schemata und Tabellen nutzen, speichern Key-Value-Datenbanken Daten in Form von Schlüssel-Werte-Paaren. Die einzelnen Werte sind spezifischen Schlüsseln zugeordnet, wobei der Datensatz selbst als Schlüssel (Key) fungiert und einen Wert (Value) darstellt. Der Key bildet zugleich einen Index, mit dem sich die Datenbank durchsuchen lässt. Die Keys der NoSQL-Key-Value-Datenbanken sind immer eindeutig und lassen sich mit den Primary Keys von relationalen Datenbanken vergleichen.

Spaltenorientierte Datenbanken

Anders als relationale Datenbankmodelle speichern Spaltenorientierte DatenbanksystemeDatensätze nicht in Zeilen, sondern in Spalten. Dadurch ergeben sich kürzere Datenleseprozesse und eine höhere Leistungsfähigkeit. Dieses NoSQL-Modell wird vor allem für Data-Mining und Analyseprogramme genutzt.

Vorteile von NoSQL gegenüber SQL

Je nach Anwendungszweck kann NoSQL gewisse Vorzüge gegenüber klassischen relationalen Datenbanken bieten: Wo SQL-Systeme schnell ausgelastet sind, wie beispielsweise im Umgang mit Big Data, warten NoSQL-Datenbanken mithochleistungsfähigen, skalierbaren Modellen auf, die große Datenmengen in Spitzengeschwindigkeit lesen und verarbeiten können.

NoSQL-Datenbanken bewegen sich weg von den starren Schemata der SQL-Systeme und hin zu flexiblen Modellen, die sich ideal für die Verarbeitung großer Datenmengen eignen. Dank der Speicherung auf verteilten Hardware-Clustern sind sie weniger anfällig für Störungen und deutlich günstiger als die Installation eines einzelnen, leistungsstarken Servers, dessen Ressourcen regelmäßig ausgeschöpft sind und der dann ersetzt werden muss.

  SQL-Datenbank NoSQL-Datenbank
Art Eine Datenbank für alles Verschiedene Datenbankmodelle, wie z. B. Dokumenten-, Graph-, Key-Value- und Spaltendatenbank
Datenspeicherung Individuelle Daten (z. B. „Buchtitel“) werden in Zeilen in einer Tabelle gespeichert und bestimmten Attributen zugeordnet (z. B. „Autor“, „Erscheinungsjahr“ usw.). Die Datensätze werden in separaten Tabellen gespeichert und bei komplexen Suchanfragen vom System zusammengeführt. NoSQL-Datenbanken nutzen keine Tabellen, sondern je nach Typ ganze Dokumente, Key-Values, Graphen oder Spalten.
Schemata Datentyp und -struktur werden im Vorhinein festgelegt. Um neue Informationen zu speichern, muss die gesamte Datenbank angepasst werden (und zu diesem Zweck offline gehen). Flexibel. Neue Datensätze können sofort hinzugefügt werden. Strukturierte, halbstrukturierte und unstrukturierte Daten können zusammen abgespeichert werden, eine vorherige Konvertierung ist nicht notwendig.
Skalierung Vertikale Skalierung. Ein einzelner Server muss die Leistung des kompletten Datenbanksystems tragen, was einen Leistungsabfall bei großen Datenmengen zur Folge hat. Horizontale Skalierung. Jeder Administrator kann neue Commodity- und Cloud-Server hinzufügen, die NoSQL-Datenbank sendet die Daten automatisch an alle Server.
Entwicklungsmodell Open Source (z. B. MySQL) oder Bezahl-Software (Oracle Database) Open Source oder Bezahl-Software
ACID-Eigenschaften: Atomicity, Consistency, Isolation, Durability Bei SQL-Datenbanken sind alle ACID-Eigenschaften gegeben. Damit NoSQL-Datenbanken flexibel und horizontal skalierbar bleiben, werden ACID-Transaktionen meistens nicht unterstützt. Stattdessen wird das BASE-Modell verwendet (Basically Available, Soft State, Eventually Consistant). Demnach gilt: Verfügbarkeit vor Konsistenz.
Leistung Nutzen bei erhöhtem Datenaufkommen Indizes. Um die Leistung von SQL-Systemen zu erhöhen, müssen Abfragen, Indizes und Struktur optimiert werden. Durch das Nutzen von Cloud-Servern und Hardware-Clustern haben NoSQL-Datenbanken eine deutlich höhere Leistungsstärke.
APIs Abfragen zur Speicherung und zum Abrufen von Daten werden mit SQL (Structured Query Language) übermittelt. Daten werden über objektbasierte APIs gespeichert und abgefragt.

Vier beliebte NoSQL-Lösungen im Überblick

Bei den meisten NoSQL-Datenbanken handelt es sich um Open-Source-Software, die für alle Internetnutzer frei verfügbar ist. Das vereinfacht den Einstieg ungemein: So können Sie viele NoSQL-Anwendungen kostenlos herunterladen, sich damit vertraut machen und sie zunächst auch nur als Ergänzung zu Ihrer SQL-Datenbank verwenden. Folgende NoSQL-Datenbanken haben sich bereits vielfach bewährt:

Cassandra

Cassandra ist eine spaltenorientierte NoSQL-Datenbank, die für die Speicherung und Verarbeitung großer Datensätze optimiert ist.

CouchDB

Die dokumentenorientierte Datenbank CouchDB nutzt eine intuitiv verständliche HTTP/JSON-API und lässt sich für jegliche Anwendungsbereiche, von Big Data bis zu Mobile und Web, implementieren.

Neo4j

Mit Neo4j lassen sich Daten in die cloudbasierte NoSQL-Graphdatenbank integrieren. In erster Linie können damit Beziehungen zwischen einzelnen Datensätzen grafisch dargestellt und Muster erkannt werden.

Redis

Die Key-Value-Datenbank Redis ist eine sogenannte In-Memory-Datenbank: Sie speichert Daten direkt im Cache und erzielt damit eine noch höhere Leistung.


Auf dem Laufenden bleiben?

Jetzt für unseren Newsletter anmelden und gratis Online-Marketing Whitepaper für lokale Anbieter sichern!