分散DBMS-設計戦略
前の章では、さまざまな代替設計を紹介しました。この章では、デザインの採用に役立つ戦略について学習します。戦略は、複製と断片化に大きく分けることができます。ただし、ほとんどの場合、2つの組み合わせが使用されます。
データレプリケーション
データ複製は、データベースの個別のコピーを2つ以上のサイトに保存するプロセスです。これは、分散データベースで一般的なフォールトトレランス手法です。
データレプリケーションの利点
Reliability −いずれかのサイトに障害が発生した場合でも、別のサイトでコピーを入手できるため、データベースシステムは引き続き機能します。
Reduction in Network Load−データのローカルコピーが利用できるため、特にプライムアワーの時間帯に、ネットワークの使用量を減らしてクエリ処理を実行できます。データの更新は、プライム時間以外に実行できます。
Quicker Response −データのローカルコピーが利用できるため、クエリ処理が迅速になり、その結果、応答時間が短縮されます。
Simpler Transactions−トランザクションでは、異なるサイトにあるテーブルの結合数が少なくて済み、ネットワーク全体での調整が最小限で済みます。したがって、それらは本質的に単純になります。
データレプリケーションのデメリット
Increased Storage Requirements−データの複数のコピーを維持すると、ストレージコストが増加します。必要なストレージスペースは、集中型システムに必要なストレージの倍数です。
Increased Cost and Complexity of Data Updating−データ項目が更新されるたびに、更新は異なるサイトのデータのすべてのコピーに反映される必要があります。これには、複雑な同期技術とプロトコルが必要です。
Undesirable Application – Database coupling−複雑な更新メカニズムを使用しない場合、データの不整合を取り除くには、アプリケーションレベルでの複雑な調整が必要です。これにより、望ましくないアプリケーションとデータベースの結合が発生します。
一般的に使用されるレプリケーション手法には、次のものがあります。
- スナップショットレプリケーション
- ほぼリアルタイムのレプリケーション
- プルレプリケーション
断片化
断片化は、テーブルを小さなテーブルのセットに分割するタスクです。テーブルのサブセットは呼び出されますfragments。断片化には、水平、垂直、およびハイブリッド(水平と垂直の組み合わせ)の3つのタイプがあります。水平方向の断片化は、さらに2つの手法に分類できます。プライマリ水平方向の断片化と派生水平方向の断片化です。
フラグメント化は、元のテーブルがフラグメントから再構築できるような方法で実行する必要があります。これは、必要なときにいつでもフラグメントから元のテーブルを再構築できるようにするために必要です。この要件は「再構成性」と呼ばれます。
断片化の利点
データは使用場所の近くに保存されるため、データベースシステムの効率が向上します。
データはローカルで利用できるため、ほとんどのクエリにはローカルクエリ最適化手法で十分です。
関係のないデータはサイトで利用できないため、データベースシステムのセキュリティとプライバシーを維持できます。
断片化のデメリット
異なるフラグメントからのデータが必要な場合、アクセス速度が非常に速くなる可能性があります。
再帰的な断片化の場合、再構築の仕事には高価な技術が必要になります。
異なるサイトにデータのバックアップコピーがない場合、サイトに障害が発生した場合にデータベースが無効になる可能性があります。
垂直方向の断片化
垂直方向の断片化では、テーブルのフィールドまたは列がフラグメントにグループ化されます。再構成性を維持するために、各フラグメントにはテーブルの主キーフィールドが含まれている必要があります。垂直方向の断片化は、データのプライバシーを強化するために使用できます。
たとえば、大学のデータベースが、次のスキーマを持つStudentテーブルに登録されているすべての学生のレコードを保持しているとします。
学生
Regd_No | 名前 | コース | 住所 | 学期 | 料金 | マーク |
現在、料金の詳細はアカウントセクションで管理されています。この場合、設計者は次のようにデータベースをフラグメント化します-
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つ以上の垂直フラグメントから水平フラグメントを生成します。