SQL vs NoSQL

Profil

geschrieben von Gabriel Grimm

veröffentlicht am 17. Februar 2022

Header-Image

Was sind SQL-Datenbanken 

SQL-Datenbanken, auch relationale Datenbanken genannt, bestehen aus festen Tabellen. Diese Tabellen sind durch Beziehungen miteinander verbunden. Wenn man nun bestimmte Informationen braucht, werden alle benötigten Daten aus den unterschiedlichen Tabellen genommen und als eine Einheit zurückgeschickt.

Was sind NoSQL-Datenbanken

​Durch den Zufluss von unstrukturierten oder nur zum Teil strukturierten Daten entstanden NoSQL-Datenbanken. Diese Datenbanken folgen keiner festen Struktur wie SQL-Datenbanken, wodurch sie viel flexibler sind. Die vier Basic Datenbankmodelle sind folgende:

Key-Value Datenbanken

Clescop - Eigenes Werk (Wikipedia)

Daten werden als Schlüssel und Wert gespeichert. Die Schlüssel werden einem gewissen Block an Daten zugewiesen, wodurch Daten in jedem Format gespeichert werden können. 

Dokument-Datenbanken

Daten werden in Formaten wie JSON und XML gespeichert und einem "unique key" zugewiesen. Diese Dokumente sind nicht auf vorher schon festgelegte Felder oder Elemente beschränkt.

Spaltenorientierte Datenbanken

Bild von Dr. Michael K Hernandez

Daten werden in Spalten gespeichert, was einer relationalen Datenbank ähnelt sind jedoch viel flexibler und skalierbarer, da es sich immer noch um eine NoSQL-Datenbank handelt.

Graph-Datenbanken

Bild von Wikipedia Commons

Daten werden als Nodes und Edges gespeichert. Nodes sind Entitäten wie z. B. eine Person oder Objekt. Edges sind die Verbindungen oder Beziehungen zwischen Nodes.

Netzwerk Vektor erstellt von freepik - de.freepik.com



Vorteile von NoSQL-Datenbanken

Flexible Datenmodelle

Das Schema einer NoSQL-Datenbank kann einfach geändert werden, falls sich die Anforderungen deines Projektes ändern. Es können neue Features schnell eingebaut werden.

Schnelle Anfragen

In einer normalen SQL-Datenbank werden Daten getrennt voneinander gespeichert. Wenn man nun ein Objekt aus der Datenbank haben möchte, müssen Daten aus mehreren Tabellen geladen werden. Je größer deine Datenbank wird, desto mehr "joins" gibt es, wodurch sich die Ladezeit der Anfragen verlängert.

In NoSQL-Datenbanken sind "joins" nicht nötig. "Daten die zusammengehören sollten auch zusammen gespeichert werden". Das ist die Faustregel von NoSQL-Datenbanken. Dadurch sind Anfragen generell schneller als bei SQL-Datenbanken.

Horizontale Skalierung

Mit dem Skalieren einer Datenbank ist die Fähigkeit gemeint, einer Datenbank zu ermöglichen, mehr und größere Anfragen annehmen zu können, ohne dass die Leistung abnimmt. Wenn man eine Datenbank skaliert kann diese auch mehr Daten speichern.

Eine SQL-Datenbank zu skalieren ist sehr teuer, da man auf einen größeren Server wechseln muss.

Bei horizontaler Skalierung werden mehrere kleinere Server, welche günstiger sind hinzugefügt.

SQL-Datenbanken können nicht horizontal skaliert werden. Es müssten Tabellen horizontal geteilt werden, dass heißt die Einträge einer Tabelle werden in z.B. zwei Tabellen aufgeteilt. Da aber diese Tabelle auf andere angewiesen ist müssen auch diese geteilt werden. Je größer die Datenbank ist, desto aufwändiger ist dieser Prozess.

Da bei NoSQL-Datenbanken zusammenhängende Daten auch zusammen gespeichert werden, ist die horizontale Skalierung hier kein Problem.

Einfacher für Entwickler

In manchen NoSQL-Datenbanken wie MongoDB werden Daten im gleichen Format gespeichert wie diese auch in einer Anwendung verwendet wird. Hier z.B. wären das JSON-Dokumente.


Vorteile von SQL-Datenbanken

Datenstruktur

SQL-Datenbanken sind auf einem Relationenmodell aufgebaut. Daten werden in festen Tabellen mit festen Verbindungen zu anderen Tabellen gespeichert. Dadurch ist SQL besser geeignet für strukturierte Datenhaltung.

Schemas

In SQL-Datenbanken werden feste Schemas verwendet, die festlegen wie Tabellen konfiguriert und Daten gespeichert werden. Hierdurch wird der Speicher optimiert und die Integrität der Daten wird sichergestellt.

Datenintegrität

SQL-Datenbanken verwenden das ACID-Prinzip, was einen hohen Grad an Datenintegrität bietet.

Queries

SQL-Datenbanken sind für Anfragen an mehrere Tabellen optimiert, wodurch komplexe Anfragen an strukturierte Daten einfacher sind.

Reife

Die Technologie, welche für SQL-Datenbanken verwendet wird gibt es schon viel länger und wird von einer großen Gemeinschaft von Entwicklern unterstützt.

Welche Datenbank ist besser für mich geeignet?

Beide Datenbanken haben ihre Vor- und Nachteile. Welche Datenbank besser geeignet ist kommt ganz auf deine Situation an. SQL-Datenbanken gibt es schon länger und haben eine feste Struktur. Solche Datenbanken sind besser für z. B. Buchhaltungssystemen oder Altsysteme geeignet. NoSQL-Datenbanken haben keine feste Struktur und somit mehr Flexibilität. Diese sind besser für Applikationen geeignet die mit Big Data oder Analytik arbeiten.

Author

Gabriel Grimm

Ein Projekt im Sinn?

Sprecht uns an!