Wir bauen eine Webplattform auf, die mehrere Dienste mit jeweils eigenen zugrunde liegenden Daten umfasst. Diese Dienste werden unabhängig nach den Prinzipien der serviceorientierten Architektur erstellt , sie werden jedoch mit potenziell verwandten Daten abgewickelt. Wir überlegen, ob diese Dienste eine große Datenbank gemeinsam nutzen sollen oder jede über eine eigene Datenbank verfügt. (Wir planen die Verwendung von SQL Server 2008 Enterprise in einem Windows 2008-Cluster.)
Zu den Vorteilen jedes Ansatzes, den wir bereits in Betracht gezogen haben, gehören:
Einzelne Datenbank
- Das Verknüpfen von Daten aus verschiedenen Diensten kann durch Fremdschlüsseleinschränkungen miteinander verbunden werden
- Analytische Extrakte sind einfacher zu schreiben und schneller auszuführen
- Im Katastrophenfall ist es einfacher, die Plattform in einen konsistenten Zustand zu versetzen
- Bei Daten, auf die von mehreren Diensten verwiesen wird, werden die von einem Dienst zwischengespeicherten Daten wahrscheinlich bald darauf von einem anderen Dienst verwendet
- Verwaltung und Überwachung sind im Vorfeld einfacher und kostengünstiger
Mehrere Datenbanken
- Wartungsarbeiten, Hardwareprobleme, Sicherheitslücken usw. wirken sich nicht unbedingt auf die gesamte Plattform aus
- Unter der Annahme, dass sich jede Datenbank auf einer separaten Hardware befindet, bietet das Skalieren mehrerer Computer mehr Leistungsvorteile als das Skalieren eines großen Computers
Ist es aus betrieblicher Sicht vorteilhafter, wenn jeder Dienst auf dieser Plattform eine eigene Datenbank erhält oder alle in derselben Datenbank gespeichert sind? Welche Schlüsselfaktoren bestimmen eine Antwort auf diese Frage?