Checkmark on Circle.png

NoSQL

Aus KGS-Wiki

NoSQL (Not only SQL)[1] steht für Datenbanksysteme, die einen nicht-relationalen Ansatz verfolgen. Diese Datenbanken skalieren horizontal und eignen sich besonders für Big-Data-Anwendungen.

Die Architektur von NoSQL-Datenbanken sind auf Größe und Performance ausgelegt. Aufgrund ihres Aufbaus sind für große Datenmengen, wie sie in Big-Data-Anwendungen verwendet werden, gut geeignet.

Es gibt verschiedene NoSQL-Ansätze und Datenbankmodelle, die in vier Hauptkategorien eingeteilt werden können:

  • Dokumenorientierte Datenbanken
  • Spaltenorientierte Datenbanken
  • Key-Value-Datenbanken
  • Graphendatenbanken

Typen

Dokumentenorientierte Datenbanken

Dokumentenorientierte Datenbanken speichern Daten als Dokumente, die in einem bestimmten Format wie JSON oder XML vorliegen. Ein solches Dokument kann eine ganze Menge an Informationen speichern, und es ist flexibel genug, um verschiedene Arten von Daten aufzunehmen. Dokumentenorientierte Datenbanken sind eine gute Wahl für Anwendungen, die viele komplexe Datenstrukturen benötigen.

Spaltenorientierte Datenbanken

Spaltenorientierte Datenbanken speichern Daten in Spalten anstatt in Reihen. Die Daten sind somit in einer Matrix organisiert, wobei jede Spalte eine bestimmte Art von Daten enthält. Spaltenorientierte Datenbanken sind sehr effizient bei der Verarbeitung von großen Datenmengen und eignen sich daher gut für Anwendungen, die eine hohe Skalierbarkeit erfordern, wie z.B. Business Intelligence oder Data Warehousing.

Key-Value-Datenbanken

Key-Value-Datenbanken speichern Daten als Schlüssel-Wert-Paare. Die Daten sind somit unstrukturiert und können beliebig groß sein. Der Schlüssel ist ein eindeutiger Identifier, mit dem auf die gespeicherten Daten zugegriffen werden kann. Key-Value-Datenbanken sind sehr schnell und einfach zu verwenden, was sie zu einer guten Wahl für Anwendungen macht, bei denen schnelle Lese- und Schreibzugriffe erforderlich sind.

Graphendatenbanken

Graphendatenbanken speichern Daten als Knoten und Kanten. Die Knoten repräsentieren Entities wie Personen oder Orte, während die Kanten Beziehungen zwischen den Knoten darstellen. Graphendatenbanken sind sehr gut geeignet für Anwendungen, die komplexe Beziehungen zwischen Daten haben, wie zum Beispiel Social-Media-Plattformen oder Empfehlungssysteme.

Unterschiede

Die wichtigsten Unterschiede zwischen NoSQL- und SQL-Datenbanken sind folgende:

  • NoSQL-Datenbanken verwenden alternative Datenbankmodelle wie Wertepaare, Objekte, Dokumente oder Listen und Reihen, während SQL-Datenbanken auf einem relationalen Datenbankmodell basieren.
  • NoSQL-Datenbanksysteme verwenden das BASE-Modell, das auf die Verfügbarkeit von Daten und nicht auf deren Konsistenz ausgerichtet ist, während SQL-Datenbanken nach dem ACID-Modell arbeiten.
  • NoSQL-Datenbanken sind auf die Verarbeitung großer Datenmengen optimiert und können flexibel auf Änderungen reagieren.
  • NoSQL-Datenbanken haben oft einfachere APIs als SQL-Datenbanken.
  • NoSQL-Datenbanken sind einfacher zu replizieren.

Modelle

Einige der bekanntesten NoSQL-Datenbanken sind:

Leistung

Ben Scofield hat die Leistung von NoSQL-Datenbanken wie folgt bewertet:[2]

Datenmodell Leistung Skalierbarkeit Flexibilität Komplexität Funktionalität
Key-Value hoch hoch hoch keine unterschiedlich (keine)
Spaltenorientiert hoch hoch mittel gering minimal
Dokumentenorientiert hoch unterschiedlich (hoch) hoch gering unterschiedlich (gering)
Graphbasiert unterschiedlich unterschiedlich hoch hoch Graphentheorie
RelationalRelational unterschiedlich unterschiedlich gering mittel Relationale Algebra

Weblinks