关于数据库:国产数据库发展十策三是走MySQL路线还是PostgreSQL路线

5次阅读

共计 7473 个字符,预计需要花费 19 分钟才能阅读完成。

国产数据库的倒退中,毫无疑问,通过借鉴先行者的教训,咱们能够取得肯定的后发优势。通过四十年的摸索,国产数据库造成了三大源头:购买闭源代码排汇,依靠开源代码迭代,自主研发从头开始。而在开源产品的根底上迭代,又以 MySQL 和 PostgreSQL 居多,那么到底这两条技术路线哪一条更值得长期投入和用户抉择呢?

重要通告:受疫情影响,2021 数据技术嘉年华 改为线上举办,收费注册,欢送大家加入第一次在“元宇宙中举办的数据技术嘉年华”。

MySQL 和 PostgreSQL 孰强孰弱?

对于 MySQL 和 PostgreSQL 孰强孰弱的话题,在社区中,两边的拥护者早已火药味十足的论战不休。然而最近(12 月 5 日),Oracle 前首席软件工程师、MySQL 优化器团队成员,Steinar Gunderson 从 MySQL 团队到职时,则是向 MySQL 开了一炮,并实名点赞 PostgreSQL,引发了业内激烈的碰撞探讨。
他在集体博客上这样形容:

“MySQL 是款超烂的数据库,强烈建议大家认真思考转用 PostgreSQL。
MySQL is a pretty poor database, and you should strongly consider using Postgres instead.
应用 MySQL 就像走进了一个平行宇宙,这里有很多人都由内而外笃信着 MySQL 就是最先进的数据库产品。但我不行,我的工作常常须要向观众们解说优化器的外部工作原理,所以我特地能感触到 MySQL 的种种设计是如许原始。

他还准确的指出了 MySQL 的实质问题:

无论你怎么看,在 Oracle 下的 MySQL 始终没有‘掌舵人’,在外部简直快被摈弃。

一款短少掌舵人的数据库,很难被认为是”有灵魂“的。

作者指出:

更令人震惊的是那些保持认为所有都很好的人(仿佛大多数 MySQL 用户和开发人员并没有真正应用其余数据库)。

这是我深有同感的一点,很多人都旗帜鲜明的宣称,某某数据库是宇宙中最好的数据库,然而他们甚至对其余数据库无所不知或满怀偏见。

当然 Steinar 表白的仅仅是一个人的观点,然而能够帮忙咱们窥豹一斑。对于用户数据库的抉择,我的主张,肯定是应该主观的,从本身理论场景和须要登程,抉择适宜利用的、适宜本身能力的产品,取长补短。

国产数据库和 MySQL、PostgreSQL 的渊源

毫无疑问,MySQL 依然是当下寰球最风行的开源数据库,自 2009 年 Oracle 通过收买 SUN 获取了 MySQL 之后,就独拥寰球最弱小的两款数据库:商用的 Oracle、开源的 MySQL。紧随 MySQL 的开源数据库,正是 PostgreSQL,而且其增长趋势迅猛。

国产数据库和 MySQL

在 2021 年 6 月,Oracle 官网在公众号公布了一篇文章,题目是:《GPL 协定保障 MySQL 的自在收费凋谢》。这篇文章中指出:

GPL 协定保障 MySQL 继续开源,满足信创自主平安可控指标,相较于其余数据库,在稳固牢靠,继续翻新,拥抱凋谢方面,有着独特的价值劣势,充分利用自在开源软件,实现我国信息化产业的独立自主指标。目前在我国信创名单中的数据库厂家中,有多家数据库产品均和原生 MySQL 兼容。


文章中还追溯了操作系统的国产化历程:

openEuler 是一款开源操作系统,内核源于 Linux…基于 Linux 遵循 GPL 开源许可的“传染性”,openEuler 以及其商业发行版同样遵循 GPL 开源协定。普华根底软件、麒麟软件、中科院软件所、拓林思等越来越多的操作系统厂商公布了基于 openEuler 的商业发行版。

