Closed4

結果整合性と強整合性について

mu-sukemu-suke

以下の記事を読んで「ISRが使われる結果整合性ってどういうこと?」と思ったのがきっかけ

https://qiita.com/thesugar/items/47ec3d243d00ddd0b4ed#ssg-とその他手法の比較

https://twitter.com/chibicode/status/1299491612628664321?ref_src=twsrc^tfw|twcamp^tweetembed|twterm^1299491612628664321|twgr^|twcon^s1_c10&ref_url=https%3A%2F%2Fqiita.com%2Fthesugar%2Fitems%2F47ec3d243d00ddd0b4ed

前提知識

CAP定理
→分散システムにおけるDBの特性

要素 説明
Consitency 一貫性のこと。
データ更新したらアクセスする全てのクライアントが必ず更新されたデータを取得できることを保証する
Availability 可用性のこと。
常にサービスにアクセスできることを保証する
Partition tolerance ネットワーク分断耐性のこと。
DBが一つ壊れたとしてもシステム全体が問題なく動作し続けることを保証する
mu-sukemu-suke

ナニモワカラナイ状態からナントナクワカル状態になったのはこの記事

更新されたデータは常に即時反映されるべきだよねという思想があり、
それはそうだけどそんなことやってたら更新の際にDBがロックされるので可用性が下がるしそれってホントに良いことなんだっけ?

それでも即時性、一貫性が必要な場面はあるからデータに応じて柔軟に対応する必要がありそう

強整合性 結果整合性
データのロック あり なし
スケーラビリティ 低い 高い
一貫性 担保される すぐには担保されない

https://izumisy.work/entry/2018/06/11/224719

mu-sukemu-suke

強整合性 の場合、データの更新の際にデータベースをロックすることによってデータの一貫性(Consistency)を担保するが、ロックされる期間が長いほどその間のデータベース・アクセスがブロックされ、可用性(Availability)を犠牲にすることになる。

結果整合性 はデータの更新でデータベースがロックされることはないため、可用性とスケーラビリティを維持することができる。その代わりノード間でのデータの一貫性はデータ複製にかかる時間に依存することになるため、必ずしも担保されない。

mu-sukemu-suke

【結論】

強整合性: 可用性よりもデータの一貫性を意識したモデル
結果整合性: データの一貫性よりも可用性とスケーラビリティを意識したモデル

データの信頼性が求められる場面(ユーザ情報の更新 等)では強整合性が採用され、そのほかのユーザからのアクセスが多い箇所は結果整合性が採用される

このスクラップは2021/10/11にクローズされました