Coding Garden
Anmelden

Warum Datenbanken?

Im ersten Artikel hast du gelernt, was Datenbanken sind. Jetzt schauen wir uns an, welche konkreten Probleme sie lösen und warum moderne Anwendungen ohne sie nicht funktionieren würden.

Das Problem mit einfachen Dateien

Stell dir vor, du entwickelst eine kleine Webseite für einen Buchladen. Du musst Bücher, Kunden und Bestellungen speichern. Die einfachste Lösung wäre, alles in Textdateien zu schreiben:

Text
buecher.txt:
ISBN,Titel,Autor,Preis
978-3-16-148410-0,Der Prozess,Franz Kafka,12.99
978-0-262-03384-8,Introduction to Algorithms,Thomas Cormen,89.99

kunden.txt:
ID,Name,Email
1,Anna Müller,anna@beispiel.de
2,Tom Schmidt,tom@beispiel.de

Das funktioniert am Anfang. Aber sobald dein Buchladen wächst, treten Probleme auf:

Problem 1: Gleichzeitiger Zugriff

Was passiert, wenn zwei Kunden gleichzeitig das letzte Exemplar eines Buches kaufen wollen?

  1. Kunde A öffnet die Website und sieht: 1 Buch verfügbar
  2. Kunde B öffnet die Website und sieht: 1 Buch verfügbar
  3. Kunde A bestellt → Datei wird geändert: 0 Bücher verfügbar
  4. Kunde B bestellt → Datei wird geändert: -1 Bücher verfügbar

Du hast jetzt ein Buch verkauft, das nicht existiert. Bei Textdateien gibt es keine Kontrolle über solche gleichzeitigen Zugriffe.

Important
Datenbanken lösen dieses Problem mit Transaktionen und Locks. Sie stellen sicher, dass gleichzeitige Vorgänge sich nicht gegenseitig überschreiben.

Problem 2: Geschwindigkeit bei großen Datenmengen

Dein Buchladen wächst. Du hast jetzt 100.000 Bücher. Ein Kunde sucht nach "Harry Potter". Dein Programm muss:

  1. Die komplette Datei buecher.txt öffnen
  2. Jede Zeile durchgehen und prüfen
  3. Passende Einträge sammeln
  4. Ergebnis zurückgeben

Das dauert bei 100.000 Einträgen mehrere Sekunden. Bei 1 Million Büchern wird es unerträglich langsam.

Eine Datenbank nutzt Indizes (wie das Inhaltsverzeichnis eines Buches). Sie findet "Harry Potter" in Millisekunden, egal ob 100 oder 1 Million Bücher existieren.

Vergleich: Datei vs. Datenbank

Suchgeschwindigkeit Vergleich
Anzahl EinträgeTextdateiDatenbank (mit Index)
1.000~10 ms<1 ms
100.000~1000 ms (1 Sekunde)<1 ms
1.000.000~10.000 ms (10 Sekunden)<1 ms

Problem 3: Datenintegrität

Ein Kunde kauft ein Buch. Dein System muss mehrere Dinge tun:

  1. Bestellnummer generieren
  2. Bestellung in bestellungen.txt eintragen
  3. Lagerbestand in buecher.txt verringern
  4. Rechnung in rechnungen.txt erstellen

Was passiert, wenn der Server nach Schritt 2 abstürzt? Die Bestellung existiert, aber der Lagerbestand wurde nicht angepasst. Deine Daten sind inkonsistent.

Important
Datenbanken garantieren Atomarität: Entweder werden alle Schritte ausgeführt, oder keiner. Es gibt keinen Zwischenzustand.

Problem 4: Beziehungen zwischen Daten

Du willst wissen: "Welche Bücher hat Kunde Anna Müller bestellt?"

Mit Textdateien musst du:

  1. In kunden.txt die ID von Anna finden (z.B. ID: 1)
  2. In bestellungen.txt alle Bestellungen von Kunde 1 finden
  3. Für jede Bestellung die Buch-ISBNs sammeln
  4. In buecher.txt Details zu diesen ISBNs nachschlagen

