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:
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.deDas 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?
- Kunde A öffnet die Website und sieht: 1 Buch verfügbar
- Kunde B öffnet die Website und sieht: 1 Buch verfügbar
- Kunde A bestellt → Datei wird geändert: 0 Bücher verfügbar
- 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.
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:
- Die komplette Datei
buecher.txtöffnen - Jede Zeile durchgehen und prüfen
- Passende Einträge sammeln
- 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
Problem 3: Datenintegrität
Ein Kunde kauft ein Buch. Dein System muss mehrere Dinge tun:
- Bestellnummer generieren
- Bestellung in
bestellungen.txteintragen - Lagerbestand in
buecher.txtverringern - Rechnung in
rechnungen.txterstellen
Was passiert, wenn der Server nach Schritt 2 abstürzt? Die Bestellung existiert, aber der Lagerbestand wurde nicht angepasst. Deine Daten sind inkonsistent.
Problem 4: Beziehungen zwischen Daten
Du willst wissen: "Welche Bücher hat Kunde Anna Müller bestellt?"
Mit Textdateien musst du:
- In
kunden.txtdie ID von Anna finden (z.B. ID: 1) - In
bestellungen.txtalle Bestellungen von Kunde 1 finden - Für jede Bestellung die Buch-ISBNs sammeln
- In
buecher.txtDetails 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:
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.
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
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.