ACID

  • A (Atomicity) 原子性
    • 事務裡的所有操作要麼全部錯完,要麼都不做,事務成功的條件是事務裡的所有操作都成功,只要有一個操作失敗,整個事務就失敗,需要回滾。比如銀行轉帳,從A帳戶轉100元至B帳戶,分兩個步驟:1.從A帳戶取100元;2. 存入100元至B帳戶。這兩步驟要麼一起完成,要麼就一起不完成,如果只完成第一步,第二步失敗,錢會莫名其妙少了100元。
  • C (Consistency) 一至性
    • 資料庫要一直處於一致的狀態,事務的運行不會改變數據庫原本的一致性約束。
  • I (Isolation) 獨立性
    • 併發的事務之間不會互相影養,如果一個事務要訪問的數據正在被另一個事務修改,只要另一個事務尚未提交,它所訪問的數據就不受未提交事務的影響。比如現在有個交易從A帳戶轉100元至B帳戶,在這個交易還未完成的情況下,如果此時B查詢自己的帳戶,是看不到新增加的100元的。
  • D (Durability) 持久性
    • 一但事務提交後,它所做的修改將會永久的保存在資料庫上,即使出現宕機也不會丟失。

CAP

  • C (Consistency) 強一致性
  • A (Availability) 可用性
  • P (Partition tolerance) 分區容錯性

CAP理論的核心是:一個分布式系統不可能同時很好的滿足一致性、可用性和分區容錯性這三個需求。因此,根據CAP原理將NoSQL數據庫分成了滿足CA元則、滿足CP原則和滿足AP原則的三大類:

  • CA - 單點集群,滿足一致性、可用性的系統,通常在可擴展性上不太強大。
  • CP - 滿足一致性、區分容錯性的系統,通常性能不是特別高。
  • AP - 滿足可用性、分區容錯性的性桶,通常可能對一致性的要求低一些。