Datenbankmanagementsysteme

https://oer-informatik.de/dbms

tl/dr; (ca. 5 min Lesezeit): Datenbankmanagementsysteme organisieren den Zugriff auf Datenbanken. Welche marktläufigen Systeme gibt es, welche Aufgaben übernehmen sie und mit welcher Software kann ich darauf zugreifen?

Begriffsklärung: Datenbank, Datenbanksystem, Datenbankmanagementsystem

Ein Datenbanksystem besteht aus zwei Komponenten: die eigentlichen Daten (Datenbank), und eine Software, die den Zugriff darauf verwaltet (Datenbankmanagementsystem). Eine in Betrieb befindliche “Datenbank” zur Rechnungserstellung ist also ein Datenbanksystem - denn es besteht aus der Datenbank (die eigentlichen gespeicherten Werte zu Rechnungen) und dem Datenbankmanagementsystem (z.B. MySQL), dass den Zugriff verwaltet. Es gibt Datenbankmanagementsysteme für relationale Datenbanken (die auf Tabellen und Fremdschlüsselbeziehungen aufbauen) ebenso wie für andere Datenbanken (Key-Value-Stores wie Browser-Caches, Documentstores, Graph-Datenbanken…). Im folgenden wollen wir uns zunächst auf die relationalen Datenbanken beschränken.

Aufgaben von realtionalen Datenbankmanagmentsystemen (rDBMS)

Die Aufgaben eines Datenbankmanagementsystems gehen über die reine Verwaltung von Daten hinaus. Der Datenbanktheoretiker Edgar F. Codd hat eine Reihe weiterer Verantwortlichkeiten beschrieben 1. Heute werden häufig die folgenden Aufgaben Datenbankmanangementsystemen zugewiesen:

  • Datenintegration: Alle gespeicherten Daten werden einheitlich durch das DBMS verwaltet. der Daten
  • Datenoperation: Das DBMS bietet Operationen zum erzeugen, suchen und ändern von Daten an (enspricht den CRUD-Operationen: create, read, update, delete)
  • Datenkatalog: Im Katalog ist die Beschreibung der Datenbankstruktur auslesbar und veränderbar.
  • Benutzersichten: Das DBMS ermöglicht unterschiedlichen Anwendungen unterschiedliche Darstellungsformen der Daten.
  • Konsistenzüberwachung: Das DBMS stellt Funktionen bereit, die die Datenintegrität sichern.
  • Zugriffskontrolle: Es muss möglich sein, unberechtigten Zugriff auf Daten zu unterbinden.
  • Transaktionen: Zusammenfassung von Änderungen als unteilbare Einheiten, um inkonsistente Zwischenstadien einer DB zu verhindern.
  • Synchronisation: Konkuriernde Transaktionen ermöglichen, um Inkonsistenzen aus konkurrierenden Lese- und Schreibvorgängen zu verhindern.
  • Datensischerung: Die Wiederherstellung (versehendlich) gelöschter Daten muss ermöglicht werden.

Marktläufige realtionale Datenbankmanagmentsysteme

Es gibt eine große Zahl relationaler Datenbankmanagementsysteme. Genaue Zahlen über deren Verbreitung sind schwer zu ermitteln, eine Liste findet sich zum Beispiel unter db-engines.com.

Beschränkt man die Auswahl auf relationale SQL-DBMS, so gehören zu den wichtigsten derzeit:

  • Oracle (Marktführer bei rDBMS)

  • MySQL (gehört mittlerweile zu Oracle) - gängig in XAMP-Umgebungen, mittlerweile häufig durch MariaDB ersetzt

  • MariaDB (Nachfolgeprojekt des MySQL-Initiators, nach Übernahme von MySQL von Oracle)

  • Microsoft SQL Server (Dev und Express-Edition kostenlos)

  • PostgreSQL: (OpenSourceDB unter allen gängigen Systemen verbreitet)

  • DB2 (IBM)

  • MS Access (im Office-Paket enthalten, SQL-fähig, i.d.R. nur SingleUser-fähig, auch als Frontend für andere rDBMS einsetzbar)

  • SQLite (wird i.d.R. als in Applikationen eingebettetes RDBMS verwendet - z.B. auch in Java)

