Zum Inhalt springen

Was sind NoSQL Datenbanken?

  • Daten

NoSQL („Not Only SQL“) beschreibt Datenbanken, welche im Gegensatz zu SQL nicht-relational sind, also unter anderem nicht in Tabellen organisiert werden können. Diese Ansätze lassen sich auch über verschiedene Computersysteme verteilen und sind dadurch höchst skalierbar. NoSQL Lösungen sind deshalb sehr interessant für viele Big Data Anwendungen.

Die Datenbanken zeichnen sich vor allem durch zwei Kriterien aus, die sehr weit gefasst sind. Zum einen werden Daten nicht in Tabellen gespeichert und zum anderen ist die Abfragesprache nicht SQL, was auch durch den Namen Not Only SQL deutlich wird. Die bekanntesten Beispiele von NoSQL-Datenbanken sind Apache Cassandra, MongoDB, Redis oder Neo4j.

Vorteile von NoSQL Lösungen

Diese Datenbanksysteme bieten einige Vorteile gegenüber traditionellen SQL Lösungen, die im Big Data Umfeld ausschlaggebend sind. Die folgenden Faktoren sind in nahezu allen NoSQL Datenbanken umgesetzt:

  • Wir können NoSQL-Datenbanken höher skalieren als vergleichbare relationale Datenspeicher, da diese Systeme gekennzeichnet sind durch eine sehr schnelle Datenverarbeitung, auch deshalb, weil sie keine so hohen Ansprüche an Datenschemata haben und somit die Daten schneller speichern können.
  • Die meisten NoSQL-Datenbanken sind Open-Source und können somit (bis auf die Speicherkapazität natürlich) komplett kostenlos genutzt werden, inklusive des Datenbankmanagements.
  • In der Praxis gibt es verschiedene Datenabfragen, die herkömmliche relationale Datenbanken nicht oder nur mit sehr viel Aufwand unterstützen.
  • Durch die niedrigen Ansprüche von NoSQL-Lösungen an das Datenschema sind diese nicht so restriktiv gegenüber dem Datenmodell. Eine relationale Datenstruktur hingegen kann das Datenmodell sehr stark einschränken.

ACID Eigenschaften von SQL Datenbanken

Klassische relationale Datenbanken erfüllen die vier sogenannten ACID Eigenschaften. Diese besagen, dass die wichtigste Anforderung an eine Datenbank ist, den Wahrheitsgehalt und die Aussagekraft der Daten zu erhalten. In vielen Fällen werden Datenspeicher als „Single Point of Truth“ gesehen, somit wäre es fatal, wenn fehlerhafte Informationen gespeichert und weitergegeben werden. Die vier Eigenschaften umfassen folgende Punkte:

  • Atomicity (A): Datentransaktionen, bspw. die Eintragung eines neuen Datensatzes oder das Löschen eines alten, sollen entweder ganz oder gar nicht ausgeführt werden. Für andere User ist die Transaktion erst sichtbar, wenn sie vollständig ausgeführt ist. In der Datenbank eines Finanzinstitutes beispielsweise wird die Überweisung von einem Konto auf ein anderes erst sichtbar wenn die Transaktion in beiden Tabellen vollständig ausgeführt ist.
  • Consistency (C): Diese Eigenschaft ist erfüllt, wenn jede Datentransaktion die Datenbank von einem konsistenten in einen konsistenten Zustand überführt.
  • Isolation (I): Wenn mehrere Transaktionen gleichzeitig stattfinden, muss der Endzustand derselbe sein, als wenn die Transaktionen getrennt voneinander stattfinden würden. Das heißt die Datenbank sollte den Stresstest bestehen. Also nicht durch Überlastung zu falschen Datenbanktransaktionen kommen.
  • Durability (D): Die Daten innerhalb der Datenbank dürfen sich nur durch eine Transaktion ändern und nicht durch äußere Einflüsse veränderbar sein. Ein Softwareupdate darf beispielsweise nicht versehentlich dazu führen, dass sich Daten ändern oder womöglich gelöscht werden.

NoSQL Lösungen können generell die ACID Eigenschaften nicht einhalten, obwohl es Ausnahmen gibt, wie beispielsweise die Graphdatenbanken, die alle Konzepte erfüllen. NoSQL Datenbanken werden in vielen Fällen über mehrere Geräte und Server verteilt. Dadurch können deutlich größere Datenmengen gleichzeitig verarbeitet und gespeichert werden, was eine Hauptanforderung an diese Systeme ist. Dadurch erfüllen sie jedoch die Eigenschaft der Konsistenz nicht.

