無限ノック › DVA 練習問題一覧 › 問題
DVAAWSのサービスを使用した開発

eコマース企業がDynamoDBを使ったフラッシュセール(タイムセール)システムを構築しています。セールイベントIDをパーティションキー(`sale_id`)、ユーザーIDをソートキー(`user_id`)として設計しました。しかし人気セール開始直後に特定の `sale_id` への書き込みが急増し、オンデマンドキャパシティモードに変更しても `ThrottlingException` が発生し続けています。この問題の根本原因と解決策として最も適切なものはどれですか?

A
`user_id` をパーティションキーに、`sale_id` をソートキーに変更したグローバルセカンダリインデックス(GSI)を追加し、書き込みをGSIに分散させる
GSIはクエリパターンを拡張しますが、ベーステーブルへの書き込みは引き続き `sale_id` パーティションに集中するためホットパーティション問題は解消されません。
B
パーティションキーに1〜10のランダムな数値サフィックスを付加(例: `sale_id#7`)して書き込みを複数パーティションに分散させ(Write Sharding)、読み取り時はすべてのサフィックスに対して並列クエリを実行し結果を統合する
✓ 正解
これはDynamoDBの「ホットパーティション」問題です。DynamoDBはデータをパーティションキーのハッシュ値でパーティションに分散しますが、同一の `sale_id` に書き込みが集中すると単一パーティションの上限(約1,000 WCU/秒)を超えます。オンデマンドモードでもパーティション単位の上限は存在します。Write Sharding(書き込みシャーディング)によりランダムサフィックスを付加することで書き込みを複数パーティションに分散できます。
C
テーブルのキャパシティモードをプロビジョニング済みモードに変更し、Read/Write Capacity Unitsを大幅に引き上げる
キャパシティ増加はパーティション単位の物理的な上限を変更するものではなく、ホットパーティション問題は解消しません。
D
DynamoDB Accelerator(DAX)をキャッシュ層として追加し、書き込みスループットのボトルネックを解消する
DAXは読み取りキャッシュであり、書き込みスロットリングには効果がありません。

解説

これはDynamoDBの「ホットパーティション」問題です。DynamoDBはデータをパーティションキーのハッシュ値でパーティションに分散しますが、同一の `sale_id` に書き込みが集中すると単一パーティションの上限(約1,000 WCU/秒)を超えます。オンデマンドモードでもパーティション単位の上限は存在します。Write Sharding(書き込みシャーディング)によりランダムサフィックスを付加することで書き込みを複数パーティションに分散できます。 選択肢AのGSIはクエリパターンを拡張しますが、ベーステーブルへの書き込みは引き続き `sale_id` パーティションに集中するためホットパーティション問題は解消されません。 選択肢Cのキャパシティ増加はパーティション単位の物理的な上限を変更するものではなく、ホットパーティション問題は解消しません。 選択肢DのDAXは読み取りキャッシュであり、書き込みスロットリングには効果がありません。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DVA の問題一覧に戻る