連合データベース サーバーについて
多層システムでは、大規模な Web サイトに必要な高いレベルのパフォーマンスを実現するために、通常、複数のサーバー間で各層の処理負荷を分散します。SQL Server では、データベース内のデータを行方向にパーティション分割することにより、サーバーのグループ全体でデータベースの処理負荷を共有します。負荷が分散されるサーバーはそれぞれ個別に管理されますが、アプリケーションからのデータベース要求を協調して処理します。このように協調動作するサーバーのグループを、連合と言います。
連合データベース層で非常に高いレベルのパフォーマンスを実現できるのは、アプリケーションが各 SQL ステートメントを送信する先が、ステートメントで必要なデータの大部分を保持するメンバ サーバーである場合のみです。これを、SQL ステートメントと必要なデータを併置すると言います。SQL ステートメントと必要なデータを併置することは、連合サーバーだけに当てはまる要件ではありません。このことは、クラスタ化されたシステムでも必要です。
連合サーバーは単一のデータベース サーバーと同様のイメージでアプリケーションに認識されますが、次の表に示すように、データベース サービス層が実装される方法には内部的な相違があります。
単一サーバー層 |
連合サーバー層 |
---|---|
実稼働サーバーに SQL Server の 1 つのインスタンスがあります。 |
各メンバ サーバーに SQL Server のインスタンスが 1 つあります。 |
実稼動データは 1 つのデータベースに格納されます。 |
各メンバ サーバーに 1 つのメンバ データベースがあります。データは、全メンバ データベースに分散されます。 |
各テーブルは、通常は単一のエンティティです。 |
元のデータベースのテーブルが行方向にパーティション分割されてメンバ テーブルになります。メンバ データベースごとにメンバ テーブルが 1 つ存在し、分散パーティション ビューを使用すれば、各メンバ サーバーに元のテーブルの完全なコピーがあるかのように表示されます。 |
接続はすべて 1 台のサーバーに対して行われ、すべての SQL ステートメントは SQL Server の同じインスタンスで処理されます。 |
アプリケーション層では、SQL ステートメントで参照されている大部分のデータが格納されているメンバ サーバーに、その SQL ステートメントを併置できなければなりません。 |