次の方法で共有


連合データベース サーバーのプランニング ガイドライン

データベース サーバーの連合を構築するには、複数のサーバーにデータを分散するための一連の分散パーティション ビューをデザインすることが必要です。パーティション分割が適切に機能するのは、データベース内のテーブルを類似したパーティションに自然に分割でき、任意の SQL ステートメントによってアクセスされるほとんどの行を同じメンバ サーバーに配置できる場合です。テーブルは、関連する単位でクラスタ化されます。たとえば、ある注文のエントリでは、OrdersCustomers、および Parts の各テーブルを、顧客、注文、および部品間の関係を記録するすべてのテーブルと共に参照するとします。パーティションは、論理クラスタのすべての行を同じメンバ サーバーに配置できる場合に最も適切に機能します。

対称的なパーティション

パーティション分割が最も効果的なのは、次のようにデータベース内のすべてのテーブルを対称的にパーティション分割できる場合です。

  • 関連するデータが同じメンバ サーバーに配置されます。そのため、適切なメンバ サーバーにルーティングされたほとんどの SQL ステートメントで、他のメンバ サーバー上にあるデータの要件があれば、その要件を最小限に抑えることができます。分散パーティション ビューのデザイン目標は、80/20 ルールと表現できます。つまり、パーティションのデザインでは、少なくともデータの 80% が存在するメンバ サーバーにほとんどの SQL ステートメントをルーティングできるようにし、分散クエリが必要になるデータを 20% 以下に抑えるようにします。この目標を実現できるかどうかをテストする適切な方法は、当該のパーティションについて、すべての行を、その行が参照するすべての外部キー行と同じメンバ サーバーに配置できるかどうかを確認することです。この目標をサポートするデータベースのデザインは、パーティション分割の候補に適しています。

  • データが複数のメンバ サーバー間で一様にパーティション分割されます。

    たとえば、ある企業が北米を複数の地域に区分しているとします。各従業員は 1 つの地域で働き、顧客は自分が住んでいる州でほとんどの買い物をします。地域テーブルおよび従業員テーブルは、地域に従ってパーティション分割されます。顧客は、住んでいる州によって地域別にパーティション分割されます。一部のクエリでは複数の地域のデータが必要になりますが、ほとんどのクエリに必要なデータは 1 つの地域用のサーバーにあります。アプリケーションにより、ユーザーの入力のコンテキストから推測される地域が格納されているメンバ サーバーに SQL ステートメントがルーティングされます。

非対称的なパーティション

対称的なパーティションが理想的な目標ですが、ほとんどのアプリケーションのデータ アクセス パターンは複雑なので、対称的なパーティション分割が妨げられます。非対称的なパーティションでは、一部のメンバ サーバーのロールが他のロールよりも大きくなります。たとえば、データベースの一部のテーブルだけがパーティション分割でき、パーティション分割されていないテーブルは元のサーバーに残るという場合があります。非対称的なパーティションでは、次のような重要な利点と共に、対称的なパーティションのほとんどのパフォーマンスを得ることができます。

  • 対称的にはパーティション分割できないデータベースのパフォーマンスは、そのテーブルの一部を非対称的にパーティション分割することで大幅に向上します。

  • 一連の反復的で、非対称的な向上によって既存の大規模なシステムが正常にパーティション分割されます。通常、各ステップでパーティション分割に選択されるテーブルは、その時点で最大のパフォーマンス向上を実現できるテーブルです。

非対称的な方法では、通常は、パーティション構成に適さない一部のテーブルが元のサーバーに残されます。そのような残りのテーブルのパフォーマンスは、メンバ テーブルがメンバ サーバーに移動して元のサーバーの負荷が軽減されるので、通常は元のシステムの場合より高速です。

多くのデータベースは、複数の方法でパーティション分割できます。実装に選択される特定のパーティションは、ビジネス サービス層で実行される通常の範囲の SQL ステートメントの要件を最も忠実に満たしているパーティションである必要があります。