Datenbanken dienen dazu Informationen so effizient wie möglich zu speichern aber auch gleichzeitig in eine gewünschte Struktur zu bringen, um damit zu arbeiten bzw. diese auszulesen und zu aktualisieren.
Welche Arten von Datenbanken gibt es?
Hier gibt es 2 Hauptunterscheidungen:
SQL
Die „Structured Query Language“ (kurz SQL) ist KEINE „Programmiersprache“ in der Hinsicht, da sie nicht Turing-Vollständig ist.
SQL dient mehr dazu in einer semantischen Schreibart Informationen verwaltbar zu machen.
Beispiel:
„Gib mir alle Benutzer aus welche älter als 25 sind“
ist im SQL so etwas ähnliches wie (abhängig von der SQL Struktur)
SELECT * FROM users WHERE age > 25
In SQL basierenden Datenbank-Systemen besteht die Struktur immer aus: Datenbanken, Tabellen und Spalten
Man kann es sich sehr gut vorstellen wenn man eine SQL Datenbank mit einer Excel Tabelle vergleicht.
1 Datenbank = 1 Excel-Datei
1 Tabelle = 1 Excel-Blatt in der Excel-Datei
1 Spalte = 1 Spalte in einem Excel-Blatt
Die am meisten verwendeten Befehle bei SQL Datenbanken sind:
- SELECT
- UPDATE
- DELETE
- INSERT
- CREATE DATABASE
- CREATE TABLE
Bekannte SQL Datenbank-Server Software:
- MySQL bzw. MariaDB
- PostgreSQL
- Oracle
- Microsoft SQL
Hauptmerkmal von SQL Datenbanken sind die Verbindungen (aka „Relationen“), die zwischen Spalten hergestellt werden können. Deswegen werden SQL Datenbanken immer als „relationale Datebanken“ bezeichnet.
NoSQL
Im Gegensatz zu SQL basierenden Datenbanken besteht bei NoSQL Datenbanken keine „fixe“ Struktur wie die Daten strukturiert bzw. aufgebaut werden müssen.
Je nach verwendeter NoSQL-Server Software können die Daten in folgenden Strukturen gespeichert werden:
- Column based (ähnlich zu SQL)
- Document based
- Graph based
- Key-Value based
Vorteil dieser „Freiheit“ ist es z.B. auch im Live-Betrieb die vorhandenen Datenstrukturen leicht erweitern zu können, da Felder pro Eintrag extra gespeichert werden und keinen Einfluss auf schon vorhandene Daten bzw. Strukturen haben.
Beispiel für ein Query in einer Document based Datenbank (hier MongoDB):
myCursor = db.inventory.find( {} )
Hier werden alle Einträge aus der Collection „inventory“ ausgegeben.
Bekannte NoSQL Datenbank-Server Software:
- MongoDB (Document based)
- Apache Casandra (Column based)
- Neo4j (Graph based)
- Redis (Key-Value based)
Source: https://www.xplenty.com/blog/the-sql-vs-nosql-difference/