DynamoDBの結果整合性について

DynamoDBとは

AWSのマネジメントサービスの1つである、NoSQLデータベースです。

結果整合性とは

DynamoDBはデータを3つのAZに分散して保存しており、ユーザーがデータを更新した場合3つのAZのうち2つのAZへの書き込みが終了した時点で応答を返す仕様のことである。通常は残りの1つのAZも1秒以内にはデータが更新される。

結果整合性が採用されている理由

調査中。

結果整合性による不都合

例えば、データの更新をおこなってからすぐ(1秒以内)に更新データの読み取りを行う場合、更新が反映されていないAZのデータを読み込んでしまう可能性がある。

対策

  1. 強力な整合性オプションをオンにする
    これによって、必ず3つのAZのデータが更新されてから応答を受け取ることが可能となる。
    キャパシティユニットは2倍となり、それにともない料金も上がる。
  2. 処理間に待ち時間を入れる
    応答を受け取ってから次の処理を行うまでに待ち時間(1秒程度)を入れることによってすべてのAZのデータが更新されてから処理することが可能となる。