<aside>
💡 定義:為保證系統中資料的呈現符合期待,沒有矛盾,也就是資料的一致性(Consistency)
</aside>
- AID:Transition 需保證的幾個面向資料庫保持一制性的三個面向
- 作者不怎麼認同 ACID ,認為 AID 是達成 C 的手段而已
- Transaction 的概念不限於 RDBMS ,也廣泛出現於 cache、transaction memory、message queue、分散式的儲存槽
上述的應用場景與資料庫的 TX 一致性非完全相同的概念:
- 內部一致性:一個服務使用一個資料源,透過 A、I、D 來確保資料一致性
- 外部一致性:一個服務使用多個資料源、多個服務使用多個不同資料源,涉及多個資料源的 TX 一致性,這也是分散式系統會遇到的難題
在本章里,作者會透過下面的這個書店情境講解如何在不同的 TX 方案中處理,同時也理清這些觀念
情境範例
Fenix's Bookstore 是一個線上書店。每當一本書被成功售出時,需要確保以下三件事情被正確地處理:
- 使用者的帳戶扣除相應的商品款項。
- 商品倉庫中扣除庫存,將商品標記為待配送狀態。
- 商家的帳戶增加相應的商品款項。
作者會逐一介紹服務與資料源交互的四種場景,可以怎麼做保證資料可以被正確讀寫
3.1 本地交易 Local Transaction
- 本文介紹了本地事務(Local Transaction)作為一種基礎事務解決方案,適用於單個服務使用單個資料源的場景。
- 本地交易依賴於資料源提供的事務能力,無法深入參與事務的運作過程。
- 文章提到了ARIES理論作為現代數據庫的基礎理論,對主流關聯型數據庫的事務實現產生了深遠影響。
3.1.1 原子性和持久性