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.

Was sind die 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.
Das Diagramm zeigt die Grundeigenschaften von ACID.
ACID Grundprinzipien | Quelle: Autor
  • 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.

Erfüllt NoSQL die ACID Eigenschaften?

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.

Welche verschiedenen NoSQL Kategorien gibt es?

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 | Quelle: Autor
  • 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.

Welche Beispiele für Not Only SQL Datenbanken gibt es?

Die bekanntesten Beispiele von NoSQL-Datenbanken sind Apache Cassandra, MongoDB, Redis oder Neo4j. Diese gehören auch den verschiedenen NoSQL Datenbankkategorien an:

  • MongoDB gehört den Document Stores an. Die einzelnen Datensätze werden in sogenannten Dokumenten abgespeichert, wobei man sich einen Datensatz, wie eine Zeile in einer relationalen Datenbank vorstellen kann. Alle Dokumente mit einem vergleichbaren Aufbau werden in den sogenannten Collections zusammengefasst, welche wiederum mit einer Datenbank im relationalen Umfeld vergleichbar sind.
  • Redis ist ein Key-Value Store, der vor allem mit Streaming Lösungen, wie Apache Kafka, genutzt wird. Darin werden Echtzeit-Daten zwischengespeichert und für Analysen oder Berechnungen zur Verfügung gestellt. Durch die sehr kurzen Latenzzeiten bietet es die optimale Lösung für Chats, Spiele oder Caching Anwendungen.
  • Apache Cassandra ist ein Open-Source Wide-Column Store. Diese Lösung ist dafür gemacht, große Datenmengen auf verteilten Systemen zu speichern und dadurch eine hohe Erreichbarkeit zu gewährleisten.
  • Neo4j ist eine Graphdatenbank, die bis zu einem gewissen Grad kostenlos genutzt werden. Mithilfe von Knoten und Kanten lassen sich beispielsweise Knowledge Graphs organisieren oder soziale Netzwerke abbilden.

Warum benötigen wir 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.

Wie findet man die richtige NoSQL Datenbank?

Bei der Auswahl einer NoSQL-Datenbank gibt es mehrere Aspekte zu beachten, um sicherzustellen, dass die von Ihnen gewählte Datenbank für Ihren speziellen Anwendungsfall geeignet ist. Hier sind einige Schlüsselfaktoren, die Sie berücksichtigen sollten:

  • Datenmodell: NoSQL-Datenbanken sind für die Verarbeitung verschiedener Datenmodelle wie Dokument, Schlüssel-Wert, Spaltenfamilie und Graph ausgelegt. Wählen Sie eine Datenbank, die zu Ihrem Datenmodell passt, und stellen Sie sicher, dass sie die Komplexität Ihrer Daten bewältigen kann.
  • Skalierbarkeit: NoSQL-Datenbanken sind für ihre horizontale Skalierbarkeit bekannt, die es ihnen ermöglicht, große Datenmengen und hohe Verkehrslasten zu bewältigen. Vergewissern Sie sich, dass die Datenbank leicht skaliert werden kann, um Ihren Anforderungen gerecht zu werden.
  • Leistung: NoSQL-Datenbanken können eine hohe Leistung erbringen, aber das Leistungsniveau hängt von der jeweiligen Datenbank und dem Anwendungsfall ab. Testen Sie die Leistung der Datenbank für Ihren speziellen Anwendungsfall, bevor Sie eine Entscheidung treffen.
  • Konsistenz: Verschiedene NoSQL-Datenbanken bieten einen unterschiedlichen Grad an Konsistenz, was sich auf die Genauigkeit Ihrer Daten auswirken kann. Berücksichtigen Sie bei der Evaluierung von Datenbanken Ihre Anforderungen an die Datenkonsistenz.
  • Dauerhaftigkeit: NoSQL-Datenbanken bieten unterschiedliche Haltbarkeitsgrade, die bestimmen, wie gut die Daten vor Datenverlust geschützt sind. Wählen Sie eine Datenbank, die das für Ihren Anwendungsfall erforderliche Maß an Haltbarkeit bietet.
  • Einfachheit der Nutzung: Achten Sie auf die Benutzerfreundlichkeit der NoSQL-Datenbank und ihrer APIs. Achten Sie auf eine Datenbank mit klarer Dokumentation und einer aktiven Community, die Unterstützung bietet.
  • Kosten: NoSQL-Datenbanken werden mit unterschiedlichen Lizenz- und Preismodellen angeboten, und es ist wichtig, die Gesamtbetriebskosten im Laufe der Zeit zu berücksichtigen, einschließlich Lizenzgebühren, Hosting-Kosten und Wartungskosten.

Wenn Sie diese Faktoren berücksichtigen und die verschiedenen verfügbaren NoSQL-Datenbanken bewerten, können Sie eine Datenbank auswählen, die Ihren Anforderungen am besten entspricht.

Das solltest Du mitnehmen

  • NoSQL-Datenbanken sind eine beliebte Alternative zu herkömmlichen relationalen Datenbanken.
  • Sie sind für die Verarbeitung großer Mengen unstrukturierter oder halbstrukturierter Daten konzipiert.
  • NoSQL-Datenbanken bieten hohe Skalierbarkeit, Verfügbarkeit und Fehlertoleranz.
  • Die Wahl der richtigen NoSQL-Datenbank hängt von dem spezifischen Anwendungsfall und Deinen Anforderungen ab.
  • Zu den wichtigsten Faktoren, die zu berücksichtigen sind, gehören Datenmodellierung, Skalierbarkeit, Konsistenz, Verfügbarkeit und Sicherheit.
  • Zu den beliebtesten NoSQL-Datenbanken gehören MongoDB, Cassandra, Couchbase, Redis und Amazon DynamoDB.
  • Insgesamt bieten NoSQL-Datenbanken eine flexible und leistungsstarke Lösung für die Verwaltung großer und komplexer Datensätze, aber es ist wichtig, die richtige Datenbank für Ihre Anforderungen sorgfältig zu bewerten und auszuwählen.

Andere Beiträge zum Thema NoSQL

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