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

ある金融機関が Azure Cosmos DB for NoSQL を使って口座取引履歴を格納している。アプリケーションチームから「特定の口座 ID の最新 100 件の取引をミリ秒で取得できるようにしたい」という要件が提出された。パーティションキーの設計として最も適切なものはどれか。

  1. A. 取引 ID — 各取引を一意に識別できるが、特定口座の取引をすべて別パーティションに分散させてしまう
  2. B. 口座 ID — 同一口座の全取引が同一パーティションに集まり、口座単位クエリを高速化できる
  3. C. 取引日付(YYYY-MM-DD)— 同じ日の全取引がまとまるが、特定口座の取引を取得するにはクロスパーティションクエリが必要
  4. D. 取引金額の範囲(例: 0-1万, 1万-10万)— 金額帯でのレポートクエリが効率化される
解答と解説を見る

正解: B

Cosmos DB のパーティションキーは、最も頻繁に実行されるクエリのフィルター条件と一致させることが最善実践である。「特定の口座 ID の取引を取得する」クエリが主要パターンのため、口座 ID をパーティションキーにすると、同一口座の全取引が同一物理パーティションに格納され、クロスパーティションクエリを回避してミリ秒レベルのレイテンシを実現できる。選択肢 A の取引 ID はエンティティを一意に識別するが、口座 ID でのクエリを実行するたびにすべてのパーティションを横断するフルスキャンになり非効率である。選択肢 C の取引日付は日次レポートには有用だが、特定口座の取引取得には同様にクロスパーティション問題が発生する。選択肢 D の取引金額範囲はレポート目的での集計には使えるが、ホットパーティション(特定範囲への集中)が生じやすく主要クエリにも対応できない。

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