推薦序一
海翔在數據庫管理系統領域的第二本著作《數據庫事務處理的藝術:事務管理與并發控制》馬上就要出版了,他邀請我作序,我沒有猶豫就欣然答應了。事后,我自己都覺得奇怪為什么會這么痛快,但細細想來,還是有充分理由的。這個序得寫!
首先,我對在數據庫核心技術領域長期辛勤耕耘的人表示尊敬。數據庫是信息系統的基礎和核心,對數據庫實現技術是否真正掌握關系到我國在信息技術核心領域的自主可控戰略是否能順利實現。大家都知道,長期以來我國的信息產業大而不強,信息化成本居高不下,信息安全受到威脅。數據庫就是基礎軟件中的最重要的部分之一。因此,國家從十五開始就對這個領域的研究開發進行了持續的支持。先是在863計劃下設立“數據庫重大專項”,后來又在國家中長期科技發展規劃中設立了“核心電子器件、高端通用芯片和基礎軟甲產品(簡稱核高基)”項目,對這個方向的研發工作給予引導。但是,由于國外數據庫巨頭已經形成市場壟斷,短期間內企業要在這個領域贏利幾無可能,因此,一些有實力的大企業都不愿意投身到這個領域來,形成了長期都由一些小公司在苦苦掙扎的窘境。人才能否“引得來、留得住、長得好”,是這些技術型小公司普遍遇到的問題。因此,我對長期堅持在這個領域的從業人員始終抱有好感,只要可能就愿意幫助他們。
其次,從我們教學的經驗看,要深入理解數據庫實現,非常需要解讀開源系統實現代碼的圖書作為學習的參考。數據庫系統龐雜,要弄懂系統實現的代碼需要鍥而不舍的精神。海翔閱讀了PostgreSQL和MySQL(InnoDB)等幾個開源系統的代碼,并根據自己的理解進行了解讀,通過對比不同的實現能幫助讀者深入了解事務的概念和實現技術。事務管理是數據庫系統的核心技術,有一句話形容事務管理“好懂難做”,意思是要理解這些概念并不難,但是要實現起來,還是很復雜的。因此,通過閱讀開源系統的源代碼,能更好地掌握相關的內容。海翔的書能起到這個作用。
第三,我和海翔有師生之誼。本世紀初我們都在人大金倉工作,一同開發金倉數據庫系統。海翔是公司員工,同時在中科大就讀,我是他的企業導師。海翔平時話不多,少言寡語,但是心里有想法,是那種先做再說的性格。之后,由于種種原因,我離開了金倉回到學校任教。也就逐漸失去了和海翔的聯系,直到有一天,他給我送來了他的一本書稿—《數據庫查詢優化器的藝術》,讓我著實吃驚不小。我知道,在IT企業工作壓力大,加班是常態。如果不是自己心里有一個目標,堅持不懈,放棄許多休息時間,是很難寫出有深度的著作的。我在心里為海翔點贊。之后我們又“失聯”了,估摸著他是否又在做什么大事,果不其然,他又完成了自己的第二本著作,《數據庫事務處理的藝術:事務管理與并發控制》。再次祝賀海翔!
寫到這里,我也該停筆了。希望讀者能從海翔的書中看到他對數據庫事務處理的思考,以及他奮斗的影子。
杜小勇
中國計算機學會數據庫專委會主任
出版社代注:
杜小勇教授,教育部科學技術委員會學部委員,中國計算機學會(CCF)常務理事、專委工委主任、數據庫專委會主任,數據庫領域著名專家,中國人民大學理工處處長。
推薦序二
數據庫的基本特征之一是支持多用戶共享數據,而事務管理和并發控制是提供這一支持的核心技術,是大型數據庫有別于某些表格管理軟件的關鍵特性之一,也是實現一個大型數據庫管理系統時會面臨的最有挑戰性的技術之一。
本書從基本原理和案例系統分析深刻論述了該領域的進展現狀與典型實現技術,特別是源碼分析對有志于學習或定制開源數據庫管理系統的開發人員提供了很好的參考。對數據庫有關的各類從業者了解這一主題提供了難得的參考資料。
海翔熱愛數據庫研發,對數據庫技術一直抱有一顆堅韌、執著之心,本書是他的經驗和思索的體現,值得仔細研讀。
張孝(博士)
中國人民大學信息學院副教授
推薦序三
事務是數據庫的核心概念之一,提供ACID(原子性、一致性、隔離性、持久性)特性的事務處理,是數據庫系統能夠商用化,并用來支持金融級業務的核心技術之一。一方面,大學本科或研究生的數據庫教材更多的是偏向于事務的基本概念或基本技術的介紹;另一方面,現有大部分的技術文檔對事務管理和并發控制的內容介紹缺乏重要的實現關鍵細節,無法有效地幫助學習者建立理論與實踐之間的緊密聯系。
而海翔的這本《數據庫事務處理的藝術:事務管理與并發控制》:
不僅有對事務管理和并發控制的原理性介紹,如事務模型、基于封鎖的并發控制技術、基于MVCC的并發控制技術等
還有對現有主流開源數據庫,如PostgreSQL、MySQL的關于事務管理和并發控制的實現機制在源碼級的深入剖析
再有多種商業數據庫的實現機制分析,如Oracle和Informix
更有新的技術的剖析,如“write-snapshot isolation”“Serializable Snapshot Isolation (SSI)”
甚至還有理論、實現之間的優劣對比,以及多種實現技術的優劣對比,多角度地對比拓展了本書的縱深
這本書具備較好的深度、廣度、新度,這讓我十分期待。
我認識海翔已有十二載,在此期間,海翔一直從事于國產數據庫的研發工作,取得了諸多令人矚目的成績,這本書是對他這些年理論探索和實踐經驗的總結,我相信對于志在從事數據庫相關領域開發和研究的朋友,通過本書的學習,都能從中受益。
盧衛(博士后)
中國人民大學信息學院副教授
(發表多篇SIGMOD、VLDB、ICDE學術論文)
推薦序四
事務管理和并發控制是數據管理技術中最重要的幾個主題之一,它保障了數據的一致性以及系統的性能。
本書聚焦于數據庫中的事務處理,從原理、主流數據庫實現、源碼級實現三個角度進行了深度的探討。尤其是后兩個部分的介紹,讓本書成為不可多得的有關DBMS事務管理模塊內部技術細節的參考資料。
本書不僅對于從事各類數據庫內核研發工作的人員具有很高的參考價值,對于從事數據庫應用開發、DBA乃至學習數據庫的朋友們來說也值得一讀。本書作者在數據庫研發領域深耕多年,書中的字里行間顯示出他扎實的實踐經驗和深厚的理論功底,相信各位讀者都能從本書中受益匪淺。
彭煜瑋(博士)
武漢大學計算機學院副教授/《PostgreSQL數據庫內核分析》作者
推薦序五
—庖丁解牛 高山仰止
海翔的新書揮就,單只書名就讓我頓生敬意,事務處理是數據庫技術中最為核心的部分,也是不同數據庫之間暗暗較量的關鍵所在。以此為題的著作,我們熟知的就是Jim Gray的《事務處理概念與技術》,該書一直是數據庫領域的筑基之作,令人高山仰止;現在海翔的著作以獨到之角度闡釋事務原理與并發控制,以庖丁解牛之刀為廣大數據技術從業者剖析出寶貴的關節,實在是讓人手不釋卷的又一機緣。
在我熟悉的Oracle數據庫領域,我一直認為其獨到的事務處理機制,成就了Oracle數據庫今天的地位。比如Oracle選擇了提交讀作為主要的事務隔離級別,進而通過Undo機制提供一致性讀,而從Oracle 6引入的改變向量(Change Vector)技術更成為了Redo和Undo機制的核心,并由此保障數據庫能夠從一個一致性的狀態不斷遷移到下一個一致性狀態,Oracle數據庫后續的很多卓越特性都由此構建,包括Data Guard技術、閃回技術等,延承至今。
而隨著時代的進步,軟硬件性能的提升,數據庫產品也在不斷進步,比如阿里巴巴的OceanBase基于內存短事務的設計,就不需要Undo日志,而Oracle公司最新透露的研發計劃表明他們正在基于NVRAM進行內核改寫,這其中最關鍵的就是對于Redo機制和事務的優化。
把握歷史,兼顧當下,站在前人肩上才能跟上時代的步伐。海翔、馮毅和鵬程,正是站在這樣的起點上。他們不僅精研數據庫原理,更加是不同數據庫內核的研發者,不同的從業經歷,使得他們可以從橫向和縱向對不同數據庫進行剖析,Informix、Oracle、PostgreSQL和MySQL等流行數據庫的事務原理在書中均有呈現,真知灼見,俯仰可得。
這是一本理論結合研發,研發兼顧實踐的實力之作,我相信也是作者們致敬大師的心血呈現,我期待這本書能夠盡快呈現在案頭,一睹為快!
蓋國強
云和恩墨創始人/Oracle ACE總監
推薦序六
事務處理是數據庫區別于其他系統的關鍵特質,JimGray的《Transaction Processing》一書是打開我對數據庫世界認識的一扇窗口。當海翔兄告訴我其在撰寫《數據庫事務處理的藝術》之書時很是感到震驚,因為這并不是一件容易的事情,同時也不是一件任何人都能干好的事情。
我相信本書的作者李海翔,我的好友,能將數據庫事務處理的內部機制描述清楚。一方面,其從事數據庫內核行業很多年,在這一方面有著非常深厚的內功基礎。另一方面,其擅長于將復雜的問題通過簡單的語句描述清楚。相信任何同學在看過本書之后都會有這樣的感覺。更為難得的是,本書在事務處理這部分對比了當前主流的多種數據庫實現,想必本書必將成為經典之作。
學習MySQL看姜老師的書,學習優化器和事務處理,就看海翔老師的作品吧。
姜承堯
騰訊金融支付數據庫運營與研發部副總監/
《MySQL技術內幕》系列圖書作者/Oracle ACE
前 言
為什么寫這本書
關系數據庫管理系統有兩大核心技術,一是事務處理,二是查詢優化。對于數據庫技術從業者來說,如果能把這兩種技術珠聯璧合融于一體,則如同長出兩只翅膀,能助君振翅高飛、翱翔萬里。
2017年,筆者的第二本著述即將問世。本書是一本討論數據庫事務管理和并發控制技術的書,融合了事務管理和并發控制原理、主流數據庫的事務實現、開源數據庫內核事務處理和并發控制源碼剖析。本書能夠幫助技術愛好者掌握事務處理的核心技術—事務管理和并發訪問控制。
筆者期望,把自己對技術的深度探索以文字形式分享給讀者,與數據庫技術愛好者一起享受數據庫內核技術之美。于是工作之余,周末枯坐敲擊鍵盤,夜晚遐想苦思代碼,便有了這本小作。
什么是藝術
書名冠以藝術一詞,筆者實不敢當。藝術之大,筆者仰望如高山、如皓日。
惴惴之際,筆者試對藝術做一注解,謬誤之詞,請讀者見諒。
藝術,美也; 工程技術,美之實現也。數據庫的工程實現,有美其中。代碼有形之體美,算法有神之韻美,數據庫內核之大之復雜故有極深的邏輯之美。愛美之心,筆者如同萬千生靈,亦有之。于是因愛美而去嘗試展示數據庫之美,才有了筆者第一著述《數據庫查詢優化的藝術》和第二本著述《數據庫事務處理的藝術》。
本書的主要內容
本書主要討論的內容包含四個話題:
話題一:事務處理技術中的一致性和隔離性,即ACID技術中的C和I。
話題二:對于一致性,本書主要從事務模型和并發控制的角度出發進行討論,著手于原理怎樣保障正確性、主流數據庫怎樣實現各種并發控制技術等進行探討。比如封鎖控制技術等。
話題三:對于隔離性,本書以并發控制技術為出發點,在明確數據庫的一致性之后,從數據庫性能的角度出發討論數據庫隔離性的實現技術。比如著名的MVCC技術。
話題四:從工程實踐的角度,討論Informix、Oracle、PostgreSQL和MySQL是怎樣實現一致性和隔離性的。
本書共分四篇,四個話題貫穿始終,分別從原理(第一篇)、主流數據庫實現(第二篇)、源碼級實現(第三、四篇)這三個角度進行了深度討論。
其中,原理是靈魂,是統領工程實現的綱,對于事務處理,就是要確保怎樣保障數據的一致性。所以本書的第一篇,就從數據異常現象這個引子出發,對并發控制技術的原理進行講述,并分析了多種并發控制技術是怎樣解決數據異常現象的。這有別于經典的數據庫理論書籍,本書不單純為講理論而講原理,而是結合原理和工程實踐中的知識和關鍵點講原理,使得原理在工程實踐中有落腳點、有著力之處。這是第一篇內容的價值所在。
盡管原理相同,但是不同的數據庫的工程實現卻是不同的。所以在第二篇,筆者選取了主流的數據庫系統,包括Informix、Oracle、PostgreSQL和MySQL,對它們的一致性和隔離性的實現技術,以及工程實現的背后、折射的原理思想進行了深度探索、對比。以期幫助讀者對事務管理和并發控制技術的原理有進一步的認識,對主流數據庫的相關實現情況有全面的掌握,更期望讀者通過閱讀能把握主流數據庫基于相同原理卻又有著不同實現的在工程設計方面的不同考量之處。
最能幫助掌握核心技術的,只有源碼。本書第三篇揭示了PostgreSQL的事務處理的技術之美;第四篇揭示了MySQL和InnoDB的事務處理的技術之美。而全書中,似在不經意間,在山石小徑旁,長滿了對原理、對工程實現的比較,以展示美與美的不同。如果讀者能夠在讀書之際,自己再多做比較,則會領悟到更多的美……
本書的主要特色
從工程實踐的角度看,本書通過原理分析、實例分析、代碼分析,進行了三個對比:
理論對比:對比事務處理中各種并發控制技術等的異同,以擴展讀者對事務處理技術理解的深度。并發控制的技術有很多,本書不為單純講每一個技術而羅列算法本身的內容,而是著眼于對各種算法的差異進行對比,以揭示不同算法背后的思想。
實現對比:對比四大主流數據庫的事務處理技術的異同,以擴展讀者對事務處理技術理解的廣度。本書不單純講述各主流數據庫事務相關的SQL語法,而是著力于透視事務處理和并發控制技術實現的方式之背后的設計考慮點,并隨時對比各個主流數據庫對于同一個問題的不同實現方式,以展示工程技術之美。
源碼對比:依托代碼,直接分析,對比PostgreSQL和MySQL(InnoDB)的事務處理技術的異同,以幫助讀者能夠結合事務處理技術的原理和工程實踐,真正理解、掌握數據庫事務處理的技術。只有深入到代碼一層,才不會有霧里看花的感覺,置身于代碼里,能美在其中、樂在其中。
本書面向的主要讀者
您想深入了解數據庫技術?本書適合您。
您想深入掌握數據庫事務處理技術?本書適合您。
您想成為數據庫內核技術的開發者?本書適合您。
您想成為數據庫核心技術之美的欣賞者、品味者、把握者……本書確實適合您。
資源及勘誤
由于筆者的水平有限,書中難免會有筆誤、差錯或遺漏等,希望廣大讀者能把發現的錯誤反饋給筆者,筆者將不勝感謝。本書的進步和完善,有您的幫助和愛護,定能再上層樓。您可以發送電子郵件到:database_XX@163.com。由于時間有限,也許筆者不能一一答復所有的電子郵件,但是一定會定期整理并匯總信息到筆者的博客(http://bolg.163.com/li_hx)以及華章網站(http://www.hzbook.com)上。
致謝
本書承蒙中國人民大學信息學院院長杜小勇教授指導并作序,心懷感激,念念在心。杜老師是筆者的恩師,析事明理、待人言物、治學嚴謹,一直是筆者心中的楷模。這是一種人格之美,至美而及筆者并影響了筆者寫書的風格。
在筆者的生命中,家人是最重要的。每每伏案疾書不舍晝夜,親人們都能夠理解包容,給了筆者強大的動力,讓筆者內心充滿暖意和歉意。特別是,近一年來,家中小果果生命的孕育,亦陪伴、激勵著筆者努力在小果果來到這個世界感受生命之美時,努力把這本書寫好、寫美。這里要特別感謝我的父母、妻子和果果,動力所在,唯愛有美。十年的果果,因愛而感受到生命的美。
再一次感謝為開源社區無私奉獻的人們,感謝經典的數據庫著述和論文的作者們,本書成書的過程中,參考了相關的資料和信息,書中也一一標注。在此,一并感謝這些無私的奉獻者們。沒有他們,本書會遜色很多。
感謝編輯楊福川先生和李藝女士為本書付出的努力和耗費的心血,書名源于楊先生,書稿樣式改于李女士。謝謝他們。
感謝每一位讀者,你們是筆者繼續前進的新動力。
寫完自己的第二本書,依舊慚愧本書尚不能達到書名標識的高度,依舊打算邁步從頭開始,依舊有著努力的心情,不一樣的是書籍內容,期待本書對讀者有所幫助。
李海翔