次の方法で共有


連合データベース サーバーについて

多層システムでは、大規模な Web サイトに必要な高いレベルのパフォーマンスを実現するために、通常、複数のサーバー間で各層の処理負荷を分散します。SQL Server では、データベース内のデータを行方向にパーティション分割することにより、サーバーのグループ全体でデータベースの処理負荷を共有します。負荷が分散されるサーバーはそれぞれ個別に管理されますが、アプリケーションからのデータベース要求を協調して処理します。このように協調動作するサーバーのグループを、連合と言います。

連合データベース層で非常に高いレベルのパフォーマンスを実現できるのは、アプリケーションが各 SQL ステートメントを送信する先が、ステートメントで必要なデータの大部分を保持するメンバ サーバーである場合のみです。これを、SQL ステートメントと必要なデータを併置すると言います。SQL ステートメントと必要なデータを併置することは、連合サーバーだけに当てはまる要件ではありません。このことは、クラスタ化されたシステムでも必要です。

連合サーバーは単一のデータベース サーバーと同様のイメージでアプリケーションに認識されますが、次の表に示すように、データベース サービス層が実装される方法には内部的な相違があります。

単一サーバー層

連合サーバー層

実稼働サーバーに SQL Server の 1 つのインスタンスがあります。

各メンバ サーバーに SQL Server のインスタンスが 1 つあります。

実稼動データは 1 つのデータベースに格納されます。

各メンバ サーバーに 1 つのメンバ データベースがあります。データは、全メンバ データベースに分散されます。

各テーブルは、通常は単一のエンティティです。

元のデータベースのテーブルが行方向にパーティション分割されてメンバ テーブルになります。メンバ データベースごとにメンバ テーブルが 1 つ存在し、分散パーティション ビューを使用すれば、各メンバ サーバーに元のテーブルの完全なコピーがあるかのように表示されます。

接続はすべて 1 台のサーバーに対して行われ、すべての SQL ステートメントは SQL Server の同じインスタンスで処理されます。

アプリケーション層では、SQL ステートメントで参照されている大部分のデータが格納されているメンバ サーバーに、その SQL ステートメントを併置できなければなりません。