November 2022
Chart.js ist eine simple, aber auch flexible Javascript-Bibliothek, die dir ermöglicht, verschiedene Arten an Diagrammen...
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.
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:
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. |
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. |
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. |
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
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.
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.
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.
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.
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.
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.
SQL-Datenbanken verwenden das ACID-Prinzip, was einen hohen Grad an Datenintegrität bietet.
SQL-Datenbanken sind für Anfragen an mehrere Tabellen optimiert, wodurch komplexe Anfragen an strukturierte Daten einfacher sind.
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.
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.