連合データベース サーバーを使用するアプリケーションのデザイン
更新可能な分散パーティション ビューを使用すると、SQL Server 2005 サーバーのグループを連携させ、複数の層から構成される大規模な Web サイトのデータベースのワークロードを処理できるようになります。各サーバーは個別に管理され、各サーバーの SQL Server 2005 のインスタンスは分散パーティション ビューを使用して作業を分担します。連携して作業を分担する自律的なサーバーのグループを連合と呼びます。
連合データベース サーバーを構築するには、各サーバーでデータベースを作成してから、複数のデータベースにまたがってテーブルをパーティション分割します。元のテーブルは、それぞれ各メンバ サーバーのメンバ テーブルに分割されます。各メンバ テーブルは、元のテーブルの行のサブセットが含まれます。元のテーブルは、複数のメンバ テーブルにまたがって行方向にパーティション分割されます。連合データベース システムをデザインするときは、関連するすべてのデータが同一のメンバ サーバーに配置されるようにすべてのテーブルをパーティション分割します。
連合データベース サーバーのセット全体にわたってテーブルをパーティション分割すると、一連のデータ ルーティング ルールが確立されます。アプリケーションは、ユーザーの要求から推測できるデータをデータ ルーティング ルールと照合できます。アプリケーションはこの操作で、ユーザーの要求を満たすためにアプリケーションが生成する必要がある (SQL ステートメントによって要求される) データの大部分が格納されているメンバ サーバーを判断できます。詳細については、「連合データベース サーバーのデザイン」を参照してください。
複数の層から構成されるアーキテクチャでシステムが実装される層を次に示します。
- ユーザー サービス層 : アプリケーション ユーザー インターフェイスの管理に重点を置いた一連のシン クライアント。ユーザー サービス層は、ユーザーの要求をサポートするのに必要なビジネス機能を実行するために次の層を呼び出します。
- ビジネス サービス層 : 組織のビジネス ロジックをカプセル化する一連の COM+ コンポーネント。ビジネス サービス層は、実行する必要がある永続的なデータ ストレージのために次の層を使用します。
- データ サービス層. 永続的なメディアにデータを格納できる、SQL Server データベースなどの一連のコンポーネント。この操作はデータの保存とも呼ばれます。
ビジネス サービス層は、アプリケーション サーバーで実行される一連の COM+ コンポーネントとしてデザインされています。その結果、Microsoft Windows ネットワーク負荷分散により、ビジネス層全体にユーザー要求を均一に分散できます。ユーザー要求は任意のアプリケーション サーバーで処理できるので、ビジネス コンポーネントは、生成する SQL ステートメントを適切なメンバ サーバーにルーティングするメカニズムを備えている必要があります。ビジネス コンポーネントは、クライアントから受け取ったデータの情報をデータ ルーティング ルールと照合して、要求を処理するメンバ サーバーを決定できる必要があります。
ビジネス サービス層にデータ ルーティングを実装する柔軟なメカニズムにより、ルーティング ルールを SQL Server 2005 や Windows Active Directory などの永続的なストアに格納し、ビジネス コンポーネントが実行時にルーティング ルールを取得できるようになります。キーをルーティング ルールと照合し、クエリを最も効率的に処理するメンバ サーバーを決定する COM+ コンポーネントをコーディングできます。この COM+ ルーティング コンポーネントを、パーティション分割されたデータにアクセスする必要があるビジネス サービス層の他の COM+ コンポーネントから呼び出すことができます。たとえば、顧客 ID でパーティション分割された顧客データにアクセスするシステムでは、次の処理が可能です。
- 各メンバ サーバーでどのキーが管理されているかを記録するルーティング ルール テーブルの作成。
- 入力として 1 つのキー値またはキー値の範囲の開始キーと終了キーを受け取るデータ ルーティング用ビジネス コンポーネントの作成。COM+ コンポーネントは、ルーティング ルール テーブルを読み取り、入力のキーまたはキー範囲を各メンバ サーバーで記録されたキー範囲と比較し、最適なメンバ サーバーの名前を呼び出し側のコンポーネントまたはアプリケーションに返します。
- パーティション ビューを参照する SQL ステートメントの実行時には必ずデータ ルーティング コンポーネントを呼び出す、一般的なビジネス サービス層のコンポーネントやアプリケーションのコーディング。ビジネス コンポーネントは、データ ルーティング コンポーネントによって返されたサーバー名を使用して、SQL ステートメントを実行するデータベース接続を選択します。
この方法では、データのパーティション分割に変更があっても、アプリケーション コードを変更する必要がありません。データ ルーティング ルールは、アプリケーションの実行中に変更できます。