在學習關聯式資料庫的時候,一定會學到ACID
ACID,是指資料庫管理系統(DBMS)在寫入或更新資料的過程中,為保證交易(transaction)是正確可靠的,所必須具備的四個特性:原子性(atomicity,或稱不可分割性)、一致性(consistency)、隔離性(isolation,又稱獨立性)、持久性(durability)。
來源:https://zh.wikipedia.org/zh-tw/ACID
而這篇文章想特別分享關於Consistency的一些心得
關於Consistency的定義如下
在事務開始之前和事務結束以後,資料庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的預設約束、觸發器、級聯回滾等。
來源:https://zh.wikipedia.org/zh-tw/ACID
從敘述中可以發現,如果要完成Consistency,我們需要有事務(transaction)來保證query的完整性,需要交易隔離級別(isolation level)來保證query不互相干擾,而且需要redo log等機制來保證資料一定會成功寫入硬碟中
transaction是用來滿足atomicity
isolation level是用來滿足isolation
而redo log等機制是來滿足durability
但資料庫本身沒有一個特別的機制在滿足Consistency的
AID是因,而C是結果
另外,也想提一個有趣的點
如果有接觸過noSQL,會聽過另一個跟ACID很像的觀念是BASE,這個有點像是想要跟ACID打對台而取名的(ACID是酸,BASE是鹼),在第一次聽到這個說法的時候,也覺得十分有趣呢