DVA-C02トラブルシューティングと最適化HARD単一選択

あるチームがDynamoDBのグローバルセカンダリインデックス(GSI)を活用した検索機能を開発した。テーブルへの書き込みが正常に完了しているのに、GSIへのクエリで最新データが返ってこないという問題が発生した。原因として最も適切な説明はどれか。

  1. A. GSIに設定したプロジェクション属性が不足しており、検索対象の属性がGSIに含まれていない
  2. B. GSIの作成後にテーブルに書き込んだデータはGSIに反映されないため、再構築が必要
  3. C. DynamoDBのGSIはベーステーブルへの書き込みに対して非同期的に更新されるため、書き込み直後はGSIに反映されていない場合がある
  4. D. GSIのキャパシティユニットがベーステーブルよりも少なく、GSIへの更新がスロットリングされている
解答と解説を見る

正解: C

DynamoDBのGSI(グローバルセカンダリインデックス)への反映は非同期(結果整合性)で行われる(選択肢C)。ベーステーブルへの書き込みが成功した直後にGSIをクエリしても、伝播が完了するまでの数ミリ秒〜数秒の間、最新データが見えないことがある。これはDynamoDBのGSIの根本的な設計特性であり、強整合性読み取り(ConsistentRead=true)はGSIに対しては使用できない。選択肢BはGSI作成後のデータは問題なく反映されるため誤り。選択肢Aのプロジェクション属性不足は別のエラー(属性が見えない)であり、最新データが返ってこないとは異なる問題。選択肢DのGSIキャパシティ不足は書き込みエラー(ConsumedWriteCapacityUnits過超)を引き起こすが、書き込みが「正常に完了している」という前提に反する。結果整合性が要件を満たさない場合は、LSI(ローカルセカンダリインデックス)を使うか、ベーステーブルへの直接クエリを設計し直す必要がある。

▸ この試験を本気で演習する(全150問・無料)