Constraint

完整性和一致性有什麼區別?

  • September 15, 2021

無論我閱讀 CAP 還是 ACID,我都看到一致性是為了確保數據庫完整性約束。所以,我不明白,為什麼使用兩個術語來指代同一事物,或者完整性和一致性之間存在差異?

我讀到

總之,Atomic、Consistent、Isolated、Durable 是事務的屬性。確實,原子性 + 隔離足以讓您滾動自己的一致性。但是我們也可以滾動我們自己的原子性,滾動我們自己的隔離,滾動我們自己的持久性(持久性)。當我們推出自己的產品時,我們必須用自己的鮮血、汗水和括號來為功能買單。我們並不是說這些屬性是由交易系統提供給我們的。

這表明一致性是使用者應用程序可以在數據庫完整性約束之上為自己提供的。這不是數據庫提供的屬性,就像 AID 屬性一樣。為什麼像給其他系統提供的 AID 屬性一樣給 C 命名?

我認為不同之處在於這兩個術語指的是不同的事物:

  • 一致性是指事務(它是 ACID 中的 C)。
  • 完整性是指數據庫。

如果事務保持數據庫的完整性(即,如果它將數據庫從有效狀態轉換為另一個有效狀態),則稱該事務是一致的。

CAP 和 ACID 正在討論不同的事情,儘管兩者都使用 C 表示一致性。

閱讀 John Huggs 的文章:https ://www.voltdb.com/blog/disambiguating-acid-and-cap

ACID正在定義如何進行通常被描述為實現 ACID 目標的“真正的事務”。實際上,C for Consistency似乎更像是首字母縮寫詞,而不是定義任何真正的一致性規則。事務是定義一致性邊界的東西。

CAP用於分佈式系統,並承諾具有相同邏輯值的每個副本,分佈在分佈式系統中的節點上,始終具有相同的精確值。

然而,由於分佈式系統的延遲問題, CAP不一定定義持久化的最新邏輯值。

因此,CAP中的****一致性意味著每次讀取都會收到 (1)最近的寫入或 (2)錯誤

另請參閱 RolandoMySQLDBA 接受的答案(2013 年 1 月):ACID 和 CAP 定理的一致性,它們是否相同?

這個簡短答案的概要如下:

  • ACID 解決單個節點的數據一致性問題
  • CAP 解決集群範圍內的數據一致性問題

解決兩個術語:

完整性——為了邏輯、準確性或公平性而在應用程序中的一致性。

一致性- 不包含任何邏輯矛盾。

引用自:https://dba.stackexchange.com/questions/157045