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生成のオリジナル問題。
無料で演習を始める →