皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

对话PostgreSQL元老Bruce Momjian:开源社区需要中国开发者的声音

作者 蔡芳芳

2017年10月21日PostgreSQL 2017中国技术大会于深圳科兴科学园国际会议中心圆满收官。“PostgreSQL大象汇”是由PostgreSQL中国用户会发起,一年一度的PG技术盛会,到2017年已经是第7届。正值PostgreSQL 10新版本发布之际,今年大会特意邀请到PostgreSQL开源社区创始人之一Bruce Momjian来到大会现场,与中国用户分享新版本的个中细节及后续的发展计划。同时国内顶尖技术专家也悉数亮相,为大家讲解一年来不同企业中PostgreSQL的使用情况。在大会期间,InfoQ记者采访了Bruce Momjian,他为我们解读了PostgreSQL的发展历程、现状和重要特性,并分享了他对于开源数据库未来发展的看法。

对话PostgreSQL元老Bruce Momjian:开源社区需要中国开发者的声音

嘉宾介绍

Bruce Momjian是Postgres社区创始人同时也是EnterpriseDB公司的高级数据库设计师,著有PostgreSQL: Introduction and Concepts一书,同时参与计划及开发多组Postgres系列数据库的功能、性能、稳定性、高可用性等程序。

Info Q:能否介绍一下您在EnterpriseDB和PostgreSQL社区中分别担任什么角色?如何平衡不同角色的工作?

Bruce Momjian:我加入Postgres社区已经有21年了,作为社区的核心成员之一,我参与计划及开发Postgres的功能。一开始Postgres社区只有一小拨人,但因为Postgres的优秀特性,很快它就变得非常受欢迎。由于我在Postgres社区的角色,我每年要花四分之一甚至三分之一的时间在世界各地出差,我负责PostgreSQL的特性、问题修复、文档等多项工作,我也致力于推动Postgres被更多人使用,协助建立Postgres新社区,比如中国社区,因此我大概有80%的时间都花在Postgres社区相关的工作上。

剩余的20%时间则投入EnterpriseDB的工作中,包括解决客户问题、培训、提供技术咨询等。其实这是一个比较理想的时间安排,因为一个健康的社区对于EnterpriseDB来说非常重要,而我最主要的工作就是维持社区的健康度。大家可能会以为社区的成立、运转、活跃都是自然而然的,但这并不是事实,一个技术社区的正常运转和长期维护是需要投入很多时间和精力的,需要举办活动提高社区活跃度、提高社区成员的满意度、不断优化技术和软件,才能吸引新成员、壮大社区。

InfoQ:PostgreSQL推出至今已经超过30年,请您简要地介绍一下PostgreSQL的发展历程?

Bruce: Postgres最初创立于1986年,前十年Postgres主要活跃在大学校园里、更多用于学术研究,接下来的几年仅有1-2个人对它进行最小限度的维护和支持,软件代码维护得并不好,还有很多Bug等待修复,也正是那个时候(1996年)我开始参与到这个项目中。

当时我觉得Postgres是一个非常有趣的软件,它与当时流行的商用数据库非常类似,但缺乏定期维护,因此我们聚集了一些人开始修复问题、定期发布新版本,而这又形成了一个良性循环,越来越多人从不同的途径给我们反馈问题、帮助我们修复问题,于是我们又可以继续发布新的版本,就这样过了几年时间,我一直作为志愿者参与Postgres社区工作。

谈到PostgreSQL以及开源项目,Bruce又说了点题外话,他认为人们热衷于开源项目通常有几个原因,一是他们真正有使用这个软件或产品的需求,他们希望能够为这个软件增加新的特性;二是他们喜欢解决问题,尤其是复杂的问题;三是他们在日常工作中遇到了瓶颈,他们希望能够尝试一些更有趣的挑战;四是他们很享受自己参与开发的软件被很多人使用。所有这些激励要素结合在一起才可能形成一个优秀的技术社区。

InfoQ:PostgreSQL自推出以来一直非常受欢迎,在最新的数据库排行榜(DB-Engines Ranking)中PostgreSQL依然稳定在第四位,PostgreSQL相比其他数据库(包括Oracle、MySQL和Microsoft SQL Server)有哪些优势?

对话PostgreSQL元老Bruce Momjian:开源社区需要中国开发者的声音

摘自Bruce演讲PPT,PostgreSQL的优势主要体现在四个方面:对象关系型设计(保证可扩展性)、支持NoSQL类型、对数据分析友好、外部数据包装器。

