数据库 频道

开源PolarDB,阿里云的诚意

  2017年9月,北京,阿里云PolarDB发布会现场,老鱼曾问过前阿里云数据库负责人褚霸一个问题,PolarDB会开源吗?当时褚霸的回答:不排除未来开源,可能会以捐赠模块的方式,部分开源。

  2021年5月29日,同样在北京,阿里云开发者大会上,阿里云宣布开源PolarDB,并率先开源了PolarDB for PostgreSQL。


题图:来自2021阿里云开发者大会李飞飞演讲截图

  “我们希望将阿里云在云原生分布式数据库技术上积累的丰富经验,通过标准技术组件和系统的方式开放出来,共建开源数据库生态。”阿里云智能数据库产品事业部负责人李飞飞表示。

  PolarDB是阿里云自研的云原生关系型数据库,采用的是分布式共享存储(存储与计算分离)架构。2017年9月正式对外发布,在2018年10月商业化后,迅速成为阿里云增长最快的数据库产品。2021年4月,PolarDB获得科技进步一等奖,这无疑是对PolarDB极大的褒奖。

  很多人不禁要问,对于这样一个有着光环加成且最核心的数据库进行开源,阿里云的目的是什么?开源诚意又有多少?应该如何看待阿里云开源PolarDB?

  为此,老鱼独家专访了阿里云智能数据库产品事业部负责人李飞飞和阿里云智能资深技术专家曲山。

  开源目的

  阿里云为什么开源PolarDB?

  PolarDB既不缺资源,也不缺市场份额,更不缺认同,似乎很难找到必须开源的理由。

  其实不然,通常大厂开源目的主要有2种:

  1、覆盖用户

  2、建立生态

  覆盖用户,通过开源,降低准入门槛,这样可以使得用户量大增,合作伙伴也爱用(因为,可以基于社区版基础做商业发行版,用自己的总比用别人的强)。Google开源Andriod就是很好的例子。

  建立生态,数据库产业是生态型产业,生态不行是做不起来的,这点Oracle就是一个很好的例子。不仅自身产品强大,周边生态非常完善,与上下游产品的兼容性,配套软件、工具、技术人才等等,这些都非常重要。

  据传,最初对于开源,阿里云内部有过非常激烈的探讨,阿里云智能总裁张建锋与李飞飞甚至拍过桌子,但最终还是决定开源。

  李飞飞强调,开源并非灵丹妙药,但开源是建立生态非常关键的抓手。

  为何开源PG版

  为了兼容数据库生态,针对不同数据库协议,PolarDB有三个版本,分别是PolarDB for PostgreSQL,PolarDB for MySQL,PolarDB for Oracle。

  阿里云为什么选择开源PolarDB for PostgreSQL而不是另外两个版本?这不得不让人产生联想。毕竟,华为开源的openGauss就是基于PostgreSQL内核。

  不过,李飞飞告诉老鱼,阿里云选择开源PolarDB for PostgreSQL不能说与openGauss毫无关系,但关系很小,更主要的还是基于两个原因。

  1、阿里云已经开源了AliSQL,也就是说,在MySQL生态方面,阿里云已经做了一个,再开源一个没有必要,难道还要自己跟自己打?因此,在这样的前提下,很自然PolarDB就选择PostgreSQL版开源。

  2、PostgreSQL另一个好处是内核代码学院派,学院派的特点是非常模块化,代码可读性很高,二次开发友好,远高于MySQL。另外,搞技术的都清楚,PostgreSQL查询优化器要远优于MySQL,HTAP是阿里云认定的未来重点方向之一,后续阿里云希望与开发者共建打造HTAP能力,这是一个关键因素。

  李飞飞强调,PolarDB技术在MySQL版和PostgreSQL版上,只是实现的工程代码不同,但技术原理完全一致,这并不影响对技术的探索。简而言之,本质上开源哪个并不是那么重要,重要的是PolarDB的开源并非遮遮掩掩,而是有着明确的开源路线图,且分量十足。

  阿里云开源诚意

  据了解,此次阿里云开源的PolarDB for PostgreSQL是基于Paxos复制的高可用三节点集群版。开源范围包括数据库产品内核、相关插件、工具脚本、测试用例以及设计文档。

  从公布的信息看,开源的PolarDB for PostgreSQL拥有不少自己的核心技术的,如:基于X-Paxos和混合逻辑时钟(HLC)的分布式和全局一致,全面兼容PostgreSQL单机SQL能力,细粒度sharding和弹性,以及通过插件化实现快速易用的升级。这里必须点个赞。

  阿里云智能资深技术专家曲山告诉老鱼,开源的PolarDB for PostgreSQL,采用Apache Version 2.0 协议。李飞飞强调,该协议非常友好,无传染性,PolarDB开源不仅面向中国,也面向世界。

  目前,该项目已经在Github(https://github.com/alibaba/PolarDB-for-PostgreSQL)发布,作为阿里巴巴开源项目的一部分。

  预计6月,阿里云会成立PolarDB开源社区。

  对于开源后的版本规划,阿里云很明确,半年一个小版本,一年一个大版本。“当然,今年会比较特殊,版本迭代会更频繁,每半年会出一个大版本。”曲山特别强调。

  值得一提的是,曲山告诉老鱼,随后,具有较好规模化扩展能力和性能的PolarDB for PostgreSQL分布式插件版也将开源。

  那么,开源后的PolarDB for PostgreSQL技术路线图是怎样的?曲山说,研发计划将通过三步走的方式来完成。

  首先,发布基于Paxos复制的高可用三节点集群版,聚焦单机高可用和高性能。

  其次,引入分布式事务、时钟和分布式SQL计算等核心技术,将三节点高可用集群扩展为分布式share-nothing OLTP集群版,该版本既具备三节点版的高可用和单机高性能,同时也具备100+节点的分布式扩展能力,兼容单机的大部分SQL能力和全局一致的ACID能力。

  最后,统一数据库组件角色,支持细粒度的sharding,通过插件化分布式能力,实现对社区版本的快速兼容。

  据阿里云数据库开源规划,后续还将陆续开源MySQL生态的系列产品与技术组件:云原生MySQL数据库ApsaraDB GalaxySQL(也是阿里云MySQL RDS服务内核)、高性价比存储引擎X-Engine和分布式一致性协议算法库X-Paxos。

  曲山透露,未来PolarDB-X很有可能也走向开源。

  李飞飞最后强调,开源是否有诚意,不能以是否完全开源(内部版与开源版完全一致)作为评判标准。在商言商,完全开源不现实,哪怕国内开源最友好的TiDB也不是完全开源,也同样有很多核心技术不开源,国外开源项目亦是如此。

  开源是否有诚意,关键看开源组件是否有足够的分量,如果开源的只是些“小虾米”,甚至开源出来的东西都运行不起来,那才是没诚意。

  写在最后

  整个采访下来,老鱼能感觉到李飞飞的坦诚,对于尖锐的问题并不回避,对阿里云开源的动机也没有任何遮掩粉饰,否则上述不少内容,各位就会无缘得见。

  将最核心的数据库产品开源,并把接下来的开源路线图都讲的非常清楚,代表的是阿里云开源的诚意。

  总的来说,开源是好事,国内的开源氛围也越来越好。

  目前,国内开源的分布式数据库并不多,而一个繁荣的新数据库生态是需要多样化的产品和技术,毕竟有竞争,才能让更好的数据库继续演进。

2