Azure非リレーショナル応用

あるSaaS企業がCosmos DBで顧客テナントのメタデータ(テナントID、契約情報、使用量統計)を管理しています。テナントごとに異なるデータ量があり、一部の大規模テナントのクエリが頻繁にホットパーティション化しています。企業が「パーティションキーを変更することなく」スケーラビリティを向上させたいと考えています。最適なアプローチはどれか?

A.パーティションキーの値に対して乱数プレフィックスを追加する「合成パーティションキー戦略」を導入し、ホットなテナントIDを複数の論理パーティションに分散させる← 正解
✓ 正解です。合成パーティションキー戦略(例:テナントID + 乱数プレフィックス)を導入することで、同一テナントのデータを複数の物理パーティションに分散させ、ホットパーティション化を軽減できます。クエリ時にはプレフィックスを含めて参照するため、パーティションキー自体の変更ではありません。
B.パーティション仕様の変更(パーティションキー自体の置き換え)は避けられない。代わりにRU(要求ユニット)を自動スケーリング設定にしてホットパーティション化の影響を緩和する
✗ パーティションキーを変更しない方針に矛盾しています。また自動スケーリングはホットパーティション化の根本的解決ではなく、単なるRU費用の増加につながります。
C.Cosmos DBではなくAzure Table Storageに移行する。Table Storageはパーティションキーの最適化により、自動的にホットパーティション化を回避する
✗ Table Storageも同じパーティションキー設計が必要であり、ホットパーティション化の問題を解決できません。むしろCosmos DBは複合的な解決策を提供します。
D.複数のコンテナーに分割し、各テナントサイズに応じた個別の専用コンテナーを作成する。小規模テナント用と大規模テナント用でスループット要件を分離できる
✗ 複数コンテナー化は運用複雑性が増し、テナント管理が困難になります。テナント数が数千を超える場合、スケーラビリティの観点から不現実的です。

この問題のポイント

合成パーティションキー戦略(例:テナントID + 乱数プレフィックス)を導入することで、同一テナントのデータを複数の物理パーティションに分散させ、ホットパーティション化を軽減できます。クエリ時にはプレフィックスを含めて参照するため、パーティションキー自体の変更ではありません。

DP-900:Microsoft Azure Data Fundamentals の問題一覧