Database per Service
Database per Service weist jedem Dienst eine private Datenhaltung zu, auf die andere Dienste ausschließlich über veröffentlichte Verträge zugreifen.
- Private DatenhaltungNur der zuständige Dienst liest und schreibt direkt.
- IntegrationsvertragAPI oder Ereignis ersetzt fremden Tabellenzugriff.
- Verteilte KonsistenzMacht Verzögerung, Saga und Projektion sichtbar.
Einordnung
Warum das wichtig ist
Das Muster schützt Schreibhoheit und unabhängige Schemaevolution; es verlagert gemeinsame Joins und atomare Mehrdienständerungen in Integrationsmuster.
Die verteilte Ausbaustufe im Shop-Szenario ist hypothetisch; der aktuelle Shop bleibt ein modularer Monolith mit sieben Modulen und gemeinsamer Datenbank.
Database per Service: Entscheidungsgrenzen
Der aktuelle Shop bleibt ein modularer Monolith mit sieben Modulen und gemeinsamer Datenbank; jedes Modul besitzt seine Tabellen. Eine hypothetische Dienstaufteilung gibt Zahlung eine private Datenhaltung und entzieht Bestellung jeden Tabellenzugriff. Bestellstatus erhält Zahlungsinformationen über einen versionierten Vertrag und eine Projektion. Das Team migriert schrittweise, prüft Berechtigungen, doppelte Ereignisse und Wiederaufbau der Projektion und übernimmt die Trennung erst, wenn der Qualitätsgewinn den verteilten Aufwand trägt.
So liest du das Bild
- Private Datenhaltung Berechtigung erzwingt Grenze
- Integrationsvertrag Versionierter Zugriff
- Verteilte Konsistenz Expliziter Status
| Vergleich | Aspekt | Tragfähiger Einsatz | Grenze |
|---|---|---|---|
| Getrennte Schemata | Klare Rechte auf gemeinsamem Server | Schrittweise Trennung | Gemeinsamer Ausfall und Ressourcen |
| Eigene Datenbank | Unabhängiger Betrieb und Schema | Starke technische Grenze | Mehr Migration, Backup und Beobachtung |
| Shared Database | Einfache Joins und Transaktionen | Bewusste gemeinsame Infrastruktur | Schema- und Lastkopplung |
Nutzen & Grenzen
Hilft, wenn
- Schrittweise Trennung
- Starke technische Grenze
- Bewusste gemeinsame Infrastruktur
Grenzen
- Gemeinsamer Ausfall und Ressourcen
- Mehr Migration, Backup und Beobachtung
- Schema- und Lastkopplung
In der Praxis
- Inventarisiere jeden direkten Tabellenzugriff zwischen Modulen und ordne die gelesenen oder geschriebenen Felder einem fachlichen Besitzer zu. Ersetze einen fremden Schreibzugriff zuerst durch einen expliziten Modulvertrag.
- Entziehe Bestellung in einer Testumgebung den direkten Zugriff auf Zahlungsdaten und führe dieselbe Auftragsansicht über API oder Projektion aus. Prüfe Fehlerzustand, Aktualität und Wiederaufbau.
- Vergleiche getrennte Schemata, eigene Datenbank und Shared Database anhand von Änderungsautonomie, Ausfallradius, Transaktionen, Backup und Betriebsaufwand. Dokumentiere die belegte Zielqualität.
Ausführliche Erklärung lesen
Privat bedeutet eine durch Berechtigungen und Verantwortlichkeit durchgesetzte Grenze; separate Schemas auf einem Server können genügen, wenn kein fremder Direktzugriff möglich ist.
Andere Dienste lesen über APIs, Ereignisse oder Projektionen. Abläufe über mehrere Datenhaltungen brauchen Saga, Idempotenz und explizite Konsistenz statt eines gemeinsamen Datenbank-Joins.
Datenhoheit bestimmt den fachlichen Besitzer. Shared Database ist eine bewusste Alternative mit gemeinsamem Betriebs- und Schemaeinfluss.
Selbst prüfen
Teste dich in drei Stufen
AblesenIm Bild nachsehen
Was ist die Kernaufgabe von Database per Service?
Lösung mit Begründung ansehen
Database per Service weist jedem Dienst eine private Datenhaltung zu, auf die andere Dienste ausschließlich über veröffentlichte Verträge zugreifen.
AnwendenAuf eine neue Lage übertragen
Welche Annahme ist im Shop hypothetisch?
Lösung mit Begründung ansehen
Eine hypothetische Dienstaufteilung gibt Zahlung eine private Datenhaltung und entzieht Bestellung jeden Tabellenzugriff. Bestellstatus erhält Zahlungsinformationen über einen versionierten Vertrag und eine Projektion.
BewertenEine Alternative abwägen
Welche drei Punkte müssen vor einer Einführung belegt sein?
Lösung mit Begründung ansehen
Private Datenhaltung, Integrationsvertrag, Verteilte Konsistenz.
Vertiefen
Diese Bausteine führen die Gedanken dieser Seite weiter.