1. ホーム
  2. nosql

[解決済み] わかりやすい英語での最終的な一貫性

2022-04-30 03:27:14

質問

NoSQLやデータグリッドなどに関する様々な講演で、最終的な一貫性についてよく耳にします。 最終的な一貫性の定義は多くのソースで異なっているようです(具体的なデータストレージに依存することもあるようです)。

どなたか、具体的なデータストレージとは関係なく、一般論として「Eventual Consistency」とは何か、簡単に説明していただけませんか?

どのように解決するのですか?

最終的な整合性

  1. 天気予報を見て、明日は雨が降ることを知る。
  2. 明日は雨だと言う。
  3. 隣人が奥さんに「明日は晴れだ」と言う。
  4. あなたは隣人に明日は雨が降ると告げます。

最終的に、すべてのサーバー(あなた、私、あなたの隣人)は真実(明日雨が降ること)を知っていますが、その間、クライアント(彼の妻)は、サーバー(あなたと私)のうちの1つまたは複数がより最新の値を持っているかどうか尋ねたにもかかわらず、晴れると思って帰ってきました。

Strict Consistency / ACID complianceとは対照的ですね。

  1. あなたの銀行残高は50ドルです。
  2. 100ドルを入金する。
  3. どこのATMから照会しても、あなたの銀行残高は150ドルです。
  4. あなたの娘があなたのATMカードで40ドルを引き出した。
  5. どこのATMから照会しても、あなたの銀行残高は110ドルです。

あなたの残高は、その時点までにあなたの口座で行われたすべての取引の実際の合計以外のものを反映することはできません。

その 理由 多くの NoSQL システムが最終的な一貫性を持つ理由は、事実上すべてのシステムが分散するように設計されており、完全分散システムでは、厳密な一貫性を維持するために超線形オーバーヘッドが発生するからです(つまり、動作が遅くなる前に拡張できるのはここまでで、拡張し続けるには指数関数的に多くのハードウェアを問題に投入しなければならないのです)。