这篇文章传播的用意十分明确,探讨了操作系统的 GPL 协定听从,那么数据库呢?

国产数据库和 PostgreSQL

事实上,有更多的国产数据库和 PostgreSQL 相干。
在下图中,咱们描述了 PostgreSQL 的产品图谱,不仅国内,在国外也有很多产品和 PG 共有源头,而这个源头上最早就有华人的身影,王佑曾学生和 Michael Stonebraker 传授独特创建了 Ingres,而 Ingres 正是一系列赫赫有名数据库的源头。

为什么这么多国产数据库能够依靠开源的 PostgreSQL 来构建呢?这就是开源协定的影响。

GPL、BSD 和 木兰协定

既然要在开源的根底上构建数据库产品,那么天然要遵循开源的许可协定,也就必然要充沛理解这些协定的区别。
当初行业上曾经建设起共识:数据库开源是将来的趋势。越来越多的国产数据库走向开源,这包含 华为的 openGauss、阿里云的 PolarDB、奥星贝斯的 OceanBase、PingCAP 的 TiDB、腾讯的 TDSQL(其中的 TDSQL- A 开源)等。
说起开源协定,有 3 个协定值得认真理解和关注:

BSD 协定

BSD 是 ”Berkeley Software Distribution” 的缩写,最早源自 1971 年加州大学伯克利分校。
BSD 开源协定给予使用者很大的自在,基本上使用者能够 ” 得心应手,随心所欲 ”, 包含自在的应用,批改源代码,也能够将批改后的代码作为开源或者闭源软件再公布。
PostgreSQL 是依据 PostgreSQL 许可证 公布的,这是一个自在的开源许可证,相似于 BSD 许可证。PostgreSQL 数据库管理系统的协定阐明:

在此容许为任何目标应用、复制、批改和散发本软件及其文档,无需付费,也无需书面协定,但上述版权申明和本段及以下两段应呈现在所有正本中。
在任何状况下,加利福尼亚大学都不对任何一方因应用本软件及其文件而造成的间接、间接、非凡、偶尔或间接的侵害负责,包含利润损失,即便加利福尼亚大学已被告知这种侵害的可能性。
加利福尼亚大学特地申明不提供任何保障,包含但不限于适销性和实用于特定目标的隐含保障。此处提供的软件是以 “ 现状 “ 为根底,加利福尼亚大学没有任务提供保护、反对、更新、加强或批改。

GPL 协定

GPL 全称是 GNU General Public License 协定,其外围是只有在一个软件中应用 (“应用”包含对类库援用,批改后的代码以及衍生代码)GPL 协定的产品,则该软件产品必须也采纳 GPL 协定,既必须也是开源和收费。
这就是所谓的 GPL 协定“传染性”。对于应用 GPL 协定的开源代码,商业软件或者开发人员对代码进行集成以及作为类库进行二次开发,在进行再公布的时候须要随同 GPL 协定。
GPL 有两个属性广受关注,那就是:可批改 和 可盈利。

  1. 可自在批改
    如果你想增加或删除某个性能 或者 在别的我的项目中应用局部代码,没问题,惟一的要求是,应用了这段代码的我的项目也必须应用 GPL 协定。
  2. 可用来盈利
    你能够在散发软件的时候免费,但必须在免费前,向你的客户提供该软件的 GNU GPL 许可协定,以便让他们晓得,他们能够从别的渠道收费失去这份软件,以及你免费的理由。
    开源协定泛滥,下图对不同开源协定做了一个很好的开展阐明:

    木兰协定

2019 年,中国开源云联盟官网上线了“木兰宽松许可证”(MulanPSL),这是中国首个由官网推出的开源协定,当初更新到 第二版,随后推出的是木兰公共许可证。openGauss 以 MulanPSL2 宽松许可证开源;OceanBase 以 MulanPubL2 公共许可证开源。
宽松许可证较 BSD 协定更自在、更宽松,其要害条款为:

