Budujemy platformę internetową, która zawiera wiele usług, każda z własnymi danymi bazowymi. Usługi te są budowane niezależnie zgodnie z zasadami architektury zorientowanej na usługi , ale transakcje dotyczą potencjalnie powiązanych danych. Zastanawiamy się, czy te usługi powinny mieć jedną dużą bazę danych, czy każda z nich ma własną bazę danych. (Planujemy używać SQL Server 2008 Enterprise w klastrze Windows 2008).
Niektóre zalety każdego podejścia, które już rozważaliśmy, obejmują:
Jedna baza danych
- Powiązanie danych z różnych usług może być powiązane ograniczeniami klucza obcego
- Ekstrakty analityczne są łatwiejsze do napisania i szybsze do wykonania
- W przypadku katastrofy przywracanie platformy do spójnego stanu jest łatwiejsze
- W przypadku danych, do których odwołuje się wiele usług, dane buforowane przez jedną usługę prawdopodobnie wkrótce zostaną wykorzystane przez inną usługę
- Administracja i monitorowanie są z góry prostsze i tańsze
Wiele baz danych
- Prace konserwacyjne, problemy ze sprzętem, naruszenia bezpieczeństwa itp. Niekoniecznie wpływają na całą platformę
- Zakładając, że każda baza danych jest na osobnym sprzęcie, skalowanie wielu komputerów daje większe korzyści wydajnościowe niż skalowanie jednego dużego
Z perspektywy operacyjnej, czy bardziej korzystne jest to, że każda usługa na tej platformie ma własną bazę danych, czy wszystkie znajdują się w tej samej bazie danych? Jakie kluczowe czynniki decydują o odpowiedzi na to pytanie?