Distributed-dbms-design-strategies
分散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つ以上の垂直フラグメントから水平フラグメントを生成します。