Installation eines DBMS

Datenbankmanangementsysteme können auf verschiedene Art genutzt werden:

  • lokal am Client installiert (v.a. zu Testzwecken / zu Entwicklungszwecken).

  • in einem Container installiert (z.B. Docker, Podman)

  • auf einem Server installiert.

Lokale Installation

Zu Testzwecken ist eine lokale Installation bzw. eine Installation in Containern sinnvoll. Ich versuche in den SQL-Artikeln mittelfristig zu den verbreitetsten rDBMS Syntax und Tutorials bereitzustellen. In diesem Zusammenhang bin ich für jeden Tip/Hinweis dankbar!

Downloadlinks und Anleitungen für lokal installierbare DBMS finden sich unter den folgenden Links:

MSSQL MySQL / MariaDB postgreSQL OracleDB SQLite
Downloadlink zur lokalen Installation Dev-Edition 550MB MariaDB ca. 200 MB OracleDB XE SQLite (1MB)

Installation in Containern

Ein bisschen mehr Flexibilität zum Preis von höherer Komplexität erreicht man über die Installation in Containern. Ich habe im Folgenden eine Reihe von Tutorials erarbeitet, mit deren Hilfe man relativ schnell lauffähige DB-Container erstellt hat.

MSSQL MySQL / MariaDB postgreSQL OracleDB SQLite
Tutorials zur Erstellung von Containern SQL-Server-Container MySQL/ MariaDB Container postgres Container OracleDB Container (leider nicht mehr aktuell) SQLite Container (nicht sinnvoll)
Größe der Container 1,8 GB MySQL: 724 MB
Maria: 384 MB

SQLite ist eine extrem ressourcensparende Datenbank ohne TCP-Client, daher ergibt die Installation in Containern hier am wenigsten Sinn.

Frontends

Viele DBMS bieten neben einem Kommandozeilen-Client, der häufig bereits Bestandteil der Serverinstallation ist noch Schnittstellen, über die externe Clients mit GUI genutzt werden können. Häufig gibt es ein Standard-Frontend des DBMS-Herstellers. Einige Frontends können mit unterschiedlichen DBMS interagieren, andere sind spezifisch auf ein System zugeschnitten. Anbei eine Übersicht:

MSSQL MySQL / MariaDB postgreSQL OracleDB SQLite
Standard-Frontend des DBMS SQL-Server Management Studio (550MB) MySQL Workbench (40MB) pgadmin (80MB) SQL Developer (440 MB) SQLiteBrowser OpenSource
weitere gebräuchliche Frontends phpMyAdmin Client-Liste APEX Online SQLite Administrator
HeidiSQL (Win) + + + - +
SquirrelSQL nutzt Java/JDBC (Win/Linux/Mac) + + + + +
Valentina Studio (Win/Linux/Mac) + + + - +
Dbeaver (Java, daher Win/Linux/Mac) + + + + +

Quellen und offene Ressourcen (OER)

Die Ursprungstexte (als Markdown), Grafiken und zugrunde liegende plantUML-Diagrammquelltexte finden sich in weiterbearbeitbarer Form im gitlab-Repository unter https://gitlab.com/oer-informatik/db-sql/dbms und sind zur Nutzung als Open Education Resource (OER) freigegeben gemäß der Creative Commons Lizenz CC BY 4.0.


  1. Leider liegt mit keine Primärquelle hierfür vor, daher kann ich diese Liste nicht zitieren

Kommentare gerne per Mastodon, Verbesserungsvorschläge per gitlab issue (siehe oben). Beitrag teilen: