DVAAWSのサービスを使用した開発
IoTアプリでデバイスのテレメトリをDynamoDBに保存しています。パーティションキーをDeviceType(数種類のみ)にしたところ、特定の人気デバイスタイプに書き込みが集中し、ProvisionedThroughputExceededException(ホットパーティション)が頻発しています。スループットを均等に分散させる最も適切な設計変更はどれですか。
AパーティションキーをDeviceType、ソートキーをTimestampにしてアクセスを時系列で分散する
ソートキーを追加してもパーティションへの振り分けはパーティションキー(DeviceType)のハッシュで決まるため、特定タイプへの集中は変わりません。時系列クエリには有効ですが分散問題は解決しません。
BパーティションキーにDeviceIdなど高カーディナリティな属性を使い、書き込みを多数のパーティションに分散する
✓ 正解
パーティションキーのカーディナリティを上げるとハッシュ分散が効き、書き込みが多数の物理パーティションに均等に振り分けられます。DeviceIdを使えば人気デバイスタイプへの集中が解消され、ホットパーティション起因のスロットリングを根本的に解決できます。
C読み取りキャパシティを増やしてスロットリングを解消する
読み取りキャパシティの増加は書き込みのスロットリングとは無関係です。発生しているのは書き込み集中によるホットパーティションであり、RCUを増やしても問題は解消されません。
Dオンデマンドモードに変更せず、プロビジョンドのままWCUだけを2倍に増やす
WCUを増やしてもテーブル全体の総容量が増えるだけで、単一パーティションが受けられるスループット上限を超える集中は解消されません。ホットパーティションが残る限りスロットリングは続きます。
解説
DynamoDBはパーティションキーのハッシュでデータを物理パーティションに分散します。DeviceTypeのようにカーディナリティが低いキーは値の種類が少なく、特定の値に書き込みが集中してホットパーティションになります。DeviceIdのような高カーディナリティな属性をパーティションキーにすれば、書き込みが多数のキー値に分散し、各パーティションのスループットが均等化されてスロットリングを解消できます。
選択肢Aはソートキーを追加してもパーティションキーがDeviceTypeのままなので分散は改善されない。
選択肢Cは読み取り側の話で、書き込みのホットパーティション問題には無関係。
選択肢DのWCU増加は総容量を増やすだけで、単一ホットパーティションあたりの上限を超える集中は解消できない。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →