开源人物志-Bruce
2022-04-23 18:04:52 阿炯

对话PostgreSQL作者Bruce:转行是为了更好地前行

从1961年首个数据库管理系统IDS(Integrated Data Storage)问世至今,数据库的发展已超过60年,无数杰出人物为此作出了重大贡献,而见证了数据库发展的Bruce Momjian也是其中之一。Bruce是PostgreSQL的核心作者之一,也是开源运动的倡导者。但早期的Bruce并非科班出生,甚至和计算机领域没有丝毫联系。之所以有现在的这些成就,离不开他后三十多年的探索。下面就一起走进Bruce的程序人生(本段原作者:郭露)。

Bruce Momjian(下文简称“Bruce”)作为PostgreSQL团队的核心成员之一,多年来一直负责指导PostgreSQL数据库的开发和发布。此外,他也是开源运动的倡导者之一,在计算机领域有着举足轻重的地位。然而,早年间Bruce并非计算机出身,而是以历史为专业。在计算机尚处于萌芽的时代,他也坦言“与计算机结缘有‘赌’的成分。”


Bruce近照(图源Bruce个人博客)

为就业几度更换专业

20世纪60年代初,Bruce出生在美国费城。与那个时代其他的美国小孩一样,Bruce度过了平凡的童年时光。学生时期的他发现自己对人文历史非常感兴趣,于是在大学时选择了历史专业。然而尽管兴趣是最好的老师,但学历史这条路并非他想象的那么简单。一方面,学历史也并不等于以后就可以做研究;另一方面,在美国历史专业也不是那么容易找到工作。因此在学了两年之后,Bruce认为是时候换一条路了。

起先,Bruce发现当老师似乎比较有前景,于是转为数学教育学专业,准备毕业之后去教书。但数学又的确非常枯燥,于是又开始琢磨有没有其他更适合自己的领域。在一次偶然的机会下,Bruce了解到了计算机这一新兴领域。

当时计算机领域的发展不过一二十年,因此选择计算机多少有点“赌”的成分。但在他看来,计算机是属于未来的领域,今后有机会影响世界。看清这一点后,Bruce开始投入到计算机知识的学习中。尽管他并非科班出身,但在接触到计算机之后,他很快就意识到这才是自己真正想要的方向。通过自学,他对计算机有了相当的了解。在毕业之后,他顺利成为美国多所高中的计算机老师。而让他没想到的是,这只是他和计算机缘分的开始。

Bruce在教书期间也并未停止对计算机领域的探索。据他回忆,在入门后,他先后学习了许多“具有长期性且实用性的核心技术”,包括20世纪60年代后期出现的Unix、C语言、HTML、操作系统知识、虚拟内存管理以及汇编程序等等。这也为之后他真正进入计算机领域奠定了坚实的基础。

1989年,在接触了数据库之后,Bruce成为了一名数据库顾问,为许多律师事务所构建专门的数据库软件,这份工作也让Bruce首次接触到了SQL数据库。而正是在这个时期,他坚定了自己专攻数据库的方向。当时数据库已有近三十年的历史,IDS(集成数据存储,Integrated Data Store)、IMS和Oracle等数据库管理系统都在迅速发展。为了适应这波发展,Bruce密集地学习了Ingres和Informix等相关知识。并在1992写了shql,并通过Unix shell脚本实现了SQL。

2000年,Bruce在机缘巧合之下发现了Postgres,并开始成为其中的一份子,这也成为了他职业生涯中最大的转折点。六年后,Bruce和团队成员共同创立了PostgreSQL社区,并在接下来的二十多年内不断作出贡献,一方面负责管理社区和博客,另一方面还负责数据库的开发维护。同时他还是PostgreSQL坚定的布道者,经常在世界各地进行公开演讲,来扩大PostgreSQL的影响力。

可以说,在加入Postgres团队之后,Bruce为Postgres奉献了全部的精力。在他的努力下,Postgres从一个边缘的学术项目逐渐变成了一个具有极大商业价值的数据库。PostgreSQL功能强大,几乎能适应所有的数据库场景,因此受到了全球各大公司的欢迎。而在这份成绩的背后,都能找到Bruce的身影。

只要满足用户95%的需求就够了

问:PostgreSQL社区已经建立20多年了,在我的印象中,它是世界上历史最悠久的数据库社区。那么不同的时代,PostgreSQL社区发生了哪些变化?

Bruce:PostgreSQL创建于1986年,是一款可扩展的关系数据库,可以满足许多新的需求。在它创建的后20年中,这一功能并未得到很好地利用。然而之后这一行业不断发展,人们对于数据的需求有了很大的变化,PostgreSQL的应用范围也有了新的变化。

20世纪90年代时,大部分数据输入与输出都采用简易终端或APC模拟终端。然而在这之后,互联网技术面临巨大革新。我们不仅有物联网、GIS(地理信息系统)以及GPS等技术,还能够获取数据、存储数据并输出数据。同时由于数据仓库的出现,数据分析变得越来越重要。

鉴于这些变化,如果数据库无法拓展,可能会面临许多问题,因为我们需要对复杂的数据进行分析。

问:在过去两年中,人们对于数据库的需求发生了哪些变化?这对云原生开发人员来说意味着什么呢?

Bruce:这个不好说,因为我们的项目已经存在35年了,我们很少会以两年为单位思考过去的事情,不过我们的确还有许多需要改善的地方。

举个例子,如今公司对于数据加密安全的需求逐渐增加,以往我们并未想到会出现勒索软件。不少的公司,尤其是大型公司,正在遭受严重勒索攻击。因此,人们越来越希望我们能够具备安全功能。另外,在过去2年中,大规模平行处理功能以及安全问题可能是比较重要的开发方向。

问:在数据库应用和数据库系统方面,人们的关注点在于数据储存方式以及能够快速地检索这些数据,那么我们如何做到这一点呢?

Bruce:PostgreSQL是一种通用数据库,因此它的重点从来就不在于实现100%的兼容。我们可以为开发人员提供性能优化,满足他们95%的需求,但如果需要满足剩下5%的需求,我们可能需要额外付出比先前多10倍的努力。

总的来说,PostgreSQL作为通用数据库,可以完成各种常见的工作。而如果你需要一些特殊的功能,可以再加上一个数据库,并将两个数据库进行集成。人们往往因为我们没有那些花里胡哨的功能而感到不满,但就是因为我们没有这些功能,所以用户也无需对这些功能进行优化。我们不想让PostgreSQL变得复杂,使得开发人员面临更加严重的问题。

幸运的是,云技术出现之后,我们能够不断验证自己的想法。人们可能会说,如果软件运行太慢,他们会选择改变几个参数。但如果运行太慢,我们会在云中建立一个更大的服务器,而不是花一周的时间去设置参数,从而满足剩下5%的性能。

学术界要拥抱开源新技术

问:在当下的云时代中,如果想从事数据方面的工作,应该如何规划职业道路?

Bruce:我认为,对于学生来说,最重要的是他们在学校学到的内容是否和当前的行业相匹配。 如今获取数据的渠道越来越多,包括移动端、客户端、浏览器以及GIS等等。 开发人员必须要了解这些内容,才能更好地了解数据库。 而对于大学生来说,我认为他们都需要更加关注市场需求,学习开源知识并且加入开源社区。 因此我希望学术界能够拥抱新技术,让它们走进大学。

问:对于中国开发者,你有哪些建议?

Bruce:在过去的4年里,使用PostgreSQL的中国开发者越来越多,这在以往是不可想象的。 中国有更多的机会能够参与到这一全球进程中,并做出成绩。互联网为彼此打开了交流的大门,之前只有发达国家/地区才有的机会,现在在世界的任何一个角落都能拥有。因此中国开发者可以通过不断学习新技术,从而获得真正的成功。


按DB-Engines 2021年10月份统计,PostgreSQL当月上升10.30点,总分是597.27;而SQLServer当月大幅下降16.32,总分是954.29。按照这样的速度,两年之内PostgreSQL可能会超越SQLServer。PostgreSQL势力坚不可摧,势不可挡,有下面充分的理由表明,它必将超越SQL Server。

1.开源的力量

虽然许多其他数据库技术已经上升或下降,但是PostgreSQL经受住了时间的考验,它每年都在增长,不仅在功能上,而且在受欢迎程度上,都在增长。PostgreSQL 是世界上最先进的开源关系数据库。它正乘着人气飙升的浪潮,最新Stack Overflow调查,将其列为"最需要"数据库,DB-Engines 将其评选为2020年度重磅DBMS。