Bruce:在修复完Bug之后,我们花了几年时间为PostgreSQL增加标准SQL特性,随后又花了七年时间增加高级SQL特性,现在我们正在为Postgres增加一些极具创新性的新特性,而这些特性可能还没有人尝试做过。如果跟Oracle、MySQL对比的话,你可能会发现他们还在关注传统的transaction workloads,而Postgres则关注一些更高层级的特性并希望能在高级特性上向Oracle看齐,目前Postgres已经可以完成Oracle能做的工作的50%左右,甚至在性能上可能超过了Oracle。MySQL在简单的workloads上与Oracle类似,但在复杂的workloads上则无法匹敌。

我认为可扩展性、兼容Oracle以及丰富的新特性,比如NoSQL、GIS、JSON相关特性,是使Postgres脱颖而出的重要原因。一开始人们选择Postgres可能是因为它是开源的、免费的,但后来越来越多人因为Postgres能够满足他们对于数据库的需求而选择它,我相信未来后面这种情况会更加常见。

Postgres在设计之初就是按照对象关系型数据库来设计的,因此它具备更易扩展的特性,不论是新的数据类型、新的索引和方法、新的操作还是新的过程语言都能很方便地扩展,这也是Postgres的重要优势之一。许多数据库会将扩展插件作为特例并设定严格的限制,而Postgres的内置插件和扩展插件使用相同的API,因此扩展插件可以像内置插件一样操作和使用。同时,Postgres支持Foreign Data Wrappers,可以读写数据到不同的数据源(包括MongoDB、MySQL、Oracle等)、接口(JDBC等)和非传统数据来源(如文件、HTTP、AWS S3等)。

另外,像Oracle这样的商业公司花费五年时间在推动数据库项目上的进展,Postgres可能只要18个月就完成了。Postgres每年都会推出重要的新特性,而这放到Oracle或者MySQL可能需要四年时间,这是因为典型的企业如果想要开发新的数据库,他们一次只能专注于某一个或两个方向上的创新,而Postgres由整个社区共同参与、独立开发不同的特性。我们一年的重大更新中可能会覆盖到多达7个不同方向,比如性能提升、云、开发工具、模式(Schema)、安全等。Postgres没有控制中心,由分布在不同国家的不同开发团队并行展开开发工作,因此我们的新特性扩展和进步的速度要比其它的数据库快得多,这也是Postgres的一大优势,未来这个优势还会越来越明显。

InfoQ:业界对于SQL和NoSQL哪个更好的争论从未停止,前几年很多人更推崇NoSQL,而如今有人认为SQL正在回归,对此您有什么看法?PostgreSQL在这场争论中有何优势和劣势?

对话PostgreSQL元老Bruce Momjian:开源社区需要中国开发者的声音

Bruce:这是一个非常有趣的争论。我从事数据库相关工作已经有差不多25年了,这期间陆续出现了很多新的数据库,每一次新数据库推出的时候关系型SQL数据库都会受到挑战。最初对象数据库推出的时候有人说关系型SQL数据库要过时了,接着XML数据库推出的时候也有人说关系型SQL数据库要过时了,后来NoSQL推出的时候当然又有人说SQL过时了。

关系型的概念最早可以追溯到1970年左右,关系型系统拥有非常坚实的数学学术背景,IBM开发了SQL语言之后SQL就成为了标准的数据库查询语言。但随着时间的演进,我们对于关系型数据库的需求变了,我们需要一些新的特性,比如Jave语言的接口或者访问XML的接口。但SQL并没有去适应这些新的需求,没有任何的改进或者变化,随着对象数据库、XML数据库、NoSQL数据库开始涌现并且变得很受欢迎,就有很多人说SQL过时了。这个时候SQL的开发人员才开始考虑,是不是能够借鉴对象数据库、XML或者NoSQL的优秀特性,并增加到SQL中,实际上后来也确实这么做了。

每一种数据库其实都有好的一面和不好的一面,SQL虽然一开始没有跟上竞争对手的演进步伐导致被诟病,但近几年已经开始将竞争对手的优点采纳进来,比如NoSQL的文件存储、索引方法、键值、快速模式等等,因此自然会有人说SQL回归了。这不意味着NoSQL会就此消失,但我认为NoSQL只应该被用在那些只有NoSQL才是最优解决方法的应用场景,比如需要大规模写入且单台服务器无法支撑、只需要简单的数据访问模式、非结构化重复数据能极大地受益于列压缩等情况。现在已有越来越多人开始意识到NoSQL的缺点,比如数据报告展示、数据规范化、数据清洁、数据完整性问题等,更不用说极其复杂的查询语句,都给使用带来了很大的麻烦。

InfoQ:2009年您曾来过一次中国,那时候PostgreSQL中国社区刚刚成立,而今年,由PostgreSQL中国用户会发起的PostgreSQL大象汇已经是第7屇了,这次大会上也有很多公司来分享PostgreSQL在企业中的应用实例,您如何看待PostgreSQL在中国的发展情况?

