あるフラッシュセール EC サイトが Amazon DynamoDB(プロビジョニング済みキャパシティモード)を使用して商品在庫と注文データを管理しています。パーティションキーは product_id です。テーブル全体の WCU を十分に設定しているにもかかわらず、フラッシュセール中に特定の 3 商品への書き込みが集中し ProvisionedThroughputExceededException が発生しています。DynamoDB の内部パーティション上限によるホットパーティション問題が原因です。この問題を最も効果的に解決するアーキテクチャの変更はどれですか?
DynamoDB のホットパーティション問題は、同一パーティションキーへのリクエスト集中が内部パーティション上限(書き込み 1,000 WCU)を超えることで発生する。テーブル全体の WCU を増やしてもホットパーティションは解消されない。書き込みシャーディング(Write Sharding)では、パーティションキーにランダムサフィックス(例: product_id_3)を付加して物理的に異なるパーティションへ書き込みを均等分散する。読み取り時はすべてのサフィックスに対してパラレルクエリを実行し結果を集約する。 選択肢B の DAX(DynamoDB Accelerator)はマイクロ秒レベルの読み取りキャッシュを提供するが、書き込みスロットリングには効果がなく、ホットパーティションへの書き込み集中は解消されない。 選択肢C のグローバルテーブルは複数リージョンへのデータ複製機能で、同一パーティションキーへの書き込み集中という問題を解決しない。各リージョンで同じホットパーティション問題が発生する。 選択肢D のオンデマンドキャパシティモードは急激なトラフィック変化への対応には有効だが、DynamoDB 内部パーティション上限は変わらないため、特定パーティションへの継続的な書き込み集中の根本解決にはならない。