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

開発チームはAmazon DynamoDBを使用してユーザーのアクティビティログを管理するアプリケーションを構築しています。既存のテーブルには`UserId`(パーティションキー)と`Timestamp`(ソートキー)が設定されています。開発チームは、テーブル作成後にも追加可能で、強力な整合性(Strongly Consistent)の読み込みを必要とせず、別の属性`ActivityType`を検索キーとしてクエリを実行できる設計を求めています。この要件を満たす最も適切なDynamoDBのインデックス構成はどれですか。

A
既存のテーブルにローカルセカンダリインデックス(LSI)を追加し、パーティションキーをUserId、ソートキーをActivityTypeに設定する。
ローカルセカンダリインデックス(LSI)はテーブルの作成時のみ定義可能であり、既存のDynamoDBテーブルに対して後から追加することはできません。またLSIはベーステーブルと同じパーティションキーを使用する必要があります。
B
既存のテーブルにグローバルセカンダリインデックス(GSI)を追加し、パーティションキーをActivityTypeに設定する。
✓ 正解
グローバルセカンダリインデックス(GSI)は既存のDynamoDBテーブルに対していつでも追加可能であり、ベーステーブルと異なるパーティションキー属性を指定できます。結果整合性のみの読み込み要件を満たします。
C
既存のテーブルを削除し、LSIとGSIの両方を事前に定義した上で新しいDynamoDBテーブルを再作成する。
既存テーブルに対してGSIを追加可能であるため、テーブルを削除して再作成する必要はありません。無駄なデータの修正やダウンタイムが発生するため不適切です。
D
テーブルの検索操作をすべてScanオペレーションに変更し、FilterExpressionを使用してActivityTypeでフィルタリングする。
ScanオペレーションでFilterExpressionを使用すると、テーブル全体のデータを読み取った後にフィルタリングするため、大量データ検索時のスループット消費とレイテンシが増大し不適切です。

解説

グローバルセカンダリインデックス(GSI)はテーブル作成後でも任意に追加・削除が可能であり、ベーステーブルとは異なるパーティションキーおよびソートキーを指定できます。GSIは結果整合性(Eventual Consistency)のみをサポートしますが、本要件では強力な整合性が不要であるため最適な解決策です。LSIはテーブル作成時にのみ定義可能であり、既存テーブルに追加することはできません。また、Scanオペレーションはテーブル全体を走査するためパフォーマンス面・コスト面で不適切です。

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

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

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