SQL vs. NoSQL

NoSQL

SQL im Vergleich zu NoSQL Datenbanken

In diesem Artikel werden wir einen kurzen Überblick über die wesentlichsten Unterschiede zwischen SQL- und NoSQL-Datenbanken aufzeigen. Gerade für einen Cloud-Betrieb gewinnt NoSQL zunehmend an Bedeutung.

Lesedauer 6 Minuten

NoSQL ist in Fachkreisen ein heiß diskutiertes Thema wenn es um Datenbanken und deren Einsatzgebiete geht. Um zu verstehen was dahinter steckt muss zuerst der Begriff SQL und anschließend die Unterschiede zu NoSQL-Datenbanksysteme genauer beleuchtet werden. Im nachfolgenden Artikel werden die Begriffe erklärt und der technische Hintergrund beleuchtet. Zudem räumen wir mit üblichen Fehlern bei der Erklärung des Begriffs SQL auf.

Die Abkürzung SQL steht für Structured Query Language und beschreibt in erster Linie eine Computer-Sprache zum Abfragen, Bearbeiten und Löschen von Datensätzen in relationalen Datenbanken. Darüber hinaus wird SQL auch zur Definition von Datenstrukturen verwendet in denen die Daten gespeichert werden. Diese Datenstruktur wird allgemein als Tabelle mit Zeilen und Spalten beschrieben. Eine Datenbank hat üblicherweise mehrere Tabellen und diese können auch miteinander in Beziehung stehen. Genau an dieser Stelle wird häufig angenommen, dass relationale Datenbanken deshalb als „relational“ bezeichnet werden, weil Tabellen mit anderen Tabellen in Beziehung (engl. „relationship“) stehen. Diese Annahme ist falsch und führt häufig zu Problemen.

Eine Relation ist eine mathematische Beschreibung einer Tabelle die aus sogenannten Tupeln besteht, das ist wiederum eine Liste von Objekten und entspricht im gängigen Sprachgebrauch ganz einfach einer Zeile. Man merkt sich das wohl am besten indem man sich begreiflich macht, dass eine relationale Datenbank auch dann noch immer relational ist wenn sie nur eine Tabelle hat und daher nicht mit anderen in Beziehung stehen kann.

NoSQL steht für not only SQL und bedeutet nicht nur SQL. Darunter werden heutzutage alle Datenbankmanagementsysteme verstanden die einem nicht-relationalen Ansatz folgen. NoSQL-Datenbanken haben im Gegensatz zu SQL-Datenbanken keine Definition im Sinne von Tabellen in denen die Daten abgelegt werden. Es wird versucht zusammengehörige Daten ohne Rücksichtnahme auf Redundanzen am selben Ort zu hinterlegen. Das vermeidet die Notwendigkeit die Informationen aus mehreren Tabellen abfragen zu müssen, was  in relationalen Datenbanksystemen üblicherweise der Fall ist. In die NoSQL-Kategorie fallen mehrere unterschiedliche Ansätze, die bekanntesten sind dokumentorientierte Datenbanken (z.B. MongoDB), Graphendatenbanken (z.B. Amazon Neptune) und Key-Value Datenbanken (z.B. Amazon DynamoDB).

Unterschied SQL- und NoSQL-Datenbanken

Historie

SQL-Datenbanken sind schon in den 1970er Jahren entwickelt worden. Damals lag ein starker Fokus darauf Redundanzen zu vermeiden, hauptsächlich um den zu dieser Zeit sehr teuren Speicherplatz optimal zu nutzen. NoSQL-Datenbanken wurden hingegen erst in den späten 2000ern bekannt um eine schnelle Entwicklung zu ermöglichen.

Datenbankschema

Das Schema in relationalen Systemen wird nach der Definition relativ fest vorgegeben. Änderungen der Struktur betreffen auch immer alle bestehenden Datensätze und erfordern häufig eine Blockierung des Zugriffs auf die Tabelle und damit eine vorübergehende Downtime die vor allem bei großen Datenmengen zu Problemen führen kann. In der moderneren Variante der NoSQL-Datenbanken ist man abgesehen von wenigen Einschränkungen an keine vorherigen Vorgaben gebunden.

Joins

In NoSQL-Datenbanken werden zusammenhängende Informationen an einem Ort gespeichert, bei SQL-Systemen werden sie hingegen in unterschiedlichen Tabellen gespeichert die über sogenannte Joins miteinander verknüpft werden müssen um die entsprechenden Daten bereit zu stellen.

Transaktionalität

Beim sogenannten ACID-Prinzip spricht man von der Einhaltung gewisser Regeln zur Durchführung einer Datenbanktransaktion bei der eine Abfolge von Operationen zu einer Transaktion zusammengefasst werden.

  • atomicity – eine Transaktion wird vollständig oder gar nicht ausgeführt
  • consistency – nach einer Transaktion befinden sich die Daten in einem konsistenten Zustand
  • isolation – Transaktionen isolieren sich von anderen parallel laufende Transaktionen damit sie sich nicht gegenseitig beeinflussen
  • durability – durchgeführte Änderungen sind dauerhaft gespeichert sobald eine Transaktion beendet ist

Relationale Datenbanksysteme folgend diesem ACID-Prinzip, nicht relationale Datenbanken hingegen in den meisten Fällen nicht.

Skalierung

SQL-Systeme werden vertikal skaliert, das heißt durch hinzufügen von mehr Ressourcen wie Arbeitsspeicher oder CPUs kann die Leistung verbessert werden. NoSQL-Datenbanken hingegen setzen vorrangig auf eine horizontale Skalierung, verteilen sich also über mehrere Server und ermöglichen dadurch signifikant mehr Transaktionsvolumen.

Datenspeicherung

Datensätze werden bei relationalen Systemen in Tabellen mit vordefinierten Spalten abgelegt. Bei NoSQL Datenbanken hängt das stark von der verwendeten Kategorie ab:

  • dokumentorientierte Datenbanken: JSON
  • Graphendatenbanken: Knoten und Kanten
  • Key-Value Datenbanken: sogenannte Key-Value pairs

Haupteinsatzgebiet

SQL-Datenbanken sind nach wie vor die weltweit am meisten verbreiteten Datenbanksysteme, NoSQL ist seit einigen Jahren aber stark auf dem Vormarsch und holt stetig auf. SQL, sowie dokumentorientierte Datenbanken werden für generelle Zwecke eingesetzt, Key-Value Datenbanken für große Datenmengen welche über einen einfachen Schlüssel aufgefunden werden können und Graphendatenbanken für die Analyse und der Nachverfolgung von Objekten die miteinander in einer Beziehung stehen.

NoSQL in der Cloud

Nicht relationale Datenbanken haben vor allem Ende der 2000er Jahre durch das Aufkommen weltweit skalierbarer Online-Dienste wie den sozialen Netzwerken einen deutlichen Aufschwung erlebt. Informationen wurden verstärkt dezentral gespeichert und auf Cloudanbieter weltweit verteilt um von jederzeit schnell darauf zugreifen zu können. Software-Architekturen von Datenbankmanagementsystemen (DBMS) haben sich hin zu Microservices entwickelt um skalierbarer, kosteneffizienter und simpler im Betrieb zu werden.

Alle großen Cloud-Anbieter haben proprietäre Datenbanksysteme entwickelt um ihren Kunden diese SaaS-Dienste unkompliziert und kostengünstig anzubieten:

  • AWS – Amazon DynamoDB, Amazon DocumentDB, Amazon Neptune
  • Microsoft Azure – Azure Table Storage, Azure Cosmos DB
  • Google Cloud – Google Cloud Datastore, Google Cloud Firestore

Fazit

NoSQL Datenbanken unterscheiden sich in vielen wesentlichen Faktoren von relationalen Datenbanken. Sie sind für moderne Einsatzzwecke geeignet und erobern in den letzten Jahren stetig neue Marktsegmente. Durch ihre wartungs- und entwicklungsfreundlichen Eigenschaften können damit rasch und unkompliziert Projekte umgesetzt werden und Entwickler können sich auf ihre Kerntätigkeit konzentrieren ohne sich vermehrt um die Datenhaltung kümmern zu müssen.

Über den Autor

Als zertifizierter SQL Experte analysiert, konzipiert und berät Stefan KMUs, sowie Großkunden im D-A-CH-LI Raum bei technischen Fragen rund um ihre Daten. Vor allem die hocheffiziente Verarbeitung und betriebliche Absicherung der Daten sind seine Spezialität und ermöglicht häufig eine enorme Leistungssteigerung in den Unternehmen. Zusätzlich entwickelt er auf Basis moderner Datenbank- und KI-Technologien nachhaltige Cloud-Lösungen.