Azure認定資格 WEB問題集&徹底解説

DP-900:Microsoft Azure Data Fundamentals

正解 C問題
分野1:データの主要概念の説明 タスクステートメント1.2:データストレージのオプションの特定
合格に向けて、もっと深く学習する
豊富な問題と詳細なAzureサービス解説を、1 時間無料でお試しいただけます
プレミアム会員機能を無料で試す ❯
問題文と選択肢
あるオンライン雑貨店では、商品カタログを Azure Cosmos DB のような非リレーショナル型のデータストアに格納する設計を検討している。取り扱う商品カテゴリ(家電・アパレル・食品など)ごとに保持したい属性の数や項目名が大きく異なり、新しいカテゴリを追加するたびにスキーマを事前に固定したくない。また、1つの商品に関するすべての属性を、テーブル結合を行わずに1回の読み取りでまとめて取得できるようにしたい。
このような要件に最も適した非リレーショナルデータストアの種類はどれか。
  • グラフ
  • 列指向(ワイドカラム)
  • ドキュメント
  • キーバリュー
解説 頻出度★★★★★
この問題は、「項目ごとに属性が異なる(スキーマ固定なし) × 1エンティティの全属性を結合なしで1回の読み取り」という要件から、非リレーショナルの 4 モデル(キーバリュー・ドキュメント・列指向・グラフ)のうちドキュメントを選べるかがポイント

A. グラフ

グラフは、エンティティをノード、関係をエッジとして保持し、「友人の友人」「部品の依存関係」のようにつながりをたどる問い合わせに最適化されたモデルです。
本問の要件は「1つの商品の属性をまとめて読む」ことであり、商品同士の関係をたどる処理は求められていません。
関係の探索が主眼でない用途にグラフを選ぶと、モデリングと運用の複雑さだけが増えます。

B. 列指向(ワイドカラム)

列指向(ワイドカラム)は、行を列ファミリ単位に整理し、疎で横に広いデータの特定の列群だけを高速にスキャンすることや、大量の書き込みを受けることに強いモデルです。IoT テレメトリや事前集計などが代表的な用途になります。
列ファミリという枠組みをあらかじめ設計する必要があり、「カテゴリごとに項目名ごと自由に変えたい」「1商品を丸ごと1回で取りたい」という本問の要件には素直に合いません。

正解

C. ドキュメント

ドキュメントデータストアは、1件のエンティティを JSON などの1つのドキュメントとして格納し、ドキュメントごとに異なるフィールドを持てる(スキーマの固定が不要)モデルです。
関連する属性を非正規化して1つのドキュメントにまとめられるため、結合なしの1回の読み取りで商品の全属性を取得できます。
公式ドキュメントでも、ドキュメントデータストアの代表的なワークロードとして製品カタログ・コンテンツ管理・プロファイルストアが挙げられており、本問の要件にそのまま合致する唯一の選択肢です。Azure では Azure Cosmos DB for NoSQL がこのモデルにあたります。

D. キーバリュー

キーバリューは、一意のキーに対して値を1つ関連付けるだけの単純なモデルで、値の中身はストア側から見ると不透明です。サポートされるのは基本的にキー指定の取得・格納・削除で、値の一部だけを更新するにも値全体を書き換える必要があります。
「カテゴリごとに属性名が異なる」「属性を意識して扱いたい」という要件を表現できず、キャッシュやセッション状態のような用途に向いたモデルです。

これだけ覚える(記憶フック)
商品カタログ=ドキュメント。「項目ごとに属性がバラバラ」「1件まるごと1回で読む」ならJSON文書。
正解への思考ルート 問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。
要件 判断ポイント
カテゴリごとに属性の数や項目名が大きく異なる 項目ごとにフィールドが違ってよい(読み取り時スキーマ)のはドキュメント。列ファミリの事前設計が要る列指向や、値が不透明なキーバリューは扱いにくい
→選択肢(B・D)を消す
新しいカテゴリ追加時にスキーマを事前固定したくない リレーショナルの「書き込み時スキーマ」ではなく柔軟なスキーマを求めている。非リレーショナルの中でどれかを選ぶ問題
→選択肢(A・B・C・D)は候補
1商品の全属性を結合なしで1回の読み取りで取得したい 関連属性を1つのドキュメントに非正規化してまとめられるドキュメントモデルが該当。エンティティ単位の集約アクセスが得意
→選択肢(C)が正解
商品同士のつながりをたどる要件は書かれていない グラフは関係の探索(トラバーサル)が主眼のモデル。関係を問わない本問では過剰かつ不適
→選択肢(A)を消す
ひっかけポイント
  • 「非リレーショナル=何でも柔軟」で片付けると選べない。柔軟なスキーマを持つモデルは複数あるので、決め手は「1エンティティを丸ごと1回で読む」というアクセスパターンの方
  • 列指向(ワイドカラム)も列を動的に足せるため紛らわしいが、列ファミリの設計が前提で、得意なのは「多数の行の特定列をスキャンする」用途。1件まるごとの取得を狙うモデルではない
  • キーバリューは「高速だから万能」に見えるが、値の中身は不透明で属性単位の扱いができない。値の一部を直したいだけでも全体を上書きする必要がある
  • 設問に出てくる Azure Cosmos DB はマルチモデルのため「Cosmos DB=ドキュメント」と丸暗記すると事故る。問われているのはデータストアの種類であり、サービス名ではない
出題バリエーション 同じ知識が本番では条件を変えて出題されます。
問題文がこう変わったら 正解はこう変わる
「利用者どうしのつながりから推薦を出したい」 グラフが正解軸に(Azure では Azure Cosmos DB for Apache Gremlin)。
「セッション状態をキー指定で読み書きするだけ、高速性最優先」 キーバリューが正解軸に(Azure Table Storage・Azure Managed Redis)。
「数百万台のセンサーから時系列テレメトリを大量書き込みし、一部の列だけ集計したい」 列指向(ワイドカラム)や時系列データストアが正解軸に。
「商品と注文と顧客を正規化して整合性を厳密に保ちたい」 非リレーショナルではなくリレーショナル(Azure SQL Database 等)が正解軸に。
関連サービスの解説 Azure Cosmos DB
リファレンス この問題を解くために必要な知識を扱う公式ドキュメントです。
知識項目 公式ドキュメント
非リレーショナルの 4 モデル(ドキュメント・キーバリュー・列ファミリ・グラフ)の使い分け データ モデルについて - Azure Architecture Center
+ 質問 / コメント
解答・解説に疑問がある場合や、よりよい解説がある場合など、お気軽にコメントください。ただし、短文コメントは表示されません。また、中傷などコメントの内容によっては、会員機能を停止させて頂きます。教え学び合える場になれば嬉しいです。(コメント投稿にはログインが必要です)
正答率 0%
No.4 解説
あるオンライン雑貨店では、商品カタログを Azure Cosmos DB のような非リレーショナル型のデータストアに格納する設計を検討している。取り扱う商品カテゴリ(家電・アパレル・食品など)ごとに保持したい属性の数や項目名が大きく異なり、新しいカテゴリを追加するたびにスキーマを事前に固定したくない。また、1つの商品に関するすべての属性を、テーブル結合を行わずに1回の読み取りでまとめて取得できるようにしたい。
このような要件に最も適した非リレーショナルデータストアの種類はどれか。
  • グラフ
  • 列指向(ワイドカラム)
  • ドキュメント
  • キーバリュー

(会員限定)当問題の評価をお願いします。改善に活用します。