ページに広告が含まれる場合があります。
2025年5月31日、データベーススペシャリスト試験に向けて「分散データベース」について学習しました。この記事では、その内容を自分なりにまとめてみました。
分散データベースとは?
分散データベースとは、ネットワークを介して複数の拠点にまたがって管理されるデータベースのことです。物理的に離れた複数の場所(=サイト)にあるデータベースを、あたかも1つのデータベースのように扱う技術です。
- 各拠点のことを「サイト」と呼びます。
- システムの中心となる「主サイト」と、それ以外の「従サイト」に分かれて管理されます。
- 一般的なリレーショナルデータベース(RDBMS)単体では、分散データベースを構築することはできません。
分散データベースが備えるべき「透過性」
分散データベースでは、「分散されていることを意識せずに利用できる」ことが重要です。この性質を「透過性(トランスペアレンシ)」といいます。透過性にはさまざまな種類があり、それぞれが利用者の利便性や運用の柔軟性に大きく関わってきます。
以下に、代表的な透過性をまとめました。
🔹 位置に対する透過性
- データがどのサイトに存在するかを利用者が意識せずに利用できる。
🔹 分割に対する透過性
- テーブルが行や列で分割されて複数サイトに分散していても、1つのテーブルとして利用可能。
🔹 分散に対する透過性
- 1つのデータベースが複数サイトに分かれていても、それを意識せずに利用可能。
🔹 複製に対する透過性
- データが複数コピーされていても、1つのデータにアクセスしているように見える。
🔹 アクセスに対する透過性
- どのサイトにあるデータにも、同じ方法でアクセスできる。
🔹 移動に対する透過性
- データベースが移動しても、利用者はそれを意識しなくてよい。
🔹 規模に対する透過性
- サーバーの増減や拡張があっても、システム全体を意識せずに利用可能。
🔹 並行に対する透過性
- 複数のデータベースに対して同時に操作を行うことが可能。
🔹 データモデルに対する透過性
- 各サイトのデータモデルが異なっていても、統一された方法でアクセスできる。
🔹 障害に対する透過性
- あるサイトで障害が発生しても、システム全体が止まることなく稼働できる。
分散データベースにおけるトランザクション管理:2相コミット
分散環境では、トランザクションの整合性を保つために「2相コミット(Two-Phase Commit)」という手法が使われます。これは、複数のサイトにまたがる処理を安全に完了させるためのプロトコルです。
✅ ステップ1:コミットの可否を問い合わせる(準備フェーズ)
- 主サイトが各従サイトに対して「コミットしていいか?」と問い合わせを送ります。
- 各従サイトは「Yes(OK)」または「No(NG)」で応答します。
✅ ステップ2:コミット or ロールバックの指示(決定フェーズ)
- すべての従サイトが「OK」なら「コミット」の指示を出します。
- 1つでも「NG」があれば、「ロールバック」の指示が出され、全サイトで処理を取り消します。
まとめ
分散データベースは、単なる複数のデータベースを組み合わせたものではなく、「一体として扱うための工夫(=透過性)」と「トランザクションの整合性を保つ仕組み(=2相コミット)」が非常に重要であることが分かりました。
データベーススペシャリスト試験では、このあたりの知識が深く問われるので、用語の意味だけでなく、なぜそれが必要なのかを意識して学習していくことがポイントだと感じました。
コメント