Мы создаем веб-платформу, которая включает в себя несколько сервисов, каждый из которых имеет свои собственные базовые данные. Эти сервисы создаются независимо от принципов Сервис-ориентированной архитектуры , но они взаимодействуют с потенциально связанными данными. Мы рассматриваем, должны ли эти службы совместно использовать одну большую базу данных или у каждой есть своя собственная база данных. (Мы планируем использовать SQL Server 2008 Enterprise в кластере Windows 2008).
Некоторые из преимуществ каждого подхода, который мы уже рассмотрели, включают:
Единая база данных
- Связанные данные из разных сервисов могут быть связаны ограничениями внешнего ключа
- Аналитические выдержки проще писать и быстрее выполнять
- В случае аварии проще восстановить платформу до согласованного состояния.
- Для данных, на которые ссылаются несколько служб, данные, кэшированные одной службой, вероятно, вскоре будут использованы другой службой
- Администрирование и мониторинг проще и дешевле.
Несколько баз данных
- Работы по техническому обслуживанию, проблемы с оборудованием, нарушения безопасности и т. Д. Не обязательно влияют на всю платформу
- Предполагая, что каждая база данных находится на отдельном оборудовании, масштабирование нескольких машин дает больше преимуществ в производительности, чем масштабирование одной большой.
С эксплуатационной точки зрения более выгодно, чтобы каждый сервис в этой платформе получал свою собственную базу данных или все они были в одной базе данных? Какие ключевые факторы дают ответ на этот вопрос?