MySQL 如何赶上 PostgreSQL 的势头?

news2025/1/12 19:01:22

原文地址

我与 MySQL 社区的前辈交谈时,经常遇到这个问题:「为什么 MySQL 这么棒,而且(至少根据 DB-Engines 的计算)仍然比 PostgreSQL 更流行;但它的地位在下降,PostgreSQL 却势不可挡地越来越受欢迎?」MySQL 生态能做些什么来挽回局势吗?我们来探讨一下!

在这里插入图片描述

来看看为什么 PostgreSQL 发展如此强劲,而 MySQL 却在走下坡路。我认为这归结于所有权和治理、许可证、社区、架构和开源产品的发展势头。

所有权和治理

MySQL 从未像 PostgreSQL 那样受到「社区驱动」。然而,当 MySQL 由瑞典小公司 MySQL AB 和 BDFL(仁慈的终身独裁者 – Benevolent Dictator for Life,一个非正式称号,常用于幽默地称呼开源开发社区项目的发起人)Michael「Monty」Widenious 掌管时,它获得了很多社区的信任。更重要的是,它没有被大公司视为特别的威胁。

现在,情况不同了 – 甲骨文拥有 MySQL,业内许多大公司,尤其云计算厂商,都将其视为对手。当然没有理由为对手贡献代码和营销,创造价值。此外,对于 MySQL,拥有 MySQL 商标的甲骨文公司总是有额外的优先权。

相比之下,PostgreSQL 由社区运行、其所有供应商都立足于一个商业前提:比起 PostgreSQL 生态中的小公司,EDB 这样的公司没有优先权。

这意味着大公司更愿意推荐 PostgreSQL 作为首选,因为这不会为它们的竞争对手创造价值,而且它们对 PostgreSQL 项目的方向有更大的影响力;而数以百计的小公司则通过本地「草根」社区的开发者和市场营销努力,使 PostgreSQL 在全球无处不在。

MySQL 社区能做什么?

社区能做的不多 – 完全取决于甲骨文公司。我在《甲骨文能拯救 MySQL 吗》中也写到,给 MySQL 一个中立的基础(如跟 Linux 或 Kubernetes 合作),它才有和 PostgreSQL 竞争的机会。我并不乐观,因为我认为,甲骨文目前更感兴趣的是「硬」货币化(译者注:直接通过现有的产品和服务产生营收),而不是增加用户量。

许可

MySQL 拥有双重许可 – GPLv2 和可以从甲骨文购买到的商业许可;而 PostgreSQL 只有宽松的 PostgreSQL 许可。

事实上,这意味着很容易创建有商业许可的 PostgreSQL 衍生分支,或将其嵌入获得商业许可的项目中,不需要任何「变通方式」。当然,开发此类产品的人也在支持和推广 PostgreSQL。
MySQL 确实允许云计算厂商创建自己的商业分支,与 MySQL 兼容的亚马逊 Aurora 就是最著名、最成功的此类分支,但在软件发行时却不允许。

MySQL 社区能做什么?

还是那句话,能做的不多 – 只有甲骨文公司能根据许可重新授权 MySQL,而我很难相信他们会减少对 MySQL 的控制,尽管采用「开放核心」和「仅限云」模式的软件,通常与采用宽松式许可「核心」的软件可以结合得很好(原文:even though「open core」and「cloud only」editions often play well with permissively licensed「core」software)。

社区

我认为,当我们考虑开源社区时,最好考虑三个而不是一个社区。

说到用户社区,MySQL 的表现仍然相当出色,尽管 PostgreSQL 越来越多地成为新应用程序的首选。不过,用户社区往往是其他社区工作的成果。

PostgreSQL 中,贡献者社区更强大,这是由许多组织推动的。我们举办了针对贡献者的活动,还编写了关于如何为 PostgreSQL 作出贡献的书籍。PostgreSQL 的扩展架构也有助于轻松扩展 PostgreSQL,并公开分享工作成果。

供应商社区 – 这才是主要问题,没那么多公司有兴趣推广 MySQL,因为这样只是在为甲骨文公司创造价值。 那么,这不会鼓励所有甲骨文「合作伙伴」去推广 MySQL 吗? 有可能,全球范围内也确实有一些由合作伙伴支持的 MySQL 活动,但这些无法与供应商对 PostgreSQL 的支持相提并论,因为PostgreSQL是「他们的项目」。

MySQL 社区能做什么?

这次我不会说社区已经无能为力。其他领域的现状使工作更困难,回报也更少,但社区仍然可以做很多事情。 如果你关心 MySQL 的未来,请组织并参与各种活动,尤其是在 MySQL 社区之外。你可以写文章、录视频、写书,在社交媒体上推广,并将它们提交给 Hacker News。

尤其不要错过 FOSDEM 2025 MySQL Devroom 的征集活动!

甲骨文公司也可以在不减少盈利的情况下参与。与潜在贡献者接触 – 发起外部贡献者可以参与的活动,与他们分享计划,支持他们的贡献,至少在他们与 MySQL 社区蓝图相一致的情况下。

架构

一些 PostgreSQL 用户把 PostgreSQL 的发展势头归因于其更好的架构和更简洁的代码库。我认为这不是主要原因,但值得讨论。

PostgreSQL 的设计实现了大量功能强大的扩展,而 MySQL 只有有限的扩展可能性。最大的例外是存储引擎接口,MySQL 支持多种存储引擎,而 PostgreSQL 只支持一种(尽管 Neon 或 OrioleDB 这样的分支可以通过打补丁来改变)。

这种可扩展性使 PostgreSQL 易于创新(尤其在拥有更强大的贡献者社区的情况下),且无需纳入核心代码。

MySQL 社区能做什么?

即使 MySQL 的可扩展性有限,利用其已有的各种插件(https://dev.mysql.com/doc/extending-mysql/8.0/en/plugin-types.html)和组件(https://dev.mysql.com/doc/refman/8.4/en/components.html),也还是可以做很多事情的。

首先需要针对 MySQL 插件的社区市场,这将鼓励开发者构建更多插件,且容易关注。 我们还需要甲骨文的支持 – 承诺扩展 MySQL 插件架构,支持开发者构建插件,即使它们会与甲骨文的产品竞争。 例如,如果 MySQL 拥有创建自定义数据类型和可插拔索引的插件,也许就已经有用于 MySQL 的 PNG 向量替代方案。

开源产品的发展势头

选择数据库是一个长期的赌注,因为更换并不容易。问问那些几十年前选择甲骨文,现在又被它困住的人就知道了。这就意味着,选择数据库时需要考虑未来:不仅希望所选的数据库十年后还会存在,而且要考虑它是否会随着时间推移而发展,以满足未来的技术需求。

正如我在文章《甲骨文最终会杀死 MySQL 吗》(见 https://percona.com/blog/is-oracle-finally-killing-mysql/)中所写,甲骨文已将大量开发者的重心转移到专有和 Cloud-only MySQL 版本上,MySQL Community 几乎已废弃。MySQL 在今天许多应用中仍非常出色,但它的确落后了,MySQL 社区中许多人质疑它是否适合未来的发展。

MySQL 社区能做什么?

再次强调,MySQL 的发展主要取决于甲骨文公司,因为是他们一手推进了 MySQL 的官方路线。至于 Percona Server for MySQL?我们确实提供了甲骨文 MySQL 的领先开源替代方案,但必须注意所作的改变,以免破坏完全兼容性或使上游合并成本过高。MariaDB 则作出了不同的权衡;不受限制的创新使其与 MySQL 的兼容性越来越差,而且每个版本的差异也越来越大。

MariaDB

MariaDB 由 MariaDB 基金会管理,不是已经尽可能地解决了所有这些问题吗? 别急!我认为,MariaDB 是一个有缺陷的基金会,它并不拥有所有的知识产权,尤其是商标,无法为所有供应商提供公平的竞争环境。它仍然存在商标垄断问题,因为只有一家公司能提供 MariaDB 的所有东西。

不过,MariaDB 可能有机会;MariaDB(公司)刚被 K1 收购,管理和商标所有权有机会发生变化,更接近 PostgreSQL 的情况。只是私募股权公司不擅长减少对商标知识产权的控制,所以希望不大。

MariaDB 基金会可以将其更名为 SomethingElseDB,从而获得对该项目的完全商标控制权,但这意味着 MariaDB 将失去其所有的知名度;这种情况不太可能发生。

MariaDB 与 MySQL 也有很大区别,协调两者之间的差异需要多年的努力。但只要有足够的资源和社区意愿,这是可以解决的。

总结

如你所见,由于 MySQL 的所有权和管理方式,社区的活动受到了限制。长远来看,MySQL 社区与 PostgreSQL 竞争的唯一途径是所有重要的参与者联合起来(就像 Valkey(https://valkey.io)那样),在不同的品牌下创建一个 MySQL 替代方案 – 这可以解决上面提到的大多数问题。


💡 更多资讯,请关注 Bytebase 公号:Bytebase

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2275613.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于在windows系统中编译ffmpeg并导入到自己项目中这件事

关于在windows系统中编译ffmpeg并导入到自己项目中这件事 前因(可跳过不看) 前阵子由于秋招需求,写了一个简易的安卓播放器,最终因为时间问题还有一些功能没有实现着实可惜,如:倍速播放,快进操…

word中电流符号i或者j,这两个字母的头上的点会消失---完美解决办法

上图中,是我已经改好的格式。 具体解决办法是将公式转成LATEX格式,然后在字母i或者j前加上//,再转换会unicode,专业形式即可解决。更快的解决办法就是复制我在word文档里面写的。 word文档放在资源里面了,有需要自取即…

【C++】std::string和size()函数进阶解析

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯基础知识:C 中的std::string字符串的基础概念size() 函数基础使用size()实例:计算字符串长度 💯基于size()的字符串解析和访问方式代码实…

《OpenCV计算机视觉实战项目》——银行卡号识别

文章目录 项目任务及要求项目实现思路项目实现及代码导入模块设置参数对模版图像中数字的定位处理银行卡的图像处理读取输入图像,预处理找到数字边框使用模版匹配,计算匹配得分 画出并打印结果 项目任务及要求 任务书: 要为某家银行设计一套…

【开发环境搭建篇】Visual Studio 2022 安装和使用

本文收录于 《C编程入门》专栏,从零基础开始,介绍C编程入门相关的内容,欢迎关注,谢谢! 文章目录 一、前言二、下载三、安装四、使用五、总结 一、前言 本文介绍如何在Windows环境下安装Visual Studio 2022。 什么是Vi…

【面试题】技术场景 5、日志采集ELK

日志采集的重要性与采集方式 重要性:在项目开发、测试及生产环境中,日志是定位系统问题的关键手段,对系统维护与问题排查至关重要。采集方式 常规采集:按天保存日志文件至专门目录,文件名包含项目名、端口及日期&…

matlab的绘图的标题中(title)添加标量以及格式化输出

有时候我们需要在matlab绘制的图像的标题中添加一些变量,这样在修改某些参数后,标题会跟着一块儿变。可以采用如下的方法: x -10:0.1:10; %x轴的范围 mu 0; %均值 sigma 1; %标准差 y normpdf(x,mu,sigma); %使用normpdf函数生成高斯函数…

element plus 使用 upload 组件达到上传数量限制时隐藏上传按钮

最近在重构项目,使用了 element plus UI框架,有个功能是实现图片上传,且限制只能上传一张图片,结果,发现,可以限制只上传一张图片,但是上传按钮还在,如图: 解决办法&…

简单说一下 类

类的定义 类是用来对一个实体(对象)进行描述,类就是用来描述这个对象具有一些什么属性。 类的定义格式 //创建类 class ClassName{ field; //简单概述为字段(属性)或者成员变量 method; //简单概述为行为或者是成员方法 } cl…

HOW - Form 表单 label 和 wrapper 对齐场景

一、背景 在日常使用 表单 时&#xff0c;我们一般有如下布局&#xff1a; 可以通过 Form 表单提供的配置直接设置&#xff1a; <Formform{form}labelCol{{ span: 4 }}wrapperCol{{ span: 20 }}onFinish{handleSubmit}><Form.Itemlabel"输入框"name"…

01 Oracle自学环境搭建(Windows系统)

1 Oracle12C安装 1.1 下载 官网地址&#xff1a;https://www.oracle.com/ 进入官网→Resource→Customer Downloads 如果没有登录&#xff0c;会提示登录后后才能下载 选择适合自己的版本&#xff08;我电脑是Windows系统 64位&#xff09; 选择需要的安装包进行下载 双击下载…

vue el-table 数据变化后,高度渲染问题

场景&#xff1a;el-table设置了height属性&#xff0c;但是切换查询条件后再次点击查询重新获取data时&#xff0c;el-table渲染的高度会有问题&#xff0c;滚动区域变矮了。 解决办法&#xff1a;使用doLayout方法‌&#xff0c;在表格数据渲染后调用doLayout方法可以重新布局…

vue3+ts+element-plus 输入框el-input设置背景颜色

普通情况&#xff1a; 组件内容&#xff1a; <el-input v-model"applyBasicInfo.outerApplyId"/> 样式设置&#xff1a; ::v-deep .el-input__wrapper {background-color: pink; }// 也可以这样设置 ::v-deep(.el-input__wrapper) {background-color: pink…

【漫话机器学习系列】044.热点对特性的影响(Effect Of One Hot On Feature Importance)

热点对特性的重要性影响&#xff08;Effect of One-Hot Encoding on Feature Importance&#xff09; 一热编码&#xff08;One-Hot Encoding&#xff09; 是处理类别型数据的常用方法&#xff0c;将每个类别特征转换为一组独立的二进制特征。这种方法在提高模型处理非数值数据…

使用MATLAB正则表达式从文本文件中提取数据

使用MATLAB正则表达式从文本文件中提取数据 使用Python正则表达式从文本文件中提取数据的代码请看这篇文章使用正则表达式读取文本数据【Python】-CSDN博客 文本数据格式 需要提取 V 后面的数据, 并绘制出曲线. index 1V 0.000000W 0.000000E_theta 0.000000UINV 0.0…

JAVA:Spring Boot 集成 JWT 实现身份验证的技术指南

1、简述 在现代Web开发中&#xff0c;安全性尤为重要。为了确保用户的身份&#xff0c;JSON Web Token&#xff08;JWT&#xff09;作为一种轻量级且无状态的身份验证方案&#xff0c;广泛应用于微服务和分布式系统中。本篇博客将讲解如何在Spring Boot 中集成JWT实现身份验证…

PHP进阶-在Ubuntu上搭建LAMP环境教程

本文将为您提供一个在Ubuntu服务器上搭建LAMP&#xff08;Linux, Apache, MySQL, PHP&#xff09;环境的完整指南。通过本文&#xff0c;您将学习如何安装和配置Apache、MySQL、PHP&#xff0c;并将您的PHP项目部署到服务器上。本文适用于Ubuntu 20.04及更高版本。 一、系统更新…

【算法】一阶低通滤波

目录 1.背景 2.推导 2.1基础知识 2.2 公式推导 3.截止频率 3.怎么做 4.效果 1.背景 在电机的闭环过程中&#xff0c;无法避开的一点就是电流环&#xff0c;电流环需要采集电流数据&#xff0c;然后闭环输出。在电流环采集的过程中&#xff0c;数据会有很多高频噪声&#xf…

excel VBA 基础教程

这里写目录标题 快捷键选择所有有内容的地方 调试VBA录制宏&#xff0c;打开VBA开发工具录制宏,相当于excel自动写代码&#xff08;两个表格内容完全一致才可以&#xff09; 查看宏代码保持含有宏程序的文件xlsm后缀&#xff08;注意很容易有病毒&#xff09;宏文件安全设置 使…

获取IP地区

包 https://packagist.org/packages/geoip2/geoip2#v3.1.0 用composer加载包 composer require geoip2/geoip2 mmdb下载 https://github.com/P3TERX/GeoLite.mmdb?tabreadme-ov-file