推荐序一
海翔在数据库管理系统领域的第二本著作《数据库事务处理的艺术:事务管理与并发控制》马上就要出版了,他邀请我作序,我没有犹豫就欣然答应了。事后,我自己都觉得奇怪为什么会这么痛快,但细细想来,还是有充分理由的。这个序得写!
首先,我对在数据库核心技术领域长期辛勤耕耘的人表示尊敬。数据库是信息系统的基础和核心,对数据库实现技术是否真正掌握关系到我国在信息技术核心领域的自主可控战略是否能顺利实现。大家都知道,长期以来我国的信息产业大而不强,信息化成本居高不下,信息安全受到威胁。数据库就是基础软件中的最重要的部分之一。因此,国家从十五开始就对这个领域的研究开发进行了持续的支持。先是在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)上。
致谢
本书承蒙中国人民大学信息学院院长杜小勇教授指导并作序,心怀感激,念念在心。杜老师是笔者的恩师,析事明理、待人言物、治学严谨,一直是笔者心中的楷模。这是一种人格之美,至美而及笔者并影响了笔者写书的风格。
在笔者的生命中,家人是最重要的。每每伏案疾书不舍昼夜,亲人们都能够理解包容,给了笔者强大的动力,让笔者内心充满暖意和歉意。特别是,近一年来,家中小果果生命的孕育,亦陪伴、激励着笔者努力在小果果来到这个世界感受生命之美时,努力把这本书写好、写美。这里要特别感谢我的父母、妻子和果果,动力所在,唯爱有美。十年的果果,因爱而感受到生命的美。
再一次感谢为开源社区无私奉献的人们,感谢经典的数据库著述和论文的作者们,本书成书的过程中,参考了相关的资料和信息,书中也一一标注。在此,一并感谢这些无私的奉献者们。没有他们,本书会逊色很多。
感谢编辑杨福川先生和李艺女士为本书付出的努力和耗费的心血,书名源于杨先生,书稿样式改于李女士。谢谢他们。
感谢每一位读者,你们是笔者继续前进的新动力。
写完自己的第二本书,依旧惭愧本书尚不能达到书名标识的高度,依旧打算迈步从头开始,依旧有着努力的心情,不一样的是书籍内容,期待本书对读者有所帮助。
李海翔