每个“贡献者”依据“本许可证”授予您永久性的、全球性的、收费的、非独占的、不可撤销的版权许可,您能够复制、应用、批改、散发其“奉献”,不管批改与否。
每个“贡献者”依据“本许可证”授予您永久性的、全球性的、收费的、非独占的、不可撤销的(依据本条规定撤销除外)专利许可,供您制作、委托制作、应用、允诺销售、销售、进口其“奉献”或以其余形式转移其“奉献”。

开源实质上也是一种商业模式,自在散发只是其伎俩之一,不同期间造成的不同开源协定,以不同形式成就了开源世界,最终造成了明天开源软件的格局。

国产数据库的抉择和倒退

我在前文已经阐述,首先咱们必须抵赖中国的数据库产品研发,较东方起步晚了 20 余年,咱们必须要正视这个差距,此外,倒退中的国产数据库也必将走向寰球。基于这两个论据,咱们能够得出以下共识。

  1. 借鉴成功经验,站在前人的肩膀上谋发展 – 这也是围绕开源数据库和成熟实践根底建设国产数据库的一个原因;
  2. 建立寰球视线,国产数据库参加国际竞争 – 这就要求咱们须要遵循通用的国内和行业准则方能参加寰球倒退;
  3. 放弃开源凋谢,建立技术自信和科技自强 – 不敝帚自珍不不可一世以开源凋谢之心创始数据库产业中国时刻。

    开源成为趋势

依据数据库风行度趋势,从寰球看,自 2021 年 1 月开始,开源数据库曾经超过了商业数据库,这一趋势不可逆转。所以通过开源进行合作,并通过疾速的用户反馈迭代产品,曾经成为产品成长的快速通道。

抉择 MySQL 还是 PostgreSQL 路线?

无论是基于 MySQL 还是基于 PostgreSQL 来进行迭代演进,都是站在前人积攒的肩上,理解了这一事实,也就可能分明事物的实质。
《坛经》有云:“时有风吹幡动。一僧曰风动,一僧曰幡动。谈论不已。惠能进曰:‘非风动,非幡动,仁者心动。’”
而今开源路线的抉择,MySQL 可,PostgreSQL 亦可,然而外围在于自主可控。只有把握了外围能力,可能走上疾速倒退翻新超过之路,就是正确之路。
遵循根本的开源许可证准则,那么 MySQL 还是 PostgreSQL 作为终点,也就十分清晰了:

  1. 如果抉择一个开源产品,进行闭源商业化,那么请抉择 PostgreSQL;
  2. 如果抉择一个开源产品,开源迭代,那么 MySQL 和 PostgreSQL 都能够。
    这也是为什么有很多商业数据库是基于 PostgreSQL 开发的根本原因,国内外基于 PostgreSQL 所推出的产品都很多,然而受限于开源协定,基于 MySQL 的商业数据库就不多见。
    在 Database of Database 网站上还列出来数据库的血脉,以下列出的就都是基于 PostgreSQL 开发的产品:

    自主研发和硬核实力

要想达成外围自主可控、倒退翻新超过的指标,就要在数据库内核代码上,尤其是外围组件代码上,实现排汇把握、迭代翻新。也唯有如此,能力有机会参加国际竞争。
云和恩墨已经绘制过 Oracle 数据库的外围模块和体系架构图,提取其中的要害、通用组件,能够用来掂量和量度自主研发数据库的外围能力差距和翻新攻关方向:

周傲英老师已经分享过他对国产数据库的观点,其中硬核实力是要害之一:

1. 有胜利的利用,有成体系的技术,再加上在这两者根底上形象进去的概念和实践,方可称为“硬核”。
2. 从这个意义而言,数据库是典型的硬核科技。想要做硬核的事,从利用到技术再到实践是邪道,反过来是捷径。利用、技术和实践三者联动才是翻新之道。
3. 上世纪八、九十年代是数据库产业和学术大倒退的期间,零碎方面有 Oracle、Db2 这样的产品。实践方面欠缺了关系数据库、事务处理、基准评测试等。咱们错过了这个时代,当然就无奈实现数据库的全方位提高。

