前言
随着计算机与互联网技术的发展和普及,数据库技术已经渗透到人们日常生活的每个角落,无论是信息检索、电子商务、网上交友,还是日常工作时使用的各种信息管理系统,无一例外地都用到了数据库管理系统,它已经成为最常用的软件之一。
目前,市场上有多种数据库管理系统产品,商业版数据库管理系统产品有Oracle、DB2、SQL Server等,开源版数据库管理系统产品有PostgreSQL、MySQL等。商业版数据库管理系统虽占据着较大的市场份额,但随着新的应用领域的出现以及成本方面的考虑,有很多用户开始采用开源版的数据库管理系统或者在开源数据库基础之上定制自己的数据库管理系统。
开源数据库管理系统的广泛使用也吸引了大量的开发者、技术人员,与此同时也出现了大量与数据库管理系统相关的技术性书籍和教材。但这些书籍要么是介绍数据库管理系统的管理和使用技巧,要么是介绍如何在这些数据库管理系统上开发应用,鲜见从数据库底层实现的角度来分析数据库系统内部实现机制的书籍。
本书尝试从PostgreSQL数据库源代码入手,介绍典型开源数据库管理系统的内部实现细节,揭开一个真正的数据库管理系统的内部奥秘。写作本书的重要动机是向数据库内核开发人员以及科研人员介绍PostgreSQL的实现机制,帮助他们基于PostgreSQL定制满足特定需求的数据库系统,或者在数据库内核中实现并验证数据库的新技术。我们希望本书有助于不同背景和经验的人交换对PostgreSQL源代码的理解,为进一步推进PostgreSQL的发展及使用做出贡献。
读者定位
对本书感兴趣的读者包括:数据库内核开发人员、研究人员、DBA、高校学生、教师以及其他希望了解数据库内核实现的人们。
对于那些希望在PostgreSQL内核中进行改进或裁剪形成自己组织内部定制数据库的开发人员来说,本书将有助于他们了解PostgreSQL内部的实现机制,从而可以按照需要对数据库进行修改。
本书也可以作为计算机专业高年级本科生或者研究生的教材,尤其对于那些日后希望从事数据库领域研究的学生,我们希望本书能够激发学生对数据库内部实现机制的兴趣。
为更好地理解本书的内容,我们希望读者能具备以下基础:
了解数据库系统的基本概念和常用术语。
有使用PostgreSQL开发应用的实际经验。
阅读过介绍数据库系统实现基本原理的书籍。
本书的组织
本书的组织如下:
第1章介绍PostgreSQL的发展历史、特点、在商业领域的应用以及源代码的结构、安装、使用等内容。
第2章介绍PostgreSQL的体系结构,包括系统表的结构和用途、数据集簇、进程结构,并重点分析了守护进程Postmaster、服务进程Postgres以及各个辅助进程的实现机制。
第3章介绍PostgreSQL的存储管理,对PostgreSQL中管理内存和外存的方式进行了详细分析。
第4章介绍PostgreSQL的索引机制,分析了B-Tree、Hash、GiST、GIN等索引的组织结构、操作方式,并介绍了全文搜索TSearch 2模块的实现与使用。
第5章介绍PostgreSQL的查询编译器,给出了如何将一个SQL命令进行编译、优化并最终形成执行计划的过程。
第6章介绍PostgreSQL的查询执行器,描述了执行计划如何被PostgreSQL进行解释执行,对执行计划中每一种节点的执行算法给出了详细分析。
第7章介绍PostgreSQL的并发控制机制,给出了事务系统和日志系统的具体实现方法。
第8章介绍PostgreSQL的安全措施,描述了用户标识与认证、权限管理和对象访问控制等有关数据库安全措施方面的实现细节。
源代码版本
本书对PostgreSQL的分析工作基于PostgreSQL 8.4.1,该版本的源代码可以从以下地址下载:ftp://ftp-archives.postgresql.org/pub/source/v8.4.1/。
错误
由于作者的水平有限,本书可能包含笔误、差错或遗漏,我们非常希望您能够告诉我们所发现的错误以及对于本书的建议或批评。您可以发送电子邮件到[email protected],很抱歉我们可能无法一一回答所有的电子邮件,但是我们会将发现的错误和收到的建议整理后公布在网址http://totemdb.whu.edu.cn/pgbook/以及华章网站http://www.hzbook.com上。
致谢
本书的内容是武汉大学珞珈图腾数据库实验室对于PostgreSQL十年分析工作的结晶,在这十年中,实验室的各届研究生进行了不懈的努力,对此做出了巨大的贡献,在此两位作者对他们在PostgreSQL代码分析过程中付出的辛勤劳动表示由衷的感谢!在编写本书的过程中,作者参阅了相关的书籍、网上资料、技术文档等,在此也向这些资料的作者表示感谢!