私たちは、それぞれが基礎となるデータを持つ複数のサービスを組み込んだWebプラットフォームを構築しています。これらのサービスは、Service-Oriented Architectureの原則に従って独立して構築されていますが、潜在的に関連するデータに対して処理します。これらのサービスが1つの大きなデータベースを共有するか、それぞれが独自のデータベースを持つかを検討しています。(Windows 2008クラスターでSQL Server 2008 Enterpriseを使用する予定です。)
すでに検討した各アプローチの利点には次のものがあります。
単一のデータベース
- 異なるサービスからのデータを関連付けることは、外部キーの制約によって結び付けることができます
- 分析抽出は、作成が簡単で実行が高速です
- 災害が発生した場合、プラットフォームを一貫した状態に復元する方が簡単です
- 複数のサービスによって参照されるデータの場合、あるサービスによってキャッシュされたデータは、すぐに別のサービスによって使用される可能性が高い
- 管理と監視は前もって簡単で安価です
複数のデータベース
- メンテナンス作業、ハードウェアの問題、セキュリティ侵害などは、必ずしもプラットフォーム全体に影響を与えるとは限りません
- 各データベースが個別のハードウェア上にあると仮定すると、複数のマシンをスケールアップすると、1つの大きなマシンをスケールアップするよりもパフォーマンス上のメリットが大きくなります
運用の観点から、このプラットフォームの各サービスが独自のデータベースを取得すること、またはそれらがすべて同じデータベースに配置されることは、より有利ですか?この質問の答えを伝える重要な要因は何ですか?