【学習記録】DynamoDBの読み込み整合性について勉強

DynamoDBによく出てくる「読み込み整合性」とか「結果整合性のある読み込み」とか「strong consistency」という概念がよくわからなかったので調べました。
公式ドキュメントはこちらを読みました。

docs.aws.amazon.com

以下の文言が公式ドキュメントにあるように、DynamoDBでは直近の書き込みが反映されずにRead処理の結果が返ってくることがあるようです。

DynamoDB テーブルからの読み込みオペレーションの応答には、最近完了した書き込みオペレーションの結果が反映されていないことがあります。応答には古いデータが含まれる場合があります。少し時間がたってから読み込みリクエストを繰り返すと、応答で最新のデータが返されます。

この挙動は結果整合性のある読み込み(Eventually Consistent Reads)」と呼ばれるらしく、DynamoDBのデフォルトの設定とのこと。

これとは逆に、全ての書き込み結果を返すモードを「強力な整合性のある読み込み(Strongly Consistent Reads)」と呼ぶそうです。

強力な整合性のある読み込みをリクエストすると、DynamoDB は成功した以前のすべての書き込みオペレーションからの更新が反映された最新データの応答を返します。

また、強力な整合性のある読み込みでは以下のような欠点があるとのこと。

強力な整合性のある読み込みは、ネットワークの遅延または停止があった場合には利用できなくなる可能性があります。この場合、DynamoDB はサーバーエラー (HTTP 500) を返す場合があります。

強力な整合性のある読み込みでは、結果整合性のある読み込みよりもレイテンシーが高くなる場合があります。

グローバルセカンダリインデックス (GSI) では、強力な整合性のある読み込みはサポートされていません。

強力な整合性のある読み込みでは、結果整合性のある読み込みよりも多くのスループット容量が使用されます。詳細については、読み込み/書き込みキャパシティーモード を参照してください。