DP-900Azure の非リレーショナル データMEDIUM単一選択

ある小売チェーンが、各店舗の在庫データ(品番、数量、最終更新日時)を Azure Table Storage で管理している。「品番 ABC123 の全店舗在庫を取得するクエリ」と「店舗 ID S001 の全品目在庫を取得するクエリ」をどちらも効率的に実行できるキー設計として最も適切なものはどれか。

  1. A. パーティションキー: 品番+店舗 ID の連結、ロウキー: タイムスタンプ — どちらのクエリも非効率になる
  2. B. パーティションキー: 店舗 ID、ロウキー: 品番 — 店舗での取得は効率的だが品番での取得はフルスキャンになる
  3. C. パーティションキー: 品番、ロウキー: 店舗 ID のエントリと、パーティションキー: 店舗 ID、ロウキー: 品番のエントリを両方保持する(重複格納)
  4. D. パーティションキー: 品番、ロウキー: 店舗 ID — 品番での取得は効率的だが店舗での取得はフルスキャンになる
解答と解説を見る

正解: C

Azure Table Storage は単一のパーティションキー・ロウキー構造のみでインデックスが決まるため、設計上どちらのクエリも効率的にカバーする単一キー設計は存在しない。この制限に対処する標準パターンは「同じデータを異なるキー設計で 2 つのテーブルまたはエンティティとして重複格納する」アプローチである。書き込みコストは増えるが、両方のクエリパターンを効率的なパーティションクエリで実行できる。選択肢 D は品番クエリには効率的だが店舗クエリはクロスパーティションになり全スキャンになる。選択肢 B は逆に店舗クエリには効率的だが品番クエリが全スキャンになる。選択肢 A の連結キーはどちらのクエリも効率的に実行できない最悪の設計である。

▸ この試験を本気で演習する(全150問・無料)