web-dev-qa-db-ja.com

整合性と一貫性の違いは何ですか?

CAPとACIDのどちらを読んでも、DBの整合性制約を確実にするために一貫性が参照されていることがわかります。それで、私は理解しません、なぜ2つの用語が同じものを指すために使用されるのか、または整合性と一貫性の間に違いがあるのですか?

読んだ それ

とにかく、Atomic、Consistent、Isolated、Durableはトランザクションのプロパティです。原子性+分離で独自の一貫性を実現するには十分です。しかし、独自の原子性をロールバックし、独自の分離をロールバックし、独自の永続性(耐久性)をロールバックすることもできます。私たちが自分自身を転がすとき、私たちは自分の血、汗、および括弧で機能にお金を払わなければなりません。プロパティがトランザクションシステムによって提供されたとは言いません。

これは、ユーザーアプリケーションがデータベースの整合性の制約に加えて一貫性を提供できることを示しています。これは、AIDプロパティとは異なり、データベースによって提供されるプロパティではありません。システム提供の他のAIDプロパティと同じようにCにタイトルを付けるのはなぜですか?

7
Little Alien

違いは、2つの用語が異なるものを指すということです。

  • 一貫性とはトランザクションを指します(ACIDではCです)。

  • 整合性はデータベースを指します。

トランザクションは、データベースの整合性を維持する場合(つまり、データベースを有効な状態から別の有効な状態に変換する場合)は一貫性があると言います。

6
ypercubeᵀᴹ

CAPとACIDは異なるものについて議論していますが、どちらも一貫性のためにCを使用しています。

John Huggsの投稿をお読みください: https://www.voltdb.com/blog/disambiguating-acid-and-cap

[〜#〜] acid [〜#〜]は、通常、「真のトランザクション」を実行するものとして記述されているものを実現するために必要なものを定義しています。 ACIDの目標。 [〜#〜] c [〜#〜]Consistencyは、実際の整合性ルールを定義するよりも頭字語の方が優れています。トランザクションは一貫性の境界を定義するものです。

[〜#〜] cap [〜#〜]分散システム用であり、すべてのレプリカが分散システムのノード全体に広がる同じ論理値の場合、常に正確な値は同じです。

ただし、分散システム[〜#〜] cap [〜#〜]は、どの最新の論理値が永続化されるかを必ずしも定義しません。

したがって、Consistencyin[〜#〜] cap [〜#〜]は、すべての読み取りが(1)最新の書き込みまたはそれ以外の場合(2)エラー

RolandoMySQLDBAが承認した回答(2013年1月)も参照してください。 ACIDとCAPの定理の一貫性、それらは同じですか?

この簡単な回答の概要は、次のように区別されます。

  • ACIDは個々のノードのデータの整合性に対処します
  • CAPはクラスター全体のデータ整合性に対応

2つの用語に対処する:

Integrity-ロジック、正確さ、または公平性のために何かを適用する際の適合性。

Consistency-論理的な矛盾を含みません。

5
RLF