基本信息
编辑推荐
京东一线开发人员力作
详细讲述数据库内部的实现原理
深入浅出地阐述MariaDB的设计理念
广泛涵盖MariaDB区别于MySQL的主要亮点功能
内容简介
作译者
京东资深技术专家,MySQL数据库专家,京东云数据库组核心成员,主要负责MySQL内核优化及二次开发。多年数据库领域以及搜索引擎领域的工作经验,对Redis、Memcached等NoSQL数据库,以及CGroup、LXC、Docker等容器技术有深入的研究。
新浪微博:弓长金鹏
张成远
京东资深架构师。毕业于东北大学,硕士阶段研究分布式数据库相关方向,2012年加入京东云数据库技术团队。擅长高性能服务器开发、分布式数据库、分布式存储/缓存等大规模分布式系统架构。主导了京东分布式数据库系统及容器系统的架构与开发工作。
新浪微博:NEU_寒水
季锡强
京东资深架构师,主要负责京东分布式数据库的架构设计及研发工作,主导容器技术在京东的应用与推广。专注于高性能服务器、分布式数据库、分布式存储/缓存及容器技术,对容器核心技术及golang并发编程有深入研究。
目录
1.1 MariaDB的历史
1.2 MariaDB所做的事情
1.2.1 更丰富的存储引擎
1.2.2 性能的提升
1.2.3 扩展和新特性
1.2.4 更好的测试
1.2.5 尽量消除错误和警告
1.3 MariaDB的版本与兼容性
1.3.1 MariaDB 5.1和MySQL 5.1的不兼容性
1.3.2 MariaDB 5.2和MySQL 5.1的不兼容性
1.3.3 MariaDB 5.3和MySQL 5.1、MariaDB 5.2的不兼容性
1.3.4 MariaDB 5.5和MariaDB 5.3的不兼容性
1.3.5 MariaDB 5.5与MariaDB 5.3和MySQL 5.5的不兼容性
1.3.6 MariaDB 10.0和MySQL 5.6的不兼容性
1.4 编译和安装MariaDB
1.4.1 使用二进制安装包进行安装
1.4.2 使用源代码进行编译安装
1.5 联系社区
1.5.1 Launchpad团队和邮件列表
前言
这是一本讲解数据库原理及其具体实现的书,本书主要面向想要了解MariaDB和MySQL的工作原理及其具体实现的读者,以及想要阅读MariaDB和MySQL源代码却苦于不知道从何处开始的读者。
本书的整体思路是由简至繁,从基本原理到具体实现细节,书中由浅入深地剖析了MariaDB以及MySQL。
如果你想要阅读本书,首先必须具有一定的数据库基础知识;其次,你应该具备一定的C/C++语言知识,因为MariaDB/MySQL主要是用C/C++编写的,在分析具体实现的时候,我们会给出大量的源代码。
章节安排
本书的章节安排如下。
第1章描述了MariaDB相关的一些基础内容,包括MariaDB的历史、MariaDB所做的一些优化、MariaDB与MySQL的兼容性以及如何安装使用MariaDB,等等。
第2章讲解了MariaDB添加的新特性以及对MySQL原有功能所做的扩展。
第3章首先讲解了MariaDB源代码的组织结构以及MariaDB对函数和基本类型的封装,最后从实战的角度讲解了如何调试MariaDB。读者可以通过边调试边阅读MariaDB代码的方式来学习MariaDB。
第4章对MariaDB/MySQL中使用比较多的一些底层数据结构进行了介绍,为我们后面更深入地讲解MariaDB/MySQL各种功能的实现奠定了基础。
第5章详细分析了MariaDB的线程池技术,包括使用以及具体的实现机制。
第6章从实际的应用场景出发,详细阐述了binlog的相关内容。
第7章重点讲解了MariaDB的binlog group commit技术,该技术在具有高并发事务的场景下能够极大地提高MariaDB单位时间内的事务提交数。
第8章用很大的篇幅介绍了MariaDB/MySQL复制相关的内容,主要包括复制的工作原理、复制的实现、半同步复制、MariaDB多源复制、GTID,等等。
第9章讲解了数据库技术中用到的一些数据结构和算法,包括B+树数据结构、ORDER BY语句所使用的算法、JOIN相关的算法,等等。
第10章介绍了分布式数据库相关的一些内容,包括基本概念、特点、一些技术难点,等等。最后,我们分析了京东分布式数据库系统的架构。
附录A讲解了资源控制方面的一些内容,主要是关于如何利用Linux系统的CGroup机制来控制系统资源的使用情况,并且详细分析了CGroup各个子系统的具体实现。
我们建议读者按顺序来阅读本书,但你也可以挑选自己感兴趣的章节进行阅读。
致谢
这里我们要感谢京东云平台开放云事业部负责人郭理靖在本书编写过程中的大力支持以及相关的指导工作,感谢京东云平台云数据库组的田琪、闫国旗、张帅、杨轩嘉、都海峰在本书的编写过程中提供的大量支持和帮助,让本书的编写工作能顺利完成。
序言
自从60多年前关系型数据库出现起,它就被广泛使用。至今,几乎所有IT系统都离不开关系型数据库。在MySQL出现前,关系型数据库行业几乎被Oracle、IBM DB2和Microsoft SQL Server几个商业巨头垄断了。商业数据库的封闭性和高昂的价格,对IT行业在深度和广度上的使用、提升数据库系统以及时适应各种新需求(尤其是互联网等行业带来的新需求)造成了很大的阻碍。20世纪末开源数据库MySQL的出现和崛起,为整个数据库行业带来了巨大的希望。可惜随着MySQL被Oracle公司收购,存在Oracle公司将MySQL闭源的巨大潜在风险。为了避免这种风险,为行业提供一个永久开源免费的关系型数据库系统,MariaDB被创造了出来。虽然MariaDB最初只是MySQL的一个分支,但近年来随着社区的壮大和普及度的迅猛上升,它在很多方面已经超过了MySQL,例如性能、复制功能和存储引擎等,并且大有完全替代MySQL的势头。
本书深入浅出地阐述了MariaDB的设计理念,剖析了MariaDB的几个关键而有趣的子系统。本书的作者是我的同事,我目睹了他们将日常工作实践中总结和提炼出MariaDB的心得转化成书的过程。这是一本理论结合实践的书,读者不但可以学习到MariaDB的理论,还可以参照书中的实例一步步地自行调试实践。我相信本书会对有志学习MariaDB的读者有所帮助。
作为一个曾经在数据库行业耕耘8年的老兵(主要从事SQL Server存储引擎研发),我也深深地期待国人不但能深度掌握MariaDB的使用技术,还能在MariaDB社区作出越来越多的贡献,为积累和提升数据库方面的核心能力而努力。期待这本书能启发和引导更多的同行来参与MariaDB社区的工作并发挥出价值。
何刚,京东集团技术副总裁
媒体评论
——汪源,网易杭州研究院副院长
之前国内在数据库系统方面的技术积累有限,现在我看到国内越来越多数据库方面图书的出版,感到由衷的高兴。
作为MySQL的一个重要源代码分支,MariaDB包括的一些新特性使它在某些地方优于MySQL,同时基于对MySQL后续发展的担心,包括谷歌在内的一些大公司开始逐步使用MariaDB替换MySQL。
本书从设计原理开始讲解,深入浅出地剖析了MariaDB以及MySQL的几部分重要功能的具体实现细节,是作者在京东工作实践中的提炼和总结。通过本书,你不但可以学习到数据库方面的基础理论,也可以参照书中的实例进行MariaDB源代码方面的实践。相信本书对使用和学习MariaDB的读者有很大的帮助。
——MySQL ACE Director/新浪首席数据库架构师,杨海朝
MariaDB不仅免费开源,而且支持一些新特性,如多源复制、线程池、binlog group commit等,并且Google已经从MySQL迁移到了MariaDB。
本书由浅入深地讲述了MariaDB的基本原理和实现细节,并结合在京东的实战经验,给出基于MariaDB的分布式数据库的最佳实现。
相信本书对学习MariaDB的读者会非常有帮助。
——京东架构师,吴元清