自由気ままに書いちゃおう

好きなことをつらつらと・・・

【AWS】結果整合性と強整合性について

データベースの整合性モデルについてです。

■整合性モデルとは?

同時に複数の人がテーブル情報にアクセスした際の取り決めのことです。
取り決め内容は、
・変更中のデータの参照可否、更新可否
になります。

■整合性モデルの分類

整合性モデルの中で出現頻度が高い用語は、
① 結果整合性
② 強整合性(強い整合性、強力な整合性)
というものです。
詳細は後述致します。

■① 結果整合性

変更中のデータが完了していない間も、他の人は古いデータを参照できることを表します。
つまり、他の人からすると、「参照しているデータが古い可能性がある。古いデータを参照してしまうことがある。」ということを意味します。

ただし、最終的には(=このことから、結果整合性と呼ばれる)、更新したデータは更新後のデータに反映されるため、一時的に古いデータが参照される可能性があることを許容できる場合には問題ありません。

■② 強整合性(強い整合性)

変更中のデータが完了するまで、他の人は古いデータが参照できないことを表します。

つまり、他の人がアクセスできたデータは一貫性(整合性)が保たれているということを意味します。
もう少しかみ砕くと、「見ているデータは最新のものである」ということを保証している、となります。

例としてDynamoDBでは、書き込み内容が複数のAZにレプリケーションされますが、全てのレプリケーションのデータ内容を確認/比較し、最新データを特定後にその結果をクライアントに返す、のような動きをします。この動きにより、「最新データである」という内容が担保されるような感じです。

■補足

整合性モデルは優劣が付けられるものではなく、
データベースの用途や特性により、使い分けることになります。
DynamoDBの

読み込み整合性 - Amazon DynamoDB

が参考になるかもです。



以上です。