DynamoDB の読み取り整合性
Amazon DynamoDB は、テーブル、ローカルセカンダリインデックス (LSI)、グローバルセカンダリインデックス (GSI)、およびストリームからデータを読み取ります。詳細については、「Amazon DynamoDB のコアコンポーネント」を参照してください。テーブルと LSI のどちらにも、結果整合性のある読み込み (デフォルト) と強力な整合性のある読み込みという 2 つの読み込み整合性オプションが用意されています。GSI とストリームからのすべての読み取りは、結果整合性のある読み込みです。
アプリケーションが DynamoDB テーブルにデータを書き込み、HTTP 200 応答 (OK) を受信した場合、これは書き込みが正常に完了し、永続的に保持されたことを意味します。DynamoDB は、コミット済み読み取り分離を提供し、読み取りオペレーションが常に項目のコミット済みの値を返すようにします。読み取りでは、最終的に成功しなかった書き込みの項目に対してビューが表示されることはありません。コミット済み読み取り分離では、読み取りオペレーションの直後に項目の変更が防止されません。
結果整合性のある読み込み
結果整合性のある読み込みは、すべての読み取りオペレーションのデフォルトの読み込み整合性モデルです。DynamoDB テーブルまたはインデックスに対して結果整合性のある読み込みを発行すると、最近完了した書き込みオペレーションの結果が応答に反映されない場合があります。少し時間が経ってから読み取りリクエストを繰り返すと、最終的に、より最新の項目が応答で返されるはずです。結果整合性のある読み込みは、テーブル、ローカルセカンダリインデックス、およびグローバルセカンダリインデックスでサポートされています。また、DynamoDB ストリームからのすべての読み取りも、結果整合性のある読み込みであることに注意してください。
結果整合性のある読み込みは、強力な整合性のある読み込みの半分のコストで済みます。詳細については、「Amazon DynamoDB 料金
強力な整合性のある読み込み
読み取りオペレーション (GetItem、Query、Scan など) には、オプションの ConsistentRead パラメータがあります。ConsistentRead を true に設定すると、DynamoDB は、成功した以前のすべての書き込みオペレーションからの更新を反映した、最新データを含む応答を返します。強力な整合性のある読み込みは、テーブルとセカンダリインデックスでのみサポートされています。グローバルセカンダリインデックスまたは DynamoDB ストリームからの強力な整合性のある読み込みはサポートされていません。
グローバルテーブルの読み込み整合性
DynamoDB は、マルチアクティブおよびマルチリージョンのレプリケーション用のグローバルテーブルもサポートしています。グローバルテーブルは、異なる AWS リージョン間の複数のレプリカテーブルで構成されています。レプリカテーブル内の項目に加えられた変更は、同じグローバルテーブル内の他のすべてのレプリカにレプリケートされます。
グローバルテーブルは、2 つの整合性モードをサポートしています。マルチリージョンの結果整合性 (MREC) はデフォルトモードであり、項目の変更は通常 1 秒以内に他のレプリカにレプリケートされ、リージョン間で結果整合性が保たれます。マルチリージョンの強力な整合性 (MRSC) では、書き込みが返される前に項目の変更が別のリージョンに同期的にレプリケートされ、すべてのレプリカでの強力な整合性のある読み込みオペレーションは、常に項目の最新バージョンを返します。詳細については、「整合性モード」を参照してください。