結果整合性
Eventual Consistency/けっかせいごうせい
ひとことで言うと
今すぐではなく、時間が経てば全コピーのデータが同じ値に落ち着く、というゆるやかな整合性の考え方です。
📖 もうちょい詳しく
何が新しいの?
データを世界中の複数のサーバーに分けて持つと、書き換えた瞬間に「どのサーバーも同じ値」とそろえるのが重くなります。結果整合性は、その「すぐにそろえる」をあえてゆるめた考え方です。書き込みは速く受け付け、各コピーのつじつまは少し遅れて合わせます。
どうやって動いてるの?
あるサーバーがデータを書き換えると、その変更は他のコピー(複製)へ少しずつ伝わっていきます。伝わりきるまでの短い間は、サーバーごとに古い値と新しい値が混ざります。新しい書き込みが止まれば、いずれすべてのコピーが同じ最新の値に落ち着きます。この「いずれそろう」を保証するのが結果整合性です。
何ができるの?
一部のサーバーが遅れていたり、つながりが悪かったりしても、システム全体は止まらずに読み書きを返せます。SNSの「いいね」数や閲覧数のように、数秒の遅れが問題になりにくいデータと相性が良いです。世界中の利用者に速い応答を返したいサービスで使われます。
🌱 身近なたとえ
複数店舗で在庫メモを共有する様子で例えると分かりやすいです。本店で「在庫を1つ減らす」とメモしても、その連絡が支店に届くまで数秒かかります。届くまでの間、支店のメモは古いままです。でも連絡さえ届けば、最後にはすべての店のメモが同じ数になります。この「最後にはそろう」が結果整合性です。
✅ まず覚えるポイント
- 書き込み直後は、コピーごとに値が食い違うことがあります
- 新しい更新が止まれば、いずれ全コピーが同じ値に落ち着きます
- 「すぐ一致」より「止まらず速い」を優先する設計の考え方です
- 数秒の遅れが許せるデータ(いいね数・閲覧数など)に向きます
- 多くのNoSQLや分散データベースが選択肢として採用しています
🧭 よくある勘違い
データが食い違ったまま直らないの?
直らないわけではありません。新しい書き込みが止まれば、遅れて伝わる仕組みによって、すべてのコピーが最終的に同じ値へ収束します。「ずっとバラバラ」ではなく「一時的にバラバラ、最後はそろう」が正しい理解です。
強整合性より劣ったやり方なの?
優劣ではなく、用途で選ぶものです。銀行の残高のように一瞬のズレも許せないデータには、すぐ一致を保証する強整合性が向きます。一方で速さや止まりにくさを重視する場面では、結果整合性のほうが適しています。
どれくらい遅れてそろうの?
多くの場合は数ミリ秒から数秒で収束しますが、決まった時間は保証されません。ネットワークの混み具合やサーバーの状態によって変わるため、「必ず○秒以内」とは言い切れない点に注意します。
🧩 関連して覚えると楽な言葉
- レプリケーション: データを複数サーバーに複製する仕組み。結果整合性はこの複製の遅れを前提にした考え方です
- ACID: トランザクションの厳密さを保証する性質。こうした厳密な仕組みは、結果整合性とよく対比されます
- NoSQL: 柔軟さや拡張性を重視したデータベース群。結果整合性を選べるものが多いです
- シャーディング: データを分割して複数サーバーに配る手法。分散するほど整合性の扱いが課題になります
🏁 ひとことでまとめ
「今この瞬間に全部そろっている」ではなく「ほうっておけば最後にはそろう」を選ぶことで、速さと止まりにくさを手に入れる整合性の考え方です。
TERM SEARCH
ほかの用語を調べる
検索ボックスを準備中…