特别有趣的是,PostgreSQL的治理模式和所有权模式,与市场上的其他数据库相比,截然不同。PostgreSQL不受任何公司的控制,它拥有最自由的开源许可协议。这允许它被不同公司无条件共享、使用、分发和重新开发。其许可协议的自由性质,使商业项目、开源项目等都从社区生态中受益。

2.创新无止境

多年来,PostgreSQL的核心功能不断成熟和完善,但将代码直接合并进入 PostgreSQL 内核并不总是一件容易的事。全球开发组团队对新功能和代码保持严格审核。

虽然这可能会引起一些寻求官方支持的功能的贡献者的担忧,但PostgreSQL的架构旨在允许开发和交付新功能作为扩展(插件)。这有效地隔离了可能为错误的新代码,引入不确定性。这种方法并非独一无二。MySQL 和MariaDB 也有插件架构;然而,它并没有证明像PostgreSQL那样受欢迎。

这种扩展性(插件)允许用户和公司创建软件,在不完全分支代码的情况下增强 PostgreSQL以用于特定用途案例。事实上,45个不同的社区提供的扩展已包括在官方发布的附加模块,此外,还有数千个扩展(插件)没有被官方渠道收录。此外,许多公司都保留自己的PostgreSQL分支和"企业版"。这些扩展,分支和项目是大有可为的,由于PostgreSQL自由许可协议,它允许任何人从PostgreSQL核心包开始进行任何的迭代和开发。

3.强大生态社区

PostgreSQL社区包括全球数十万用户,以及数百家提供模块、BUG修复和扩展的公司。这一广泛而多样化的参与者,给PostgreSQL社区带来了巨大的优势。就PostgreSQL而言,数百家不同的公司提供市场营销、工程、销售、培训和教育。所有参与社区的公司都提高了意识和需求,并推动项目向前发展。

这种团队力量是一个巨大的战略优势。全球团队的力量碾压一切。甲骨文正在推动其旗舰数据库的知名度,只有它的一些合作伙伴贡献了一点。但是,在PostgreSQL社区中,您拥有所有云服务提供商(微软、AWS、Google 等),以及较大的 PostgreSQL 供应商(如中国的太阳塔、Percona、EDB、CrunchyData、Ongres 等),以及不同的社区项目,所有这些提供商都携手合作。这些机构背后有很多力量。

这些公司也为用户提供了大量的选择,这对采用PostgreSQL的用户来说是一个巨大的好处。这意味着,如果你不喜欢一个供应商,你可以很容易地尝试另一个。

"多能的力量"在这里带来了显著的优势,增加了创新、功能和模块。PostgreSQL14已经是一个梦幻般的通用数据库,但公司在此基础上再接再厉,创建了一个伟大的"NewSQL"数据库,一个更伟大的分析数据库,等等。

更多的工程师、更多的公司和更多的贡献者允许多元化和增长,而这种多样性和增长往往在大公司中会慢得多,甚至不存在(在那些公司里,群体思维可能是一个真正的问题)。在PostgreSQL,它带来更智能的解决方案和更快的创新。

4.群雄纷争

显然,它并不总是一帆风顺的。与任何社区一样,在前进的最佳方式上也存在分歧和争论。最近,我们看到一些关于商标所有权和项目治理的关注。这引起了激烈的辩论,不同的社区成员似乎意见相左。

从外部看,这看起来可能很糟糕,但社区内部的公开辩论和讨论是常见的,通常是健康的。开源之所以如此伟大,部分原因在于将不同角度的人的想法汇集在一起,并采纳其中最好的一种。不是每个人都会对结果感到满意,但只要我们继续讨论、辩论和演变,我们都能取得成功。

PostgreSQL 的开放式开发模式、自由许可和丰富的功能创造了非常忠诚的用户群和一大批致力于推动采用并继续保持用户群快乐的公司。其背后的势头没有放缓的迹象,我预测它将继续在未来几年内增长。如果它最终结束 MySQL 的统治地位,占据榜首位置,也不会感到惊讶。

PostgreSQL的未来之路(PostgreSQL’s Path to the Future):

1.事物的发展极少是直线向上、一蹴而就的,必然会经过不断的改进,曲折向上发展。