我十分同意周老师的观点,既然是硬核科技就不能软着来。既然国产数据库要具备国内视线、参加国际竞争,就要致力在核心技术方面进行冲破,既然曾经走过了捷径,就应该回过头来苦练内功。
在 2021 年国产数据库风行度排行榜上,积分规定上减少了 专利 和 论文 两个维度,就是心愿通过更加”硬核“的指标,来量度数据库产品的内核能力,咱们只有在根底钻研、外围算法上一直冲破进取,才有可能在在国际舞台上站稳身影。目前 openGauss / GaussDB、达梦、GBase 的专利数量名落孙山。

有了专利、理论思考和积攒,接下来就是技术冲破,从开源登程,接下来就应该是排汇、翻新、冲破。

造成合力疾速冲破

有人说,中国真正懂数据库内核研发的人才不超过 300 人,也有人说,中国真正顶级的数据库人才不超过 30 人,不论是 30、300 还是 3000 人,咱们都面临人才的极度短缺。
人才不能一日造就,何以解此当务之急?
惟一的计划就是:汇聚生态,独特冲破,合则力强!无论如何,肯定要跳出低层次循环。

PostgreSQL 之 openGauss 根生态

如果咱们认同:进行外围的数据库翻新,必须进行深度的内核研发,那么咱们就必须争取早日具备这种能力。过来在 PostgreSQL 的生态上,大量国产厂商进行投入,开发了许多商用的闭源产品,这其中包含人大金仓、瀚高、优炫等。闭源的问题在于,分则力散,所有人都须要去反复建设包含外围工具、兼容性革新、高可用组件、运维组件等,无限的投入扩散了,投入到内核上的力量就更少了。
华为开源的 openGauss 为咱们做出了一个良好的示范,通过开源简直齐全重写的企业级内核(保障了可控性),以 木兰宽松许可证(MulanPSL2)凋谢,并且邀请大量的合作伙伴独特建设社区、开发新的个性(保障了众创),进而在前瞻性方向上造成冲破。
如果 openGauss 生态最终获得成功,那么就是典型的,合则力强。通过社区共建,根底性能全副开源,防止了不同的厂商的反复建设。明天云和恩墨、海量数据、神舟通用、虚谷伟业、柏睿数据、人大金仓、东华软件、亚信科技、沐融科技、深服气、优炫科技等数据库厂商都投入到了 openGauss 社区,共建开源生态。这是一种全新的形式,肯定会有助于咱们独特倒退向前。
例如,openGauss 实现了 XID 64 位的革新,其他人就不用再头疼事务号回卷问题,又例如 openGauss 通过 Ustore 减少了 Undo 机制,解决了空间收缩和膨胀的 Vacuum 问题,再例如区块链表的实现追平了 Oracle 21c 在这一方向的翻新。这就是众志和开源的力量。

openGauss 以开源生态,让国产数据库在这一方向真正防止了低层次循环,例如,云和恩墨基于 openGauss 的 MogDB,就能够大踏步的去摸索更具前瞻性的技术创新,在高效压缩算法、内存交融技术等方向重点冲破,而不用再一次从头开始。MogDB 也因而得以跻身《2021 年中国信创生态钻研报告》根底软件厂商成长象限。

MySQL 之 openMySQL 根生态如何建设?

支流的 MySQL 的分支包含:Oracle 官网版本 MySQL、Percona Server、MariaDB。其中 MariaDB 在 Oracle 收买 MySQL 之后,MySQL 创始人 Monty 担心 Oracle 开源策略的变动而创立的分支。MariaDB 高度兼容 MySQL,次要由开源社区保护,采纳 GPL 受权许可。
在国内数据库畛域,同样有很多厂商在围绕着 MySQL 的生态进行扩大,这其中包含 PolarDB X、TDSQL-C、GoldenDB、万里开源、热璞等产品。
受限于 GPL 协定,如果在内核方面进行了批改,须要放弃开源,这事实上对商业产品做出了束缚,而如果不作内核方面的改写和改良,仅仅在外围做投入,显然又无奈承载国产数据库产业倒退的厚望。
如何破解这一难题呢?
我已经给一些国产 MySQL 畛域的敌人提过倡议:成立一个生态联盟,进行基于 MySQL 的开源根生态建设。也就是大家独特保护一个内核版本,进行满足 GPL 协定的开源凋谢,而后造成合力,这样,一套分库分表的分布式就可能满足大家的需要,而不是所有厂商反复建设。如此,也可能聚焦投入,放慢倒退。

