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

以下の記事を読んで「ISRが使われる結果整合性ってどういうこと?」と思ったのがきっかけ
前提知識
CAP定理
→分散システムにおけるDBの特性
要素 | 説明 |
---|---|
Consitency |
一貫性のこと。 データ更新したらアクセスする全てのクライアントが必ず更新されたデータを取得できることを保証する |
Availability |
可用性のこと。 常にサービスにアクセスできることを保証する |
Partition tolerance |
ネットワーク分断耐性のこと。 DBが一つ壊れたとしてもシステム全体が問題なく動作し続けることを保証する |

ナニモワカラナイ状態からナントナクワカル状態になったのはこの記事
更新されたデータは常に即時反映されるべきだよねという思想があり、
それはそうだけどそんなことやってたら更新の際にDBがロックされるので可用性が下がるしそれってホントに良いことなんだっけ?
それでも即時性、一貫性が必要な場面はあるからデータに応じて柔軟に対応する必要がありそう
強整合性 | 結果整合性 | |
---|---|---|
データのロック | あり | なし |
スケーラビリティ | 低い | 高い |
一貫性 | 担保される | すぐには担保されない |

強整合性 の場合、データの更新の際にデータベースをロックすることによってデータの一貫性(Consistency)を担保するが、ロックされる期間が長いほどその間のデータベース・アクセスがブロックされ、可用性(Availability)を犠牲にすることになる。
結果整合性 はデータの更新でデータベースがロックされることはないため、可用性とスケーラビリティを維持することができる。その代わりノード間でのデータの一貫性はデータ複製にかかる時間に依存することになるため、必ずしも担保されない。

【結論】
強整合性
: 可用性よりもデータの一貫性を意識したモデル
結果整合性
: データの一貫性よりも可用性とスケーラビリティを意識したモデル
データの信頼性が求められる場面(ユーザ情報の更新 等)では強整合性が採用され、そのほかのユーザからのアクセスが多い箇所は結果整合性が採用される
このスクラップは2021/10/11にクローズされました