IPA 分散DB・NoSQL — 頻出論点と過去問

頻出論点

1. この分野は何か

データを複数のコンピュータに分散して配置・処理する仕組みと、関係データベース以外の多様なデータモデルを扱う分野です。すべての拠点で即座に厳密な一貫性を保つ方式と、一時的な不一致を許容してでも処理を止めない方式の違いや、データの構造に応じた格納方式の使い分けが中心になります。

2. 実際の出題のされ方

データベースを別のコンピュータへ写し、内容を合わせ続ける機能の名前を選ばせる問題があります。この基本用語の識別はITパスポートで問われています。

CAP定理・BASE特性・透過性・NoSQLのデータモデルについては、応用情報技術者の午前と高度試験の午前Iの両方でその定義や分類を問う問題が見られます。JSON形式のように項目数や構造が定まらないデータの格納先を選ぶ問題や、行ごとに任意の列数を持てるモデルを選ぶ問題、NoSQLに分類されるものを選ぶ問題が出ています。また、2相コミットで参加者が自分では決められなくなる障害のタイミングを選ぶ問題も応用情報技術者の午前に出ています。

データベーススペシャリストの午前IIでは、複数のサイトにまたがる処理の確定のさせ方や、データの先頭の文字で定めた規則に従い複数のノードに割り当てる方法の名前、プロパティグラフの構成要素まで踏み込みます。

2相コミットの正常な流れを示したシーケンス図の空欄補充はITサービスマネージャの午前IIで、磁気ディスクを共有する構成と分割する構成の比較はシステムアーキテクトの午前IIで出題されています。

3. 学習のポイント

分散環境で一貫性と可用性のどちらを優先するかによって、制御の仕組みは大きく分かれます。

  • 2相コミットプロトコル: 複数のサイトにまたがる1つのトランザクションを、全サイトで確定するか全サイトで取り消すかのどちらかにそろえる手法です。第1相(準備フェーズ)で調停者(コーディネータ、主サイト)がすべての参加者(パーティシパント、従サイト)へコミットできるかを問い合わせ、各参加者が準備完了を応答します。第2相(決定フェーズ)では、全員から可能という応答が集まった場合のみ調停者がコミットを指示し、1つでも不可や応答なしがあれば全員にロールバックを指示します。なお、参加者が身動きを取れなくなるブロッキングは、第1相で準備完了と答えたあと、第2相の決定を受け取るまでのあいだに調停者との通信が途切れたときに起き、この参加者はロックを持ったまま決定を待ち続けます。
  • CAP定理: ノード間の通信が途切れているあいだは、どのノードでも最新の同じ値を返す整合性(Consistency)と、障害のないノードが必ず応答を返す可用性(Availability)を両立できない、という分散システムの制約です。そのため、通信の分断に耐える分断耐性(Partition tolerance)を前提としたとき、分断が起きた際に整合性と可用性のどちらを諦めるかを設計で決めておきます。
  • BASE特性: ACID特性のような厳密な一貫性よりも可用性と分断耐性を重視する考え方で、Basically Available(基本的な可用性)、Soft state(柔軟な状態)、Eventually consistent(結果整合性)の頭文字をとったものです。結果整合性では、更新を受けたノードからほかのノードへの反映に時間差があることを認めます。その間は、読むノードによって古い値が返ることがあり、新しい更新が止まれば、やがてどのノードも同じ値にそろいます。

データを複数サーバに配置する方式と透過性、クラスタ構成も対で押さえておきます。

  • 配置方式とクラスタ構成: 同じデータの複製を複数ノードに置いて同期するレプリケーションと、データをいくつかの部分に分け、ノードごとに別々の部分を持たせるシャーディング(水平分割)があります。クラスタ構成では、全サーバが磁気ディスクを共有してどこからでも全データにアクセスできるシェアードエブリシングと、データを分けて各サーバに割り当て、どのサーバも自分の受け持ち分だけを読み書きするシェアードナッシングを区別します。
  • 分散データベースの透過性: データがどこに、いくつ、どう分けて置かれているかを、利用者のプログラムから見えなくする性質です。表を分けて別々のサーバに置いても、同じ表を複数のサーバに持たせても、プログラムは書き換えずに済みます。

NoSQLのデータモデルは、何をキーにして何を取り出すかと、構造をいつ決めるかで4種類を見分けます。

データモデル 構造の特徴
キーバリュー型 キーを渡すと値を丸ごと返します。値の中身はデータベース側では解釈しません。
ドキュメント型 JSONなどの入れ子のデータを1件のまとまりとして保存し、中の項目でも検索できます。件ごとに項目が違ってかまいません。
ワイドカラム型 行キーの下に列を必要な分だけ持たせます。行によって列の数や種類が違ってかまいません。
グラフ型 頂点と、頂点どうしを結ぶ辺でつながりを表し、複雑なつながりをたどる処理に向いています。

4. 間違えやすいところ

2相コミットについて、全サイトの了承がそろったあとでも、主サイトがサイトによって違う結果を指示することがあるとする誤答肢がありました。全サイトの結果を一つにそろえることが2相コミットの役割なので、了承がそろったあとでサイトごとに異なる指示が出されることはありません。

BASE特性をもつシステムの説明として、クライアントの更新を2相コミットで全ノードに反映させるという誤答肢がありました。2相コミットが保証するのは、参加する全サイトでコミットするか取り消すかの決定をそろえる原子性であり、反映の時刻まで同時にするものではありません。それでも、結果の不一致を時間差として許容するBASE特性とは考え方が逆です。

プロパティグラフでは、頂点だけでなく、頂点を結ぶ関係の側にも属性を持たせられます。関係には属性を持たせられないとする誤答肢がありました。

分散DB・NoSQLの理解度チェック

分散DB・NoSQLの過去問一覧

データベースのほかの論点

SQL・関係代数53問 データモデル・E-R/UML・キー37問 正規化・関数従属19問 トランザクション・同時実行制御30問 障害回復・バックアップ26問 インデックス・物理設計11問