分區容錯性(Partition Tolerance)是分散式資料庫最重要的特性,"BASE理論"以"最終一致性(Eventual consistency)"替代"强一致性(Strict Consistency)"獲得了高可用性及高擴展性,是分散式資料庫的基本思想。
- ACID
- 原子性(Atomicity)
強調交易的不可分割性,交易中的多個操作要嘛全部成功,要嘛全部失敗回到上一個一致性狀態。
- 一致性(Consistency)
資料異動的基本是交易,在完整的交易流程中,資料庫的完整約束沒有被破壞。
- 隔離性(Isolation)
提供"可序列化"和"可恢復性",確保平行交易之間不會互相影響,防止資料不一致性發生。
- 平行錯誤
- 髒讀(Dirty reads)
較早的更新可能出現在後來更新之前的結果集之中。
- 不可重複讀(Non-Repeatable Reads)
在一次交易中同一資料數讀取2次卻得到不同結果。
- 幻影讀(Phantom Read)
在交易中2個完全相同的查詢語句執行得到不同的結果集。
- 隔離級別
- 序列化(Serializable)
要求在選定對象上的讀寫時鎖上一個「範圍鎖」(Range-Locks)直到交易束後才能釋放。
- 可重複讀(Repeatable Reads)
要求在選定對象上的讀寫時鎖上「讀鎖」(Read Locks)和「寫鎖」(Write Locks)直到交易結束後才能釋放。
- 提交讀(Read Committed)
要求在選定對象上的讀寫時鎖上「寫鎖」(Write Locks)直到交易結束後才能釋放。
- 未提交讀(Read Uncommited)
交易可以看到其他事務「尚未提交(Committed)」的修改。
- 持久性(Durability)
交易造成的任何資料異動都會被持久性的儲存在資料庫中。
- CAP
- 一致性(Consistency)
- 可用性(Availability)
- 分區容錯性(Partition Tolerance)
- BASE
- 基本可用(Basically Available)
- 軟狀態(Soft State)
- 最终一致性(Eventual Consistency)