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