Du schreibst komplexen Code, der mehrere Dateien öffnet, durchsucht und verknüpft. Bei jeder neuen Frage musst du diesen Code anpassen.

In einer Datenbank schreibst du eine einfache Abfrage:

SQL
SELECT Buecher.Titel, Buecher.Autor
FROM Bestellungen
JOIN Buecher ON Bestellungen.ISBN = Buecher.ISBN
JOIN Kunden ON Bestellungen.KundenID = Kunden.ID
WHERE Kunden.Name = 'Anna Müller';

Die Datenbank kümmert sich automatisch um das Verknüpfen der Tabellen und liefert das Ergebnis in Millisekunden.

Problem 5: Datensicherheit

Mit Textdateien hat jeder, der die Datei lesen kann, Zugriff auf alle Daten. Du kannst nicht steuern:

  • Wer darf Kunden anlegen?
  • Wer darf Preise ändern?
  • Wer darf nur lesen, aber nicht schreiben?

Datenbanken haben ein ausgeklügeltes Berechtigungssystem. Du kannst für jeden Benutzer genau festlegen, welche Aktionen erlaubt sind.

Tip
Ein Praktikant bekommt nur Lesezugriff auf Kundendaten. Der Geschäftsführer kann alles ändern. Die Buchhaltung darf Rechnungen erstellen, aber keine Kunden löschen.

Problem 6: Backup und Wiederherstellung

Deine Festplatte stirbt. Oder jemand löscht versehentlich wichtige Dateien. Ohne Backup sind deine Daten weg.

Bei Textdateien musst du manuell Kopien erstellen. Du musst sicherstellen, dass diese Kopien konsistent sind (alle Dateien zum gleichen Zeitpunkt).

Datenbanken bieten integrierte Backup-Mechanismen:

  • Automatische regelmäßige Backups
  • Point-in-Time Recovery (Zurückspulen zu einem bestimmten Zeitpunkt)
  • Replikation auf mehrere Server

Wann brauchst du eine Datenbank?

Nicht jedes Projekt braucht eine Datenbank. Hier eine Entscheidungshilfe:

Eine einfache Datei reicht, wenn:

  • Du weniger als 1000 Datensätze hast
  • Nur eine Person gleichzeitig zugreift
  • Die Daten selten ändern
  • Keine Verknüpfungen zwischen Daten existieren

Eine Datenbank brauchst du, wenn:

  • Mehrere Nutzer gleichzeitig zugreifen
  • Du mehr als 10.000 Datensätze hast
  • Schnelle Suche wichtig ist
  • Daten miteinander verknüpft sind
  • Datensicherheit kritisch ist
  • Du Änderungen nachverfolgen musst
Tip
Im Zweifelsfall: Nutze eine Datenbank. Moderne Systeme wie SQLite sind so einfach einzurichten wie das Anlegen einer Datei, bieten aber alle Vorteile einer echten Datenbank.

Zusammenfassung

Datenbanken lösen fundamentale Probleme, die bei einfachen Dateien auftreten:

  • Gleichzeitiger Zugriff: Mehrere Nutzer können sicher parallel arbeiten
  • Geschwindigkeit: Selbst bei Millionen Einträgen bleiben Abfragen schnell
  • Datenintegrität: Transaktionen stellen sicher, dass Daten konsistent bleiben
  • Beziehungen: Verknüpfungen zwischen Daten sind einfach zu handhaben
  • Sicherheit: Feingliedrige Zugriffskontrollen schützen sensible Daten
  • Backup: Integrierte Mechanismen verhindern Datenverlust

Im nächsten Artikel schauen wir uns die zwei großen Datenbank-Kategorien an: SQL und NoSQL. Du lernst, wann du welche Art von Datenbank einsetzen solltest.