Suchen

Definition Was ist NoSQL?

| Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

NoSQL steht für „Not only SQL“ und bezeichnet Datenbanksysteme, die einen nicht-relationalen Ansatz verfolgen. Diese Datenbanken, denen verschiedene Datenbankmodelle zugrunde liegen können, sind horizontal skalierbar und lassen sich für Big-Data-Anwendungen einsetzen.

Firmen zum Thema

(Bild: © aga7ta - stock.adobe.com)

Hinter der Abkürzung NoSQL verbirgt sich der englische Begriff Not only SQL. NoSQL steht für Datenbanksysteme, die mit den Eigenschaften typischer relationaler Datenbanken brechen und alternative Datenbankmodelle verwenden. Die Datenspeicher basieren nicht auf den bekannten relationalen Datenschemata. NoSQL bedeutet allerdings nicht, dass grundsätzlich auf die Datenbanksprache SQL (Structured Query Language) verzichtet wird. Viele Systeme setzen zwar komplett auf nicht-relationale Funktionen, doch existieren auch Datenbanken, die nur bestimmte Elemente der SQL-Systeme unberücksichtigt lassen.

Während relationale Datenbanken Tabellen mit Spalten und Zeilen für die Datenspeicherung verwenden, nutzen NoSQL-Datenbanken zum Beispiel Wertepaare, Objekte, Dokumente oder Listen und Reihen für die Organisation der Daten. NoSQL-Systeme haben gemeinsam, dass sie für Anwendungen optimiert sind, bei denen die SQL-basierten relationalen Datenbanken an ihre Grenzen stoßen. Sie stellen eine Ergänzung und Bereicherung der Datenbankwelt dar und werden oft als strukturierte Datenspeicher bezeichnet.

Aufgrund ihres Aufbaus skalieren die NoSQL-Datenbanken horizontal. In vielen Fällen basieren sie auf Open Source Software, es gibt aber auch kommerzielle Lösungen auf Nicht-Open-Source-Basis. Dank der fehlenden starren Schemata der relationalen Datenbanken, sind NoSQL-Systeme sehr flexibel einsetzbar und eignen sich für große Datenmengen, wie sie in Big-Data-Anwendungen verwendet werden. Ihre komplette Architektur ist auf Skalierbarkeit und Performance ausgelegt. Die verschiedenen NoSQL-Ansätze und Datenbankmodelle lassen sich in vier unterschiedliche Hauptkategorien einteilen. Diese sind:

  • Dokumentenorientierte Datenbanken,
  • Key-Value-Datenbanken,
  • Graphendatenbanken und
  • spaltenorientierte Datenbanken.

Zu den bekanntesten Implementierungen des NoSQL-Ansatzes zählen Apache Cassandra, Riak, MongoDB, Redis und CouchDB.

Was NoSQL-Datenbanken auszeichnet

In NoSQL-Datenbanken sind die Forderungen umgesetzt, große, exponentiell wachsende Datenmengen performant zu verarbeiten sowie skalierbare, leistungsfähige und verteilte Architekturen zu unterstützen. Folgende typischen Eigenschaften zeichnen die NoSQL-Systeme aus:

  • Die horizontale Skalierbarkeit,
  • das Vermeiden von unnötiger Komplexität,
  • eine hohe Performance und ein hoher Durchsatz,
  • die Nutzung von allgemein gebräuchlicher Hardware,
  • die Vermeidung von relationalen Ansätzen des Datenmappings,
  • die Einfachheit in der Installation und Konfiguration von verteilten Datenbank-Clustern sowie
  • die Unterstützung der aktuellen Hardwaregenerationen.

Die Unterscheidungskriterien der NoSQL-Datenbanken von relationalen Datenbanksystemen

Das wichtigste Unterscheidungskriterium der NoSQL-Datenbanken von relationalen Datenbanksystemen ist die Verwendung von nicht-relationalen Datenbankmodellen. Darüber hinaus existieren zahlreiche weitere Merkmale, anhand derer sich die NoSQL-Systeme von SQL-Datenbanken abgrenzen lassen. So ist das komplette NoSQL-Datenhaltungssystem für eine effiziente Skalierung optimiert und für verteilte Architekturen entwickelt. NoSQL-Systeme arbeiten schemafrei und ermöglichen flexible Änderungen von Datendefinitionen mit Versionierungen und Hintergrundkonvertierungen.

Ein weiteres Unterscheidungskriterium ist, dass sich NoSQL-Datenbanken einfacher replizieren lassen. Bei einigen Systemen genügt für die Replikation ein einziger Befehl. In puncto Programmierschnittstellen besitzen viele NoSQL-Implementierungen bewusst einfach gestaltete APIs (Application Programming Interfaces). Auch das Konsistenzmodell von SQL- und NoSQL-Datenbanken unterscheidet sich in der Regel. Während die SQL-Daten meist nach dem ACID-Modell (Atomicity, Consistency, Isolation, Durability) gespeichert sind, verwenden NoSQL-Datenbanksysteme oft das sogenannte BASE-Modell (Basically Available, Soft State, Eventually Consistent). Es ist speziell auf die Verfügbarkeit von Daten und nicht auf deren Konsistenz ausgerichtet.

Mögliche NoSQL-Datenbankmodelle

NoSQL-Datenbanken verwenden keine relationalen Datenbankmodelle. Es kommen je nach System und Produkt andere Modelle zum Einsatz. Dies können beispielsweise folgende sein:

  • Key-Value-Datenbankmodelle,
  • spaltenorientierte Datenbankmodelle,
  • dokumentenorientierte Datenbankmodelle und
  • Graphendatenbankmodelle.

Das Key-Value-Datenbankmodell nutzt einfache Schlüssel und Werteschemata. Einzelne Werte sind immer bestimmten Schlüsseln zugeordnet und können aus willkürlichen Zeichenketten oder strukturierten Zeichen bestehen. Die Datenbanklösung Redis nutzt das Key-Value-Datenbankmodell.

In einem spaltenorientierten Datenbanksystem werden Einträge in Spalten statt in Zeilen gespeichert. Vorteil dieses Modells ist, dass im Gegensatz zu zeilenorientierten Datenbanken keine unnötigen Daten gelesen werden müssen und Leseprozesse schneller sind. Ein dokumentenorientiertes Datenbanksystem speichert die Daten nicht relational, sondern direkt in Dokumenten. Bei einem solchen Dokument handelt es sich um eine schemalose Zusammenstellung von Daten, die mehr oder minder strukturiert sein kann. Untereinander besitzen die Dokumente keine Relationen. Zum Beispiel basieren CouchDB und MongoDB auf diesem Datenbankmodell.

Bei einer Graphendatenbank werden die zu speichernden Informationen mithilfe der Eigenschaften von Knoten und Kanten abgebildet. Eine Kante stellt eine Beziehung zwischen Knoten her. Ein Graph wird grundsätzlich beginnend bei einem Startknoten durchlaufen, wodurch das Graphenmodell verschachtelte Beziehungen vermeidet und eine bessere Performance als relationale SQL-Datenbanken erzielt.

Typische Einsatzgebiete für NoSQL-Datenbanken

Mit NoSQL-Systemen können große Datenmengen mit hoher Performance gespeichert und abgefragt werden. Sie sind daher überall dort geeignet, wo SQL-Datenbanken an ihre Grenzen stoßen. Besonders bei komplexen und flexiblen Abfragen von unstrukturierten Daten spielen die NoSQL-Lösungen ihre Vorteile voll aus. Die Daten müssen nicht in ein SQL-Korsett gepresst werden, sondern sind flexibel prozessierbar. Typische Einsatzgebiete von NoSQL-Datenbanken sind Anwendungen im Big-Data-Umfeld.

(ID:44735358)

Über den Autor