2.开源软件相对公司产品具有更为广泛的目标:功能集、开源协作、更多兴趣与挑战;

3.PostgreSQL发展的里程碑事件:1996年,开始逐步运行稳定-->1998年,SQL 标准化-->2001年,企业级产品发布-->2012年以后,更灵活、弹性化,扩展了很多非关系模型的功能集;目前在很多方面已经超越了主流的商业数据库。

4.未来PostgreSQL发展方向:继续功能扩展,关注改善单个会话的资源利用(CPU、内存、磁盘);引领关系数据库的特点、管理及性能发展。


PostgreSQL开源软件开发过程(The PostgreSQL Open Source Software Development Process)

1.PostgreSQL是开源的一部分,开源相对于闭源主要优势在于

开源将民主引入软件开发(投票决定功能开发),开发协作更开放,更多的人才参与其中;开发者与用户之间交互更为实时、紧密;有很多知名企业在拥抱开源,参与开源贡献,譬如亚马逊、谷歌、微软、;软件聚焦于软件本身的功能完善和用户免费使用,志趣发挥了更多的作用。

2.PostgreSQL采用的模式

Postgres通过邮件列表讨论功能和性能;邮件列表是面向世界公开的,每个人都可以阅读和发表见解,使得PG拥有了一个世界性的人才库,意味着任何人,任何地方,包括在中国,中国的许多人已经参与了,都可以成为全球人才的一部分。

3.最初,对Bruce最有价值和帮助最大的人在俄罗斯的西伯利亚

后来,还包括了很多来自匹兹堡得、加州、德国、英国、瑞典、澳大利亚的伙伴们。从此,Bruce接触到了世界各地的人才。这是非常重要的,因为你和越多的人才交谈,你就能得到更好的想法。

4.PostgreSQL是开源的

意味着所有代码、补丁修改审查、测试、发布都是公开的。这意味了开发者所作的一切,都可以有用户参与。用户不仅可以参与到功能讨论中来,还可以参与补丁审查和测试、数据测试和发布以及修复bug。这是开源在今天如此流行的主要原因。

5.Bruce已经和开源一起工作了30年

在过去的30年里,每个人都达成了某种共识:认为这是一种更好的生产软件的方式。开源如Linux、Java开源项目、Json、Chrome都非常的流行。如果没有开源,你的手机将会是另一个样子;如果没有开源,互联网基本就不会存在。

6.开源项目从创建、发布,到用户和开发人员改进

这个过程中没有预算、没有成本、没有许可证、也没有顾客离开。相比很多商业许可的软件产品发展,因为过于关注牟利,最终消失在大众视野中。开源软件只要可以下载,随时都可以重新启动。有很多项目,包括Postgres,因为没人想做差点夭折,其它人接手重启后,才有了今天的PostgreSQL。

7.Postgres是一个社区发展的项目

意味着不存在单一的控股公司或个人。有多家公司参与其中,包括中国的Highgo和阿里巴巴,特别是Highgo非常活跃。我们有很多来自大学的志愿者,他们对我们的工作很感兴趣。我们有开放的开发过程,你不需要成为会员,只需要订阅一个电子邮件列表,然后发送电子邮件来给出你的意见。就这么简单。我们鼓励新的领导,新的成员。

8.PostgreSQL是开放的项目,社区一直在招新人

最近,Bruce在圣何塞,有六家公司表示想让他们的开发人员参与到Postgres中。这是个令人惊喜的消息。也欢迎更多的学生或个人也参与进来。如果你对某事有意见,或者你问一个问题,就发一封电子邮件。

9.通过社区官网(www.postgresql.org)可以创建账号,阅读或订阅开发者邮件列表,关注博客、新闻事件、活动动态、会议通知。

下次会议在德国,Bruce刚刚结束了在赫尔辛基、巴黎和圣何塞的会议。接下来的六个月,渥太华,波士顿,克利夫兰,伦敦,瑞士,德国,布拉格,波兰,洛杉矶都有会议。基本上每个月,会有一到两次会议。相信大家会感兴趣。如果你想参与其中,这是个好主意。这是你融入postgres社区的方式。

10.开源很流行,特别是在有很多用户的应用程序情况下

它通常是一些基础设施的组成部分。所以操作系统、数据库、编译器、像Python或Ruby这样的脚本语言在开源中都非常流行。

