分散データベースの透過性は、データが複数の場所に配置されていても、利用者やアプリケーションがその詳細を意識せずに扱える性質です。何を意識せずに済むのかで種類を区別します。
分散データベースとは
複数の場所に配置したデータを、一つの論理的なデータベースとして扱う考え方です。関係データベースにも分散構成はあり、NoSQLだけを指す言葉ではありません。NoSQLだから必ず分散配置、というわけでもありません。
NewSQLという呼び方は、SQLやトランザクションなどの関係DBの性質を保ちつつ、分散による拡張などを目指す製品群に使われます。すべての性能・一貫性の課題を無条件に解消する、という意味ではありません。
位置・分割・複製の透過性
| 種類 | 意識せずに済むこと | 例 |
|---|---|---|
| 位置透過性 | データがどの場所・サーバーにあるか | 利用者がサーバー名を指定せずに表を参照できる |
| 分割透過性 | 論理的な表がどう分割されているか | 東西の地域別に分けた顧客データを一つの表として検索する |
| 複製透過性 | 同じデータが複数箇所に複製されていること | 利用者がどの複製へ問い合わせるかを個別に選ばずに済む |
同じ操作で参照できることと、すべての複製が常に同時に最新であることは別です。一貫性や反映遅延は、採用する仕組み・設定・障害時の動作も含めて確認します。
移動・アクセスなどの透過性
| 種類 | 着目する点 |
|---|---|
| 移動透過性 | 配置場所が変わっても、利用側のアクセス方法を変えずに済む |
| アクセス透過性 | 表現やアクセスの違いなどを隠し、共通の方法で扱える |
| 障害透過性 | 一部の障害を利用側へできるだけ露出させず、処理の継続などを図る |
| 並行透過性 | 複数利用者の同時アクセスを適切に制御し、互いの処理の正しさを保つ |
| 規模に関する透過性 | 規模の変更による利用側への影響を抑える |
透過性の分類名や範囲は資料・製品によって異なります。試験では、用語だけでなく問題文が何を隠しているかで判断します。並行透過性も、待ち時間や競合が物理的に一切なくなることを意味しません。
分割と複製を例で区別する
顧客表を「東地域の行」と「西地域の行」に分けて別サーバーへ置くなら、行による水平分割の例です。顧客表と同じ内容のコピーを別サーバーにも置くなら複製です。分割した各部分をさらに複製するなど、組み合わせる構成もあります。
利用者が分割先を考えて検索を分け、その結果を自分で結合しなければならないなら、その操作について十分な分割透過性が提供されているとは言えません。
透過性の効果と限界
配置を隠すことでアプリを配置変更から独立させやすくなります。一方、通信遅延、障害、同期や分散トランザクションなどの実装上の問題は残ります。分散すれば必ず高速・低コスト・無停止になるわけではありません。
可用性や負荷分散の向上を期待できる場面でも、障害範囲、複製数、切替え条件、データの整合性、運用負担まで確認します。透過性は権限不要でアクセスできる、という意味でもありません。
確認問題:利用者が「東地域用」と「西地域用」の表を意識しなくてよい性質は?
一つの論理表を分割していることを隠すので、分割透過性です。どのサーバーにあるかを隠すなら位置透過性、コピーの存在を隠すなら複製透過性と区別します。
noteでトランザクションの基本を復習する
分散したデータでも更新の正しさが重要です。トランザクション教材でACIDや同時実行などの基本を復習しましょう。リンク先は基礎学習用で、分散合意や個別製品の透過性の実装を専門に扱う資料ではありません。


コメント