Datenbankänderungen professionell verwalten: Migrations, Seeders & One-Time Operations
Viele Projekte starten mit schnellen SQL-Statements direkt in der Datenbank. Spätestens im Team oder beim ersten Deployment wird das jedoch schnell zum Problem.
Deshalb sollte man zwischen drei verschiedenen Arten von Datenbankoperationen unterscheiden:
Migrations
Migrations beschreiben die Struktur deiner Datenbank.
Typische Anwendungsfälle:
✔ Neue Tabellen erstellen
✔ Spalten hinzufügen
✔ Indizes anlegen
✔ Constraints ändern
Migrations sollten versionierbar, reproduzierbar und für jedes Deployment identisch ausführbar sein.
Beispiel:
- Users-Tabelle erstellen
- Neue Spalte last_login hinzufügen
- Index auf email anlegen
Seeder
Seeder dienen dazu, Daten bereitzustellen.
Typische Anwendungsfälle:
✔ Standard-Rollen anlegen
✔ Admin-Benutzer erzeugen
✔ Konfigurationsdaten einspielen
✔ Testdaten generieren
Seeders verändern nicht die Datenbankstruktur, sondern ausschließlich Inhalte.
Beispiele:
- Rollen: Admin, Editor, User
- Länderlisten
- Standard-Konfigurationen
- Bereitstellung Demo-Datensätze (meist für lokale Umgebungen)
One-Time Operations
Ein Bereich, der oft vergessen wird.
Nicht jede Datenänderung gehört in eine Migration oder einen Seeder.
Typische Beispiele:
✔ Bestehende Daten transformieren
✔ Millionen Datensätze migrieren
✔ Legacy-Daten bereinigen
✔ Neue Berechnungen auf vorhandene Datensätze anwenden
Beispiel:
Vorher:
Nachher:
Die Strukturänderung erfolgt über eine Migration.
Das Aufteilen der bestehenden Daten erfolgt über eine One-Time Operation.
Dadurch bleiben Migrations sauber und Seeders ausschließlich für Initialdaten verantwortlich.
💡 Meine Faustregel:
- Migrations = Struktur
- Seeder = Daten bereitstellen
- One-Time Operations = Daten transformieren
Diese Trennung sorgt für deutlich wartbarere Deployments und vermeidet viele Probleme bei Releases.
Für AsteriosPHP habe ich genau dafür eine saubere Operations-Struktur integriert:
👉 https://www.asteriosphp.de/docs/database/operations
Wie trennt ihr Datenmigrationen und Daten-Transformationen in euren Projekten?