Angenommen wir haben eine NoSQL Datenbank auf zwei physischen Servern realisiert, von denen einer in Deutschland und der andere in den USA steht. Die Datenbanken enthalten die Kontostände und -transaktionen von deutschen und amerikanischen Kunden. Dabei sind die deutschen Konten in Deutschland und die amerikanischen Konten auf dem amerikanischen Server gespeichert.

Es kann nun zu Fall kommen, dass ein deutscher Kunde eine Überweisung auf ein amerikanisches Konto vornimmt. Dann werden beide Datenspeicher verändert und sind in diesem Bearbeitungszeitraum inkonsistent. Es kann beispielsweise zu dem Fall kommen, dass wir eine Datenbankabfrage starten während die Verarbeitung in Deutschland bereits abgeschlossen ist, aber die in den USA noch nicht. In diesem Zeitfenster, dem „Inconsistency Window“, stimmen die Daten in der Datenbank nicht und sind inkonsistent. So etwas würde in einer relationalen Datenbank nicht vorkommen.

NoSQL Datenbanken

NoSQL Lösungen lassen sich in eine der vier Kategorien einteilen:

Das Bild zeigt die vier Kategorien von NoSQL Datenbanken, also Document Stores, Key-Value Stores, Wide Column Stores und Graphdatenbanken.
NoSQL Datenbankkategorien
  • Document Stores speichern eine Vielzahl von Informationen innerhalb eines Dokumentes. Ein Dokument könnte beispielsweise alle Daten eines Tages enthalten.
  • Key-Value Store sind eine sehr einfach Datenstruktur in der jeder Datensatz als Wert mit einem einzigartigen Schlüssel abgespeichert ist. Über diesen Schlüssel können die Informationen gezielt abgefragt werden.
  • Wide-Column Store speichern einen Datensatz in einer Spalte ab und nicht wie sonst in einer Zeile. Sie sind dafür optimiert worden schnell Daten in großen Datensätzen zu finden.
  • Graphdatenbanken speichern Informationen in sogenannten Knoten und Kanten ab. Dadurch lassen sich beispielsweise soziale Netzwerke sehr gut darstellen, in denen die Personen einzelne Knoten sind und die Beziehung untereinander als Kante dargestellt werden.

Anwendungen für NoSQL Datenbanken

NoSQL Lösungen eignen sich vor allem dann, wenn die Vorteile dieser Datenbanken ein Hauptbestandteil der Anwendung sind. Die wichtigsten Faktoren in solchen Projekten sind meistens, dass man kein einheitliches Datenschema hat, eine sehr große Datenmenge erwartet wird, die man über verschiedene Systeme verteilen will und Daten sehr schnell verarbeitet werden müssen. In solchen Fällen nimmt man auch eine kurzzeitige Inkonsistenz der Informationen in Kauf.

Ein klassisches Beispiel hierfür sind Webbewegungsdaten, also alle Informationen, die wir über einen User sammeln, der sich auf unserer Website befindet. Bei einer etablierten Seite können hier sehr schnell viele Daten in kurzer Zeit anfallen, vor allem dann, wenn wir sehr granular die Aktionen des User tracken wollen. Gleichzeitig haben wir eine große und undurchschaubare Datenstruktur mit Logins, dem Besuch verschiedener Seiten und viele Buttons, welche potenziell geklickt werden können. In diesem Fall bietet es sich an auf eine Graphdatenbank zurückzugreifen, in der wir dieses Bewegungsmuster über die Kanten sehr gut nachzeichnen können.

Das solltest Du mitnehmen

  • NoSQL Lösungen sind eine vergleichsweise neue Art von Datenbanken, die mit traditionellen Konzepten von relationalen Datenbanken brechen.
  • Sie werden vor allem angewandt, wenn man schnell, viele Daten verarbeiten muss und dafür auch kleinere Inkonsistenzen in Kauf nimmt.
  • Diese Datenbanken lassen sich in vier Kategorien aufteilen: Document Stores, Key-Value Stores, Wide-Column Stores und Graphdatenbanken.

Andere Beiträge zum Thema NoSQL

close
Das Logo zeigt einen weißen Hintergrund den Namen "Data Basecamp" mit blauer Schrift. Im rechten unteren Eck wird eine Bergsilhouette in Blau gezeigt.

Verpass keine neuen Beiträge!

Wir versenden keinen Spam! Lies die Details gerne in unserer Datenschutzrichtlinie nach.

Cookie Consent mit Real Cookie Banner