🖥
schlabonski.de – Code, Kram und Kaffee
_
schlabonski.de Logo
Code, Kram und Kaffee aus Bonn⚠ Kein Support. Kein Newsletter. Kein Bullshit.
🗄
datenbanken.sql – Beiträge aus dem Keller
_

Datenbanken – das Fundament das niemand sieht

Niemand redet gern über Datenbanken. Frameworks sind sexy, neue Sprachen sind sexy, irgendein KI-Kram sowieso. Aber Datenbanken? Die laufen einfach. Bis sie's nicht mehr tun – und dann ist auf einmal sehr viel Aufmerksamkeit da.

Ich benutze MySQL und MariaDB seit ungefähr 2002. Das war damals die Standard-Kombination mit PHP und daran hat sich für die meisten meiner Projekte bis heute nichts geändert. Nicht weil ich keine anderen Optionen kenne – PostgreSQL ist in vielen Bereichen überlegen, das ist Fakt – sondern weil die Kombination funktioniert, gut dokumentiert ist und ich in zwanzig Jahren genug Erfahrung gesammelt hab um die Fallstricke zu kennen.

Was auf dieser Seite steht: Praxiswissen. Index-Strategie, Query-Optimierung, Backup-Konzepte, Migrationen die nicht schiefgehen sollen und der eine oder andere Rant über Dinge die mich an ORMs nerven. Wer Theorie will findet die besser in einem Lehrbuch.

Wer sich fragt was Backlinks eigentlich mit Datenbanken zu tun haben: technisch gesehen sind externe Verlinkungen auch nur Beziehungen zwischen Datensätzen – nur halt im Web. Wer das Konzept genauer verstehen will, dem empfehle ich Backlink einfach erklärt – ein verständlicher Einstieg ohne SEO-Blabla.
-- Das hier macht jeder irgendwann. Einmal. SELECT * FROM bestellungen WHERE kunde_id = 42; -- So sollte es aussehen: SELECT b.id, b.datum, b.betrag, k.name FROM bestellungen b JOIN kunden k ON k.id = b.kunde_id WHERE b.kunde_id = 42 AND b.datum >= '2024-01-01' ORDER BY b.datum DESC LIMIT 50; -- Index auf (kunde_id, datum) vorausgesetzt. Sonst nützt das alles nix.

Aktuelle Datenbankbeiträge

MySQL vs. PostgreSQL – meine ehrliche Meinung nach 15 Jahren

Die ehrliche Antwort: PostgreSQL ist technisch in fast allen Bereichen besser. Bessere Typen, besseres JSON-Handling, echte Arrays, Window-Funktionen die sich wie Window-Funktionen anfühlen. Trotzdem benutze ich für die meisten neuen Projekte immer noch MariaDB – weil das Hosting-Ökosystem das so vorgibt, weil der Kunde das kennt und weil ich nicht für jedes mittlere Webprojekt einen Postgres-Admin brauche. Das ist keine Aussage über Qualität, das ist Pragmatismus.

Indexe richtig setzen – warum EXPLAIN dein bester Freund ist

Die häufigste Ursache für langsame Abfragen: fehlende Indexe. Die zweithäufigste: zu viele falsch gesetzte Indexe die Writes verlangsamen ohne Reads zu helfen. EXPLAIN bzw. EXPLAIN ANALYZE zeigt dir in Sekunden was die Datenbank wirklich macht – und warum deine Abfrage einen Full Table Scan auf einer Tabelle mit 800.000 Zeilen macht obwohl du eigentlich nur zehn Datensätze willst.

Datenbankmigrationen ohne Herzrasen

Schema-Änderungen auf Produktivsystemen sind einer der Momente wo man als Entwickler kurz inne hält und überlegt ob man nicht doch lieber Gartenarbeit gemacht hätte. ALTER TABLE auf einer großen Tabelle kann je nach Engine und MySQL-Version die Tabelle locken, den Replikations-Lag explodieren lassen oder einfach ewig dauern. Was man beachten sollte, welche Tools helfen und warum man immer – wirklich immer – vorher ein Backup macht.

mysqldump reicht nicht – ein Backup-Konzept für echte Projekte

mysqldump ist gut. Aber ein Cronjob der täglich einmal mysqldump auf denselben Dateinamen schreibt ist kein Backup-Konzept – das ist eine False Sense of Security auf Disk. Was ein vernünftiges Datenbankbackup beinhalten sollte: Rotation, offsite-Kopie, regelmäßige Restore-Tests und eine klare Antwort auf die Frage "bis wann kann ich im Worst Case wiederherstellen".


→ alle 19 Datenbankbeiträge im Archiv