データベースと応用システム:分散データベース

 データベースと応用システム:分散データベース

Transcript

  1. (c)長岡技術科学大学 電気系 1 データベースと応用システム 分散データベース 山本和英 長岡技術科学大学 電気系

  2. (c)長岡技術科学大学 電気系 2 分散データベース • 地理的または論理的に分散しているデータベース • 危険分散 – 災害やシステムの障害を最小限に抑える

    • 負荷分散 – 複数運用することで負荷が集中しない – システムの拡張が容易
  3. (c)長岡技術科学大学 電気系 3 分散データベースの形態 • 垂直分散 – データベースに主従関係がある。主サイトは従サイトに アクセスせず、従サイト間のアクセスもない。 –

    実現・管理が容易 – 主サイトにアクセスが集中 • 水平分散 – 各データベースが対等な関係で、互いにアクセスし得る – 拡張性や耐障害性が高く、負荷の集中もない – 管理がかなり複雑になる
  4. (c)長岡技術科学大学 電気系 4 データベースの透過性 • 透過性:分散していることを利用者に意識させず、 あたかも一つのデータベースのように見せること • 透過性要素: –

    位置:どこに保存されているかを意識不要 – 移動:サイトを移動した場合もこれを意識させない – アクセス:分散かどうかに関係なく同一アクセス可能 – 重複(複製):重複保存されていても意識不要 – 分割:表が分散されていることを意識不要 – 障害:障害を隠蔽し、適切に復旧する – 規模:大規模化しても環境に影響しない
  5. (c)長岡技術科学大学 電気系 5 データの分散配置

  6. (c)長岡技術科学大学 電気系 6 データベースの表分割 表が大量である場合は表を分割して保存する必要が ある。 • 垂直分割(縦分割) – 独立性の高い列集合ごとにサイト分割

    • 水平分割(横分割) – 行の集まりごとにサイト分割。下記3方法がある。 – ラウンドロビン(格納順)分割 – キーレンジ分割 – ハッシュ分割
  7. (c)長岡技術科学大学 電気系 7 ラウンドロビン方式 (格納順分割) • キーの値に全く関係なく、1行ごとに一定順序で保 存場所を決める方式 – 1行目はここ、2行目はあそこといった感じで

    • すべての保存場所が均等な規模になる • 検索時には、すべての保存場所を検索対象とする 必要がある
  8. (c)長岡技術科学大学 電気系 8 キーレンジ分割 • 特定のキーの値ごとに、その行を保存する場所を決 定する分割方式 – あるキーの値が1~10ならこのサイト、11~20ならあの サイト、といった感じ。

    • どこに何が保存されているのかが把握できるので 運用が容易 • 保存領域規模が均等になるようにキー値を分割す る必要がある
  9. (c)長岡技術科学大学 電気系 9 ハッシュ分割 • 特定のキー値に対して、ハッシュ関数を用いて保存 場所を決定する分割方式 – あるキーを7で割った余りが1ならここ、余り2ならあそこ、 といった雰囲気で。

    • ハッシュを用いるため、一般にはある程度均等に分 割される。ただしキーとハッシュ関数によっては偏る こともある。
  10. (c)長岡技術科学大学 電気系 10 分散問い合わせ処理

  11. (c)長岡技術科学大学 電気系 11 分散問い合わせ処理 分散されている複数サイトの表を結合する際は、通信 負荷も考慮する必要がある。 主なテーブルの結合方法: • 入れ子ループ法 •

    ソートマージ法 • セミジョイン(準結合)法
  12. (c)長岡技術科学大学 電気系 12 入れ子ループ法 サイトAが、サイトBとCの結合処理を行う場合、 • サイトB(アウターリレーション)から1行ずつサイトC に送る • サイトC(インナーリレーション)は送られてきた行ご

    とに照合して結合 • サイトBが全行送り終わったらサイトCの結合結果 をサイトAに送る • 処理回数は、アウターリレーションの行数 × イン ナーリレーションの行数(インデックスがない場合)
  13. (c)長岡技術科学大学 電気系 13 ソートマージ(マージ結合)法 • 各サイトで結合対象の列でソート • 一方のサイトから他方のサイトへ表全体を転送 • マージ処理で結合演算する方法

    • 結合対象の表が入出力バッファに収まらない場合 に用いる • 効率は悪い
  14. (c)長岡技術科学大学 電気系 14 セミジョイン(準結合)法 前ページと同様のタスクについて、 • サイトBの結合対象列を射影演算で抽出、サイトCに送 る • サイトCで結合演算を行い、結果をサイトBに返す

    • サイトBで再度結合演算を行い、結果をサイトAに返す • 通信量は大幅に減少して効率がいい • 結合演算を2度行う必要があるのがちょっと面倒
  15. (c)長岡技術科学大学 電気系 15 分散トランザクション

  16. (c)長岡技術科学大学 電気系 16 分散トランザクション • 一つのトランザクションが複数のサイトに関係する 場合、トランザクションの原子性を満たすように注 意する必要がある。 – この処理機構をコミットメント制御と呼ぶ

    – 制御するほうを「主サイト」、されるほうを「従サイト」と 呼ぶ • コミットメント制御の方法 – 1相コミットメント – 2相コミットメント – 3相コミットメント
  17. (c)長岡技術科学大学 電気系 17 1相コミットメント • 主:コミット要求 – すべての従サイトが一斉に更新される • 問題点:従サイト1のコミット完了後に従サイト2に

    障害発生すると、トランザクションの原子性が保た れなくなる
  18. (c)長岡技術科学大学 電気系 18 主サイト 従サイト2 更新処理要求 更新処理 応答 コミット要求 コミット

    従サイト1 更新処理 コミット
  19. (c)長岡技術科学大学 電気系 19 2相コミットメント • 主:コミット準備指示(可否問い合わせ) – 準備ができた従サイトは応答する(セキュア状態) – 主サイトは全従サイトがセキュアとなるまで待つ

    • 主:コミット要求 – すべてのデータベースが一斉に更新される – もしどこかの従サイトで異常発生すると、それを主サイ トに伝え、主サイトは全従サイトにロールバック命令 • 問題点:すべてのサイトがセキュア状態の時に障 害があると障害の回復を待ち続けてしまう。
  20. (c)長岡技術科学大学 電気系 20 主サイト 従サイト2 更新処理要求 更新処理 応答 コミット要求 コミット

    従サイト1 更新処理 コミット コミット準備 コミット準備 コミット準備 指示 応答 (セキュア 状態)
  21. (c)長岡技術科学大学 電気系 21 3相コミットメント • セキュア状態確認後に、さらに準備指示の確認 (プリコミット)を送信する。 • 2回確認すると何が違う? –

    2相:全サイトがセキュア状態であれば待ち続 けるしかない – 3相:タイムアウトによるアボートが実施できる
  22. (c)長岡技術科学大学 電気系 22 レプリケーション

  23. (c)長岡技術科学大学 電気系 23 レプリケーション • 遠隔地で分散している分散データベース間で、ある データベース内容の全部(または一部)を、一定間 隔で複写すること – 複写された側のサイトをレプリカと呼ぶ

    • 複数サイトでデータのコピーを持つことで負荷分散 が可能 • DBMSの障害発生時も複製されたデータの利用が 可能
  24. (c)長岡技術科学大学 電気系 24 レプリケーションの種類 • 同期レプリケーション – 同期がリアルタイム、またはトランザクションごと – ネットワークの負荷が増大する可能性

    • 非同期レプリケーション – 複製と同期が一定間隔ごと(バッチ型) – 複製サイトに更新ログを送信し、複製サイトではそのロ グが反映される形で同期される – データベースイメージ(スナップショット)を送信する方式 もある – 複製サイトは読み取り専用のことが多い