Bruce:其实以前PostgreSQL中国社区与其他国家的社区之间的联系还比较少,我希望接下来我们能够进入一个新的阶段,中国社区与其他国家的社区之间的联系能够不断加强。

坦诚地说,PostgreSQL在中国的应用情况相比其他国家还是偏少。我不太清楚其中的原因,以MySQL为例,MySQL在世界范围内被广泛认为已经在衰退,但在中国却不是如此。这可能与当地的文化环境有关系,大家可能更愿意信赖大公司的产品,比如Oracle等,或者更愿意参考大公司在使用的产品,比如互联网巨头在使用什么样的数据库,小公司就更倾向使用同样的数据库。

三四年前在俄罗斯也出现过类似的情况,那时候在俄罗斯PostgreSQL的用户应用很少,MySQL、Oracle依然占大头,后来几年间俄罗斯社区的成员为PostgreSQL做了一些非常重要的工作,并且得到了一些大型科技公司甚至政府的支持,现在PostgreSQL在俄罗斯的应用情况已经有了很大的进步,每年都会举行几场PostgreSQL的技术会议。我希望PostgreSQL中国社区能够多与世界各地的社区交流、能从俄罗斯社区吸取一些经验,推动PostgreSQL在中国更加广泛的应用。

InfoQ:PostgreSQL目前正在关注哪些新特性,为什么这些特性重要?

Bruce:如我前面所说,PostgreSQL会同时在不同的方向上做一些改进工作。所以当你回顾PostgreSQL的发布版本和重大特性时,你会发现一些对于数据库管理员来说非常有帮助的逻辑应用,可以帮助管理员在多个数据库之间分布式地存放数据,或者在一个数据库的多个表之间透明地移动数据,对于那些需要创建非常复杂的数据表结构的DBA来说是非常有价值的特性。与此同时,我们也会进行一些并行性改进,用于大容量的特定数据的分析工作;改进同步复制以提高可用性;改进优化器以提升性能;增加新的安全能力;改进用于大数据分析的图表等等。

InfoQ:目前AI已经成为业界的热门词汇,您认为AI时代的到来会给开源数据库带来哪些新的挑战?数据库是否也会向“智能化”发展?

Bruce:我对于AI了解不多,但是我认为PostgreSQL的架构非常适合进行AI相关的开发和实验。伯克利大学的开发人员当年开发PostgreSQL的时候就已经将它设计成可扩展的系统,因此使用者可以往PostgreSQL上增加新的操作、新的存储过程语言,甚至是新的算法,如果开发人员想要将AI能力引入到数据库中,PostgreSQL几乎是唯一的选择,因为只有它真正具备这样的“钩子”能够将AI代码嵌入到数据库内部,其他数据库则难以做到这一点。AI应该是一种客户定制化的应用能力,而PostgreSQL支持将AI相关代码嵌入到数据库中的任何层级。

InfoQ:这几年中国的开发者正在越来越积极地参与全球开源项目,您对中国的数据库开发者和技术开发者参与全球性开源项目还有哪些建议?

Bruce:我认为有几个原因给中国的开发者参与全球开源项目带来了困难。首先是语言障碍;其次是社区提供给中国开发者的中文资源不够多。比如我们有PostgreSQL的网站,但没有中文站,其实可以由社区去做一些翻译工作,为中国的开发者提供更多的中文资料。

另外,我们需要在中国找到一组人,作为中国开发者和国际社区之间沟通的桥梁。比如设立一个中国开发者专用的邮件列表,中国开发者遇到问题的时候可以用中文给这些邮箱发送问题,由这组人处理将他们的问题汇总并翻译成英文与国际社区的成员讨论后,再将解决方案处理成中文返回给中国开发者,从而帮助不懂英文的人参与到项目中来。这项“中转”工作可能需要持续一段时间,但最终可以使中国的开发者更有信心直接参与到国际社区的交流中。

InfoQ:关于开源数据库的未来,作为一名资深开发者,您还有什么想对中国开发者说的?

Bruce:我很遗憾中国这么迟才参与到全球的PostgreSQL社区中来,但我觉得中国的开发者拥有非常大的潜力和非常多的机会,未来一定能从全球的开发者中脱颖而出。

从前开发者大多居于幕后,只负责默默地写代码,而销售人员、市场人员则在台前冲锋陷阵。但在开源项目中情况则截然不同,开发者就是负责与社区、与外界对接的人,这对中国的开发者来说是一个巨大的机会。虽然一开始可能很多人会对站到台前这件事感到害怕,但过一段时间之后再回过头来看,你可能会意外地发现自己其实做得很不错。中国有很多聪明的开发者,我希望你们能够在全球技术社区中展现自己的技术能力,更积极地参与到PostgreSQL这个项目中来。

转自 http://www.infoq.com/cn/news/2017/11/PostgreSQL-need-sound-china