MariaDB 与生态系统碎片化

我们听到您的声音了,Kristian Köhntopp!感谢您抽出宝贵时间清晰地表达了许多其他人可能正在思考的问题。
对于那些觉得这听起来很隐晦的人,让我分享一下我如何解读Kristian Köhntopp上周发布的博客《MySQL:生态系统碎片化》(https://blog.koehntopp.info/2020/10/28/
mysql-ecosystem-fragmentation.html)。
Kristian指出,长期以来,“您运行的是哪个版本的MySQL?”这个问题已不再是一个简单的版本号就能回答的了,因为有理由认为MariaDB和Aurora是“同一主题的不同变体”。
除了共享一个分支成三个商标(MariaDB、MySQL、Aurora)的共同根代码库之外,他还注意到了一种商业二分法(社区版、企业版)。并且他指出,具体可用功能不仅取决于上述两个维度与特定版本号的组合。平台相关功能(本地部署、云端)增加了复杂性。这使得生态系统碎片化,让Kristian Köhntopp感到难过。J-F Gagné也是如此。
Kristian补充说,这种复杂性导致了不兼容性,并阻碍了第三方将精力投入到MySQL衍生产品的共同“亦敌亦友的代码库”中,使得Postgres比以前获得了更多的关注。
总而言之,生态系统的这种“亦敌亦友”行为表明了对分歧代码库的开发者体验的漠视,各方正在不同方向上进行创新。
到目前为止,我的理解正确吗,Kristian?
现在,这需要MariaDB基金会做出回应。
Kristian和其他人可能会期望我们回复一份自我吹嘘的MariaDB版本。他们可能会想:“这不是我们的错。我们做得很好。我们是模范的生态系统公民。要是其他人也能像我们一样仁慈就好了。”并且很方便地忽略我们自身的任何不足。

我们将努力做得更好,但这篇回复中可能仍然会包含一些试图得分的成分。而且,这篇回复源于一个必然的认识,即我们MariaDB基金会只能代表自己发言。不能代表Oracle,不能代表Amazon,甚至不能代表MariaDB Corporation——这些是影响Kristian Köhntopp所提出的问题的其他关键参与者。
首先,让我承认Kristian的观点。显而易见的是:他的观察是正确的,他的观点也显然相关。尽管存在许多差异和不兼容性,但这些产品确实形成了一个共同的生态系统。甚至可以加上来自阿里巴巴的AliSQL、来自腾讯的TSQL、Percona Server,以及是否拥有Galera Cluster作为附加组件这一维度。
我可能会稍微不同意的一点是PostgreSQL的定位。正如https://wiki.postgresql.ac.cn/wiki/PostgreSQL_derived_databases所证明的,PostgreSQL比MySQL/MariaDB拥有更多的分支。
有些人可能会认为,存在大量分支表明该项目非常成功,特别是如果这些分支时不时共享代码的话。其他人则觉得这令人困惑。从分支是开源项目工作的一个结果这个意义上说,两者都是正确的。
接下来,让我指出MariaDB的不同之处。我们更愿意认为我们更好,但这需要由开发者和产品用户来判断
1. MariaDB Server 致力于通过在M数据库社区气泡之外提供兼容性来提供选择。我们希望减轻迁移的困难,包括从Oracle Database迁移,而不仅仅是从Oracle MySQL Server迁移。通过我们的Oracle兼容模式,我们看到了大量从Oracle到MariaDB的迁移(例如 DBS Bank)。我们鼓励这样做。出于完全合乎逻辑的原因,您不太可能看到Oracle MySQL这样做,因此从某种意义上说,您当然可以争辩说这会导致进一步的分歧。不过,我们仍然相信这能改善开发者体验。
2. MariaDB Server由将其代码作为开源提供的实体开发。我们这样做是遵循开源开发模式。Amazon将他们的Aurora代码保存在自己的服务器上。出于完全合乎逻辑的原因,您不太可能看到Amazon提供混合方案,让同一代码在云端和本地运行。
这意味着,如果想要在任何其他云端或本地运行相同的应用程序,则不应使用Aurora,因为数据库的行为会有所不同。MariaDB模式给最终用户带来的好处:灵活性。以及其他人通过移植我们以GPL发布的特性来提高其兼容性的可能性。
我们是互惠的。MariaDB基金会的员工也参与M数据库社区的非MariaDB部分,例如修复MySQL-8.0的PHP bug(https://github.com/php/php-src/pull/6127),希望能减少碎片化。
3. MariaDB Server是在公司(以营利为目的)和基金会(以开放为目的)这种独特的双重架构下开发的。虽然MariaDB Corporation受到与Oracle和Amazon类似的商业模式约束,但MariaDB基金会不受此约束。我们是一家拥有代码库关键的非营利组织。我们拥有代码仓库。MariaDB Corporation雇佣了大多数对MariaDB Server做出贡献的开发者,是推动整体产品路线图的主要实体。然而,功能贡献也来自其他方面,例如我们的许多其他赞助商——阿里巴巴、腾讯、Microsoft、ServiceNow、DBS Bank、IBM、Visma——有时通过直接代码贡献,有时通过与MariaDB Corporation合作间接贡献。我们很高兴地注意到,过去12个月内接受的代码贡献数量高于MySQL Server在其整个生命周期内接受的代码贡献总数。
4. 在贡献方面,我们分配自己的MariaDB基金会资源来整合其他实体提交的补丁。有时我们自己将选定的补丁(例如来自Oracle MySQL的)整合到MariaDB中,有时我们分担合并和整合来自其他提供商(例如阿里巴巴、腾讯和Percona)的功能的工作。
一个这样的兼容性特性是最近推出的MDEV-18323 将MySQL JSON类型转换为mysql_upgrade中的MariaDB TEXT,这使得从MySQL 5.7迁移到MariaDB 10.5时能正确地移植JSON字段。这花费了一些时间,但希望能仍然有价值。
请不要将以上所有内容视为MariaDB对Kristian担忧的自我吹嘘式回复。这些要点旨在表明我们努力对改进开发者体验持开放态度,并且存在根本的逻辑原因,说明为什么我们比Kristian间接提及的其他实体更有可能在这方面取得成功。
在流程层面,我们安排开发者不仅参加MariaDB会议,还参加MySQL、Percona、阿里巴巴、腾讯等会议——“大公无私的”Fosdem也即将到来。希望这能让大家更容易在MySQL、MariaDB及其朋友社区中与我们联系。
我们的目标是成为与MySQL代码库共同根源的生态系统的主要分支。成果正在显现。我们是Linux发行版中的默认或唯一代表。我们在DB-Engines的采用率阶梯上攀升。我们最近于九月举办的MariaDB Server Fest在全球范围内吸引了超过27,000次观看。
我们愿意认为,我们的开放性以及与开发者社区的积极合作是MariaDB获得更多关注的根本原因
是这样吗?
Kristian奠定了基础。现在,我们希望听取开发者群体的其他成员的反馈。我们MariaDB基金会邀请您合作,共同探讨如何改进开发者体验。我们希望在我们力所能及的范围内减少生态系统碎片化。