正如 MariaDB 的联结创始人和产品治理副总裁 – Max Mether 回复本文结尾那场论战时所说的:

In 2016, at MariaDB, we completely abandoned MySQL code, and brought in new storage engines, dialects, monitors, even ML-based workload analysis.
2016 年,在 MariaDB,咱们齐全放弃了 MySQL 代码,并带来了新的存储引擎、方言、监控器,甚至基于 ML 的工作负载剖析。

唯有真正把握,自在倒退,才有可能走上翻新超过之路。

如何构建根生态?

最初,咱们总结一下,如何构建国产数据库根生态?
借鉴前人的成功经验:GPL 和 BSD 协定是 MySQL 和 PostgreSQL 成长的保障:

  • MySQL 的 GPL 协定要求后续的强制开源,确保了开源生态的活跃性和宽泛参加,最大水平的防止了社区的决裂,所有的智慧奉献得以寰球共享。
  1. PostgreSQL 的 BSD 协定,孵化了大量商业数据库产品,催生了各种状态的数据库翻新,造就了大量的 Pg 内核研发人才。
    过来 GPL 协定成就了 MySQL,明天 BSD 协定则成就了 PostgreSQL。在互联网衰亡的浪潮中,MySQL 以其轻、快、小等个性,博得了互联网的时机与青眼,取得了飞速发展;而明天,当企业级市场开始拥抱开源,则 PostgreSQL 的优化器、简单查问反对、兼容性等取得了企业级用户的拥戴。
    如果能将两者联合,也就是以 MySQL 生态模式倒退 PostgreSQL,那将是最佳抉择。而明天的 openGauss 的抱负正在于此,通过 MulanPSL2 去实现开放性和商业化许可,又通过协同大量合作伙伴开源奉献社区实现相似 GPL 的合力。
    那么对于 MySQL 呢?如果能以 GPL 协定实现 MulanPSL2 的成果,则同样倒退会更沉闷。MySQL 还缺什么?如果有一个 openMySQL 作为国产 MySQL 生态的根底,放弃开源凋谢,那么是不是所有就会更美妙呢?
    正如 Monty 创立了 MariaDB 分支一样,中国的 MySQL 生态同样须要一个独特投入的独立分支,唯有如此,MySQL 技术路线能力破局冲破。
    在上一篇文章我提到,明天的国产数据库建设,生态是最重要的。如果大家分头做开源,则很多我的项目最终都可能车水马龙、无人问津,最终成为了为开源而开源,徒增了有数无谓的投入而已。开源的生态,唯有共建才能够继续。在同一方向上,独特汇聚客户的关注、独特解决用户的问题,才是明天的最优解。咱们处于后发阶段,如果力量扩散,很多国产的开源我的项目,最初都可能归于寂静,乃至沦亡。

    策三:众智合力打造国产数据库根生态

以终为始,中国的国产数据库也肯定是世界的,那么回到当下咱们要思考的就是,如何让中国数据库建设起合乎世界规范的技术当先性。
依据以上的阐述,咱们能够独特思考:在开源的根底上,听从开源协定,建立中国规范和路线,汇聚力量打造国产数据库的根生态。如果可能独特构建数据库根底组件,独特进行前瞻技术畛域的冲破翻新,进而在此之上倒退合规的、多样化的商业数据库发行版,则中国的数据库产业必然能够跳出低层次循环、减速倒退。

参考资料

  1. GPL 协定保障 MySQL 的自在收费凋谢
  2. 如何抉择开源许可证?
  3. 对话周傲英:数据库人的欢天喜地
  4. Leaving MySQL
  5. MySQL a‘pretty poor database’says departing Oracle engineer
正文完
 0