11.当我开始使用Postgres的时候,我们还没有闭源软件那么好

对比Oracle,我们抱有希望并很快的进步,获得了更多的特性、可靠性也得到了更好的表现。所以,即使开始的时候,它的能力不如闭源软件,因为开源增长的更快,最终总会超越它们。

12.开源并不总是完美的,这需要努力来保持状态

Postgres是在互联网上开发的,在几十家公司中开发,参与其中的人数以千计。其中一些人是志愿者 没有为任何公司工作,你必须更加努力才能融入Postgres。

13.首先是开源,之后是私有

Postgres在世界各地有很多公司,包括俄罗斯、澳大利亚、英国,法国,德国,瑞士,捷克、中国、日本、韩国、印度尼西亚、新加坡、越南等地区,这些公司支持定制数据库。他们有技术支持、软件包发布、技术培训、提供本地化服务、帮助客户使用Postgres。

14.Postgres采用的是BSD许可证,这意味着它可以用于任何目的,包括闭源软件

区别于GPL许可软件要求源代码可以保持开放,不能关闭GPL软件或使其成为私有软件。有了Postgres,你就可以在本地发布闭源版本或提供云数据库服务,这在美国、中国和欧洲,有Postgres云服务或其他名称的闭源版本。所以,Postgres不仅仅是Postgres,实际上是在很多地方通过再发布的方式得以推广使用。

15.Postgres从稳定性、功能性发展到灵活性,包含了很多的创新,这种创新体现在Json、Range类型、个性化索引等方面。

16.最后,为什么人们从事开源Postgres工作?

可能有4个主要原因:
1)职业发展:学习新技能,成为一个更好的程序员,成为一个有更多能力和更好工作的人。

2)工作需要:开发者可能会围绕Postgres开展工作,客户需要一个特性,他们便会添加它。

3)精神刺激:正如弗雷德里克·布鲁克斯在《人月神话》中所言编程本身是很有趣的。源于人们的乐趣是喜欢制造东西,喜欢让东西变得有用;喜欢解决谜题、学习、创造更有趣的东西。这是一种更高层次的享受。

4)开源信仰:开源软件开发者想到正在构建的东西将被成千上万的人使用,是令人兴奋的,也会因为实现想法产生成就感。除此之外,收入也很可观。所以围绕Postgres工作对你的职业生涯肯定是一件好事。


问与答(Q&A)

1. 如何让你的Postgres补丁容易被接受?

Bruce建议大家考可以阅读以下链接文章:
* Postgres 常见问题(FAQ)https://www.postgresql.org/docs/faq/
* 如何提交一个Patchhttps://wiki.postgresql.org/wiki/Submitting_a_Patch

Postgres的问题是,它实际上有120万行代码,所以你可能不会马上就能提交补丁,可能需要先开始学习这个系统,学习如何使用它,然后开始开发补丁类的东西。

2. Postgres会改变它的开放源码许可吗?

我们得到了加州大学伯克利分校的许可,我不相信我们会改变这一点。它不太可能会改变。PostgreSQL是一个没有限制的许可证,很难想象我们会把它换成一个不同的许可证。

3. PostgreSQL 15什么时候发布,最吸引人的功能是什么?

Bruce负责主要的发布说明,但还没有编写它们,很多的功能还不清楚。但Bruce认为merge 语法的支持(通常用于ETL,数据合并等场景)是令人们兴奋的。还有一些性能方面的内部变化,比如统计数据收集器。更多功能大家可以拭目以待。

4. PostgreSQL最大的优势是什么?

Bruce认为PostgreSQL最大的优势主要是两个方面:
1)PostgreSQL的开源开放性:因为我们是开源的,变拥有了动态的社区、增长非常快的社区,新功能总是不断出现。不仅可靠性很高,性能也很高。

2)PostgreSQL的可扩展性:在1986年的时候,它便已经被设计为可扩展的。可以向数据库添加语言,可以添加数据类型,可以添加索引方法、操作符、类型转换、聚合;支持GIS、Json、全文搜索、范围类型、XML。

Postgres的独特之处在于它同时执行关系和非关系操作。现在我们从很多不同的地方获取数据,关系系统必须具有灵活性,必须能够处理复杂的数据,而Postgres是唯一真正能够做到这一点的数据库。