前言

为什么要写这本书

PostgreSQL数据库是功能强大的开源数据库,包含了其他商业或开源数据库的大部分功能,PostgreSQL 10版本之后还添加了很多商业数据库中没有的功能。在本书第1版发行前,PostgreSQL就已获得数个奖项,包括3次获得Linux Journal杂志编辑评选的“最佳数据库奖”(2000年度、2003年度和2004年度),2004年又获得“Linux新媒体最佳数据库系统奖”。此外,PostgreSQL还在2017—2018年连续两年获得了DB-Engines的“年度数据库奖”称号。

笔者很欣慰本书的第1版发行后得到了广大读者的认可。本书致力于全面讲解PostgreSQL数据库的必备知识。然而由于PostgreSQL的功能和特性非常多,要想全面和完整地讲解PostgreSQL数据库的内容十分困难,而第1版成书匆忙,有些内容讲解得不够深入和完善,同时第1版是基于PostgreSQL 9.4撰写的,自第1版发布之后PostgreSQL已连续发布了9.5、9.6、10、11、12五个版本,增加了很多新的功能,因此笔者决定对第1版进行完善,同时增加对PostgreSQL新版本功能的讲解。

第2版中补充了从9.4版本到当前最新版本增加的所有新功能。第10章增加了笔者这些年来积累的PostgreSQL数据库技术内幕方面的新内容,如实例恢复与热备份原理解密、控制文件解密、WAL文件解密等在市面上常见书籍中较少能看到的内容。第11章增加了BRIN索引、全文索引和数组等的相关内容。第12章增加了笔者多年来积累的优化PostgreSQL的经验和方法,如使用大页优化数据库、数据库配置的最佳实践以及表、索引、SQL优化等内容。第13章增加了逻辑复制的相关内容。在PostgreSQL 10以上版本中,Standby备库增加了很多新功能,书中做了详细的介绍。同时在PostgreSQL 12版本中Standby的搭建方法发生了较大变化(将recovery.conf的内容合并到了postgresql.conf中),本书也增加了相关讲解。第14~19章讲了一些开源软件,这些开源软件在本书第1版出版后也发布了很多新版本,其中开源软件PgBouncer、Slony-I、PL/Proxy、Postgres-XC的变化不是很大,本书根据这些软件最新版本的情况进行了内容更新。但pgpool-II和Bucardo的新版本变化较大,本书介绍pgpool-II的章节增加了watchdog的配置以及更翔实的原理介绍,使读者在学习之后可以更容易地搭建出更可靠、更稳定的pgpool-II集群。Bucardo新版本在配置方法上发生了很大变化,对此本书也进行了详细的讲解。

目前,国内越来越多的公司开始使用PostgreSQL,包括一些金融证劵公司,同时很多知名的数据库也是基于PostgreSQL做的二次开发,而云厂商如腾讯云、华为云、阿里云等都已经全面支持PostgreSQL数据库,欢迎更多的朋友加入学习PostgreSQL数据库的大潮中来。

读者对象

适合阅读本书的读者:

·数据库入门者。本书是一本数据库入门书,通过学习本书和相关的数据库知识,对数据库了解不是很深的数据库爱好者也可以成为数据库专家。

·不熟悉PostgreSQL数据库的DBA。可以帮助不熟悉PostgreSQL的DBA快速掌握该数据库的相关知识,成长为一名合格的PostgreSQL DBA。

·PostgreSQL DBA。熟悉PostgreSQL数据库的DBA也可以在本书中学习到一些更深入的内容,使自身的数据库水平更上一层楼。

·开发人员。开发人员可以通过此书快速掌握PostgreSQL数据库方面的知识和技巧,提高开发效率,做出更优秀的软件产品。

如何阅读本书

本书分为四大部分,分别为准备篇、基础篇、提高篇和架构篇。准备篇是为没有数据库基础的读者准备的,如果读者已经具备了一定的数据库基础,可以跳过其中的一些内容。基础篇介绍了PostgreSQL数据库的基础内容,学习完此篇内容的读者可以完成PostgreSQL数据库的基本日常操作工作。提高篇讲解了一些更深入的内容,如PostgreSQL的技术内幕、特色功能、优化等,仔细阅读此篇有助于读者早日成为PostgreSQL数据库高手。架构篇讲解了与PostgreSQL数据库配套使用的常用开源软件及架构设计方面的内容,通过阅读此篇,读者可以开拓眼界并提高数据库架构设计能力。

本书给出了大量的实例,建议读者边阅读此书边按实例进行实际操作,以获得最佳的学习效果。

勘误和支持

由于笔者的水平有限,编写的时间也较仓促,书中难免会有一些疏漏或者不准确的地方,敬请读者朋友批评指正。读者朋友可以将在书中遇到的问题及宝贵意见发送至tangcheng@csudata.com,笔者很期待能够听到你们的真挚反馈。

致谢

首先要感谢国内PostgreSQL数据库爱好者,他们已经整理了大量的关于PostgreSQL的文章,翻译了PostgreSQL官方手册,让笔者可以站在前人的肩膀上学习。大家可以在PostgreSQL的中国官方主页http://www.postgres.cn/v2/document上看到这些成果。

感谢机械工业出版社华章公司的编辑Lisa老师,感谢她在这一年多的时间里始终支持笔者写作,她鼓励并帮助笔者顺利完成了全部书稿。

最后要感谢笔者的妻子,她一直支持和鼓励笔者,让笔者能坚持把这本书写完。

谨以此书献给热爱PostgreSQL的朋友们。

唐成(osdba)

中国,杭州,2020年6月