Distributed-dbms-design-strategies

提供:Dev Guides
移動先:案内検索

分散DBMS-設計戦略

前の章では、さまざまな設計の代替案を紹介しました。 この章では、設計の採用を支援する戦略を研究します。 戦略は、レプリケーションとフラグメンテーションに大きく分けることができます。 ただし、ほとんどの場合、2つの組み合わせが使用されます。

データ複製

データ複製は、データベースの個別のコピーを2つ以上のサイトに保存するプロセスです。 これは、分散データベースの一般的なフォールトトレランス手法です。

データ複製の利点

  • 信頼性-いずれかのサイトで障害が発生した場合、別のサイトでコピーが利用できるため、データベースシステムは引き続き動作します。
  • ネットワーク負荷の削減-データのローカルコピーが利用できるため、特にプライム時間中に、ネットワーク使用量を削減してクエリ処理を実行できます。 データ更新は、プライム時間以外の時間に実行できます。
  • 迅速な応答-データのローカルコピーの可用性により、クエリ処理が高速になり、応答時間が短縮されます。
  • シンプルなトランザクション-トランザクションは、異なるサイトにあるテーブルの結合数が少なく、ネットワーク全体の調整が最小限で済みます。 したがって、それらは本質的に単純になります。

データ複製の欠点

  • ストレージ要件の増加-データの複数のコピーを維持すると、ストレージコストが増加します。 必要なストレージスペースは、集中システムに必要なストレージの倍数です。
  • データ更新のコストと複雑さの増加-データ項目が更新されるたびに、異なるサイトのデータのすべてのコピーに更新を反映する必要があります。 これには、複雑な同期技術とプロトコルが必要です。
  • 望ましくないアプリケーション-データベースの結合-複雑な更新メカニズムを使用しない場合、データの不整合を取り除くには、アプリケーションレベルでの複雑な調整が必要です。 これにより、望ましくないアプリケーション-データベース結合が発生します。

一般的に使用されるいくつかのレプリケーション手法は-

  • スナップショットレプリケーション
  • ほぼリアルタイムの複製
  • プル複製

フラグメンテーション

断片化は、テーブルを小さなテーブルのセットに分割するタスクです。 テーブルのサブセットは*フラグメント*と呼ばれます。 断片化には、水平、垂直、およびハイブリッド(水平と垂直の組み合わせ)の3つのタイプがあります。 水平方向の断片化は、さらに2つの手法に分類できます。プライマリ水平方向の断片化と派生水平方向の断片化です。

断片化は、元のテーブルを断片から再構築できるように行う必要があります。 これは、必要に応じてフラグメントから元のテーブルを再構築できるようにするために必要です。 この要件は「再構築性」と呼ばれます。

フラグメンテーションの利点

  • データは使用場所の近くに保存されるため、データベースシステムの効率が向上します。
  • データはローカルで使用できるため、ほとんどのクエリにはローカルクエリ最適化手法で十分です。
  • 無関係なデータはサイトで利用できないため、データベースシステムのセキュリティとプライバシーを維持できます。

フラグメンテーションの欠点

  • 異なるフラグメントからのデータが必要な場合、アクセス速度は非常に高速になる可能性があります。
  • 再帰的な断片化の場合、再構築の仕事には高価な技術が必要になります。 *異なるサイトにデータのバックアップコピーがないと、サイトに障害が発生した場合にデータベースが無効になる可能性があります。

垂直フラグメンテーション

垂直フラグメンテーションでは、テーブルのフィールドまたは列はフラグメントにグループ化されます。 再構成性を維持するには、各フラグメントにテーブルのプライマリキーフィールドを含める必要があります。 垂直断片化は、データのプライバシーを強化するために使用できます。

たとえば、大学のデータベースでは、登録されているすべての学生の記録を、次のスキーマを持つStudentテーブルに保持しているとします。

学生

Regd_No Name Course Address Semester Fees Marks

現在、料金の詳細はアカウントセクションで管理されています。 この場合、設計者は次のようにデータベースを断片化します-

CREATE TABLE STD_FEES AS
   SELECT Regd_No, Fees
   FROM STUDENT;

水平フラグメンテーション

水平フラグメンテーションは、1つ以上のフィールドの値に従ってテーブルのタプルをグループ化します。 水平方向の断片化も、再構成の規則を確認する必要があります。 各水平フラグメントには、元のベーステーブルのすべての列が必要です。

たとえば、学生のスキーマでは、コンピュータサイエンスコースのすべての学生の詳細をコンピュータサイエンスの学校で維持する必要がある場合、デザイナーは次のようにデータベースを水平方向に断片化します-

CREATE COMP_STD AS
   SELECT* FROM STUDENT
   WHERE COURSE = "Computer Science";

ハイブリッドフラグメンテーション

ハイブリッドフラグメンテーションでは、水平および垂直のフラグメンテーション手法の組み合わせが使用されます。 これは、最小限の外部情報でフラグメントを生成するため、最も柔軟なフラグメンテーション手法です。 ただし、元のテーブルの再構築は、多くの場合、費用のかかる作業です。

ハイブリッド断片化は、2つの代替方法で行うことができます-

  • 最初に、水平方向のフラグメントのセットを生成します。次に、1つ以上の水平フラグメントから垂直フラグメントを生成します。
  • 最初に、一連の垂直フラグメントを生成します。次に、1つ以上の垂直フラグメントから水平フラグメントを生成します。