首页 > IT职业 > > 老鸟带你畅游PostgreSQL生态
近年来,PostgreSQL越来越受到人们的欢迎和认可。用户的规模越来越大,商业的应用越来越多,相关的岗位越来越多。在DB-engines上连续两年获得了年度数据库的称号,并且在DB-engines的分数也是稳定、持续的上涨。作为PostgreSQL内核开发的老鸟,在2011年开始接触PostgreSQL内核开发领域,对于PostgreSQL社区,商业公司以及相关技术也算熟悉。本文主要以PostgreSQL整个生态介绍为主,希望初学者能够对PostgreSQL有一个体系化、清晰的认识。
PostgreSQL是一款关系型数据库或者叫做对象关系型数据库。
它拥有现代关系型数据库基本的特性:
现在被称为PostgreSQL的对象-关系型数据库管理系统是从加州大学伯克利分校写的POSTGRES软件包发展而来的。经过二十多年的发展,PostgreSQL是世界上可以获得的最先进的开源数据库。
POSTGRES的实现始于 1986 年。第一个“演示性”系统在 1987 年便可使用了, 并且在 1988 年的ACM-SIGMOD大会上展出。在 1989 年6月发布了版本1给一些外部的用户使用。 为了回应用户对第一个规则系统的批评,在1990年6月发布了使用新规则系统的版本 2。 版本 3 在1991年出现,增加了多存储管理器的支持, 并且改进了查询执行器、重写了规则系统。为了避免占用过多的研究实践,伯克利的POSTGRES项目在版本 4.2 时正式终止。直到Postgres95发布前的后续版本大多把工作都集中在移植性和可靠性上。
在 1994 年,Andrew Yu 和 Jolly Chen 向POSTGRES中增加了 SQL 语言的解释器。并随后用新名字Postgres95将源代码发布到互联网上供大家使用, 成为最初POSTGRES伯克利代码的开源继承者。到了 1996 年, 很明显“Postgres95”这个名字已经跟不上时代了。于是选择了一个新名字PostgreSQL来反映与最初的POSTGRES和最新的具有SQL能力的版本之间的关系。同时版本号也从 6.0 开始, 将版本号放回到最初由伯克利POSTGRES项目开始的序列中。这就是我们现在看到的PostgreSQL系列。
始于大学研究,所以整个PostgreSQL具有高度的理论支撑,同时具有严谨的代码设计风格,工业级的代码设计。POSTGRES是由图灵奖的获得者Michael Ralph Stonebraker[1]最初主持设计开发的,具有许多先进的数据库理念。其中许多概念在很久以后才出现在一些商业数据库系统中。ACM在公告中说,Stonebraker“发明了几乎所有现代数据库系统中使用的许多概念……并创立了许多公司,成功地将其开创性的数据库技术工作商业化。”
以下是关系型数据库的发展时间线与关系。

Stonebraker在1973年就在伯克利主持设计了数据库INGRES,而后他的学生基于INGRES的经验开发了Sybase数据库,后来发展成为了现在的SQL Server。后来Stonebraker作为Informix的顾问参与了设计开发。不论是Oracle还是DB2也都或多或少受到INGRES的影响。直接影响或间接影响了几乎所有商业数据库商业,并将其先进的数据库理念融入其中,而由其设计开发的POSTGRES更是兼具了上述先进理念,并成为世界上最先进的开源数据库。
PostgreSQL的开源协议[2]是类似于BSD协议或MIT协议,可以在任何目的下进行分发、闭源或者开源。只需将PostgreSQL协议内容附属到源码中即可。
开放友善的开源协议,工业级的代码开发,造就了现如今丰富的生态支撑。
自Postgres95放到互联网上供人们使用后,渐渐形成了现在的社区。整个社区由不同国籍、不同背景、不同公司的人共同组成,也就无法被一家商业公司或者一个国家控制。
社区由国际核心组领导,具有自己的资产托管组织,自己的行为准则,具有社区管理的独立性。其次,社区有大量的赞助商支持,不会担心资金被把控,从而社区被控制。在各个国家都有自己的分会组织,比如国内就有PostgreSQL中文社区以及PostgreSQL分会,各个组织都在积极推进PostgreSQL的发展。
社区定期举行集会,只有交流、探讨、学习才能真正推动社区发展。目前主要会议有
起初在PostgreSQL开源后便有了大量的粉丝,开始贡献自己的力量。这些贡献者在一起建立了社区,与PostgreSQL共同成长,成为了多个公司的领导者,继而大力推动PostgreSQL的发展。
代码贡献者分为核心组、主要贡献组和一般贡献组。主要贡献组以上拥有代码提交权限。
社区核心组成员为:Peter Eisentraut, Magnus Hagander, Tom Lane, Bruce Momjian, Dave Page。
主要贡献组成员为:Joe Conway, Dave Cramer, Andrew Dunstan, Andres Freund, Stephen Frost, Etsuro Fujita, Peter Geoghegan, Andrew Gierth, Devrim Gündüz, Robert Haas, Álvaro Herrera, Petr Jelinek, Stefan Kaltenbrunner, Amit Kapila, Jonathan Katz, Alexander Korotkov, Amit Langote, Guillaume Lelarge, Heikki Linnakangas, Fujii Masao, Noah Misch, Thomas Munro, Michael Paquier, Paul Ramsey, Simon Riggs, David Rowley, Greg Sabino Mullane, Teodor Sigaev, Pavel Stehule, Tomas Vondra。
还有大量的志愿者,这些志愿者担任着许多的角色,网站维护、会议组织者、赞助费管理组等等,很好的运行着社区工作。


PostgreSQL目前基本为第二季度发布beta版本,知道第四季度发布release版。每个版本开发周期为1年,版本维护时间为5年。
现在和PostgreSQL保持商业互动的公司主要有用户类型,数据库服务商,数据库产品厂商,以及云厂商。
以上的厂商,不仅仅使用PostgreSQL,同时随着业务的深入,也会积极向社区反馈,提交想法、bug或者功能patch。形成了良好的商业互动。而且各种类型的厂商都在和社区接触,也都有较强的影响力,所以很难形成一家商业公司完全控制社区。其次在核心组的领导下,大家制定行为准则,其次进行资产托管,有效管理赞助费用,和多个国家的用户组合作,也避免被一个国家所控制。
PostgreSQL号称是世界最先进的开源数据库,那么他的先进之处在哪呢?
关于数据库基本的存储、事务、查询处理器这里就不多说了,在这里我只选择我感兴趣的几个点和大家聊一下:
JIT(Just In Time)
查询计划的即时编译,利用LLVM对查询计划进行进一步的编译,在汇编级进行优化,减少冗余指令、虚函数调用,并且提高CPU cache的利用率。

PG-STROM

调用GPU作为协处理器,提高查询计算效率。
FDW(foreign-data wrapper)

外部表,可以链接异构数据库或其他格式文件作为数据库的表进行处理,也能够把大量的查询计划下发。目前很多人使用FDW作为分布式中间件。
介绍了这么多PostgreSQL的优点,那么为什么PG在近几年才开始火呢?
作为PGer,我是非常自豪的,但是总有其他社区的过来标榜PG的用户量太少,而且确确实实无言以对。那么是什么原因造成的呢?我自己总结了以下3点:
但是现在随着数据库商业老大哥Oracle的一些问题,越来越多的人转到PostgreSQL,最明显的例子就是亚马逊和阿里完成了去‘O’运动。其次,随着MySQL的开源协议的更改,很多人担心将来会由于协议问题导致业务停摆,转而支持PostgreSQL。尤其是国内,随着中美贸易战的问题,自主可控也成为了国家的战略目标。而PostgreSQL以其丰富的特性是最好的替代产品,所以越来越多的商业公司开始研究、开发PostgreSQL。
PostgreSQL在未来会越来越流行,也会创造更多的价值。欢迎大家参与到社区的工作中,为振兴民族基础软件[4]做一份贡献。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31509949/viewspace-3154047/ ,如需转载,请注明出处,否则将追究法律责任。