pulpul 日本の試験

データベーススペシャリスト 概念書 · データベース

データベース方式

要点と定義

データベース方式を選ぶときは、データの表現、配置、処理の要件を対応させます。関係データベースは表を中心にデータを表し、グラフデータベースはノードとその関係を中心に表します。データモデルは論理的な構造を示すもので、物理的な保存方法や性能は別に検討します。

プロパティグラフは、対象を表すノード、対象間を結ぶリレーションシップ、それぞれに付けるプロパティで構成します。リレーションシップにもプロパティを持たせられます。一つのリレーションシップは一つの開始ノードと一つの終了ノードを結び、複数の接続は別々のリレーションシップで表します。主語・述語・目的語のトリプルを使うトリプルストアとは表現方法が異なります。これらの要素と接続の読み取りが、グラフデータモデルの特徴を判断する基礎です。

データを規則に従って複数ノードへ分けて置くシャーディングは、分散配置の一方式です。キーの範囲やハッシュ値などを割当規則にできます。データの複製を複数ノードに保持するレプリケーションとは目的が異なります。シャーディングやコンシステントハッシングの細かな方式は、過去の出題で扱った補足です。範囲による分割と複製の違いを見分けることが、配置方法を判断する手掛かりになります。

ストアドプロシージャは、データベース管理システム(DBMS)に登録した処理をサーバ側で実行する仕組みです。一連のSQL処理をまとめて呼び出すことで、アプリケーションとDBMS間の通信回数や通信量を減らせる場合があります。これは過去の出題で扱った補足です。通信の削減は、実行計画の数、バッファ数、ディスク入出力回数が必ず減ることを意味しません。

適用条件と例

例えば、会員番号の範囲ごとに保存先を分けるのはシャーディングです。同じ会員データを複数ノードに置くのはレプリケーションです。分割規則を選ぶときは、アクセスの偏りも考慮します。分割しても特定の範囲に要求が集中すれば、負荷が均等になるとは限りません。

商品、店舗、購入の関係を扱うとき、商品や店舗をノード、購入をリレーションシップとして表せます。購入日時のように接続そのものに関する情報は、そのリレーションシップのプロパティにできます。ノードの属性と関係の属性を区別し、複数の接続は個々のリレーションシップで表します。

分散データベースの結合で通信を抑える方法として、セミジョイン法があります。過去の出題で扱った補足であり、結合キーを先に相手側へ送り、一致する行に絞ってから必要なデータをやり取りする考え方です。絞り込みで転送量を減らせる場合に有効です。相手側でほとんど行を絞れない場合は、通信削減の効果も小さくなり得ます。

属性が保存値か導出値かによって、値の求め方は変わります。例えば残高を期首残高と期間中の符号付き移動額の合計から求めるなら、勘定・移動・取引を対応付け、対象日までの行に絞ります。移動額だけの合計では期首残高が抜け、結合条件が欠ければ無関係な行が組み合わさるおそれがあります。

BASEは過去の出題で扱った補足です。この考え方では可用性を重視し、更新直後に全ノードで同じ値が読めるとは限りません。障害がなく更新が伝播すれば、いずれ反映されるという結果整合性を許容します。即時の一致が必要な処理と、反映の遅れを許せる処理とを区別します。

誤りやすい点

シャーディングはデータを分割して配置し、レプリケーションは複製を配置します。分割先を決める規則と、複数ノードにまたがる処理を調整する仕組みは役割が異なります。シャーディングやコンシistentハッシングの詳細は、過去の出題で扱った補足です。

ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。

アプリでこの節を読む