- 鳳凰架構:構建可靠的大型分布式系統(tǒng)
- 周志明
- 894字
- 2021-06-24 11:30:54
3.1 本地事務
本地事務(Local Transaction)其實應該翻譯成“局部事務”才好與稍后的“全局事務”相對應,不過現(xiàn)在“本地事務”的譯法似乎已經(jīng)成為主流,這里也就不去糾結名稱了。本地事務是指僅操作單一事務資源的、不需要全局事務管理器進行協(xié)調的事務。在沒有介紹什么是“全局事務管理器”前,很難從概念入手去講解“本地事務”,所以這里先暫且將概念放下,等讀完3.2節(jié)后再來對比理解。
本地事務是一種最基礎的事務解決方案,只適用于單個服務使用單個數(shù)據(jù)源的場景。從應用角度看,它是直接依賴于數(shù)據(jù)源本身提供的事務能力來工作的,在程序代碼層面,最多只能對事務接口做一層標準化的包裝(如JDBC接口),并不能深入?yún)⑴c到事務的運作過程中,事務的開啟、終止、提交、回滾、嵌套、設置隔離級別,乃至與應用代碼貼近的事務傳播方式,全部都要依賴底層數(shù)據(jù)源的支持才能工作,這一點與后續(xù)介紹的XA、TCC、SAGA等主要靠應用程序代碼來實現(xiàn)的事務有著十分明顯的區(qū)別。舉個例子,假設你的代碼調用了JDBC中的Transaction::rollback()方法,方法的成功執(zhí)行也并不一定代表事務就已經(jīng)被成功回滾,如果數(shù)據(jù)表采用的引擎是MyISAM,那rollback()方法便是一項沒有意義的空操作。因此,我們要想深入討論本地事務,便不得不越過應用代碼的層次,去了解一些數(shù)據(jù)庫本身的事務實現(xiàn)原理,弄明白傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)是如何通過ACID來實現(xiàn)事務的。
如今研究事務的實現(xiàn)原理,必定會追溯到ARIES理論[1](Algorithms for Recovery and Isolation Exploiting Semantic,ARIES),直接翻譯過來是“基于語義的恢復與隔離算法”。
ARIES是現(xiàn)代數(shù)據(jù)庫的基礎理論,就算不能稱所有的數(shù)據(jù)庫都實現(xiàn)了ARIES,至少可以稱現(xiàn)代的主流關系型數(shù)據(jù)庫(Oracle、MS SQLServer、MySQL/InnoDB、IBM DB2、PostgreSQL,等等)在事務實現(xiàn)上都深受該理論的影響。在20世紀90年代,IBM Almaden研究院總結了研發(fā)原型數(shù)據(jù)庫系統(tǒng)“IBM System R”的經(jīng)驗,發(fā)表了ARIES理論中最主要的三篇論文[2],其中“ARIES:A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-Ahead Logging”[3]著重解決了ACID的兩個屬性——原子性(A)和持久性(D)在算法層面上的實現(xiàn)問題。而另一篇“ARIES/KVL:A Key-Value Locking Method for Concurrency Control of Multiaction Transactions Operating on B-Tree Indexes”[4]則是現(xiàn)代數(shù)據(jù)庫隔離性(I)奠基式的文章。下面,我們先從原子性和持久性說起。
[1] ARIES理論:https://en.wikipedia.org/wiki/Algorithms_for_Recovery_and_Isolation_Exploiting_Semantics。
[2] 這個系列的第三篇是“ARIES/lM:An Efficient and High Concurrency Index Management Method Using Write-Ahead Logging”,本文不會涉及。
[3] 下載地址:https://cs.stanford.edu/people/chrismre/cs345/rl/aries.pdf。
[4] 下載地址:http://vldb.org/conf/1990/P392.PDF。
- Linux系統(tǒng)架構與運維實戰(zhàn)
- Google系統(tǒng)架構解密:構建安全可靠的系統(tǒng)
- VMware Horizon View 6 Desktop Virtualization Cookbook
- Instant Handlebars.js
- 嵌入式Linux系統(tǒng)開發(fā):基于Yocto Project
- 混沌工程:復雜系統(tǒng)韌性實現(xiàn)之道
- 混沌工程實戰(zhàn):手把手教你實現(xiàn)系統(tǒng)穩(wěn)定性
- Kali Linux 2018:Windows Penetration Testing
- 操作系統(tǒng)分析
- ElasticSearch Cookbook
- Kali Linux高級滲透測試
- 寫給架構師的Linux實踐:設計并實現(xiàn)基于Linux的IT解決方案
- Web Penetration Testing with Kali Linux(Third Edition)
- 微軟360度
- Linux從入門到精通