MySQL 如何赶上 PostgreSQL 的势头?

原文地址

我与 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.mzph.cn/news/892268.shtml

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

相关文章

完全二叉树的删除

(1)删除叶子节点 找到要删除的节点 targetNode找到要删除节点的父节点parent(父节点是否存在)要删除的节点是父节点的左子树还是右子树如果是左子树,则parent.leftnull;如果是右子树则parent.rightnull。 (…

Docker入门之docker基本命令

Docker入门之docker基本命令 官方网站:https://www.docker.com/ 1. 拉取官方镜像并创建容器(以redis为例) 拉取官方镜像 docker pull redis# 如果不需要添加到自定义网络使用这个命令,如需要,直接看第二步 docker r…

玩转大语言模型——ollama导入huggingface下载的模型

ollama导入huggingface模型 前言gguf模型查找相关模型下载模型 导入Ollama配置参数文件导入模型查看导入情况 safetensfors模型下载模型下载llama.cpp配置环境并转换 前言 ollama在大语言模型的应用中十分的方便,但是也存在一定的问题,比如不能使用自己…

DFS之迭代加深、双向DFS、IDA*

迭代加深 迭代加深&#xff1a; 170. 加成序列 满足如下条件的序列 X X X&#xff08;序列中元素被标号为 1 、 2 、 3 … m 1、2、3…m 1、2、3…m&#xff09;被称为“加成序列”&#xff1a; X [ 1 ] 1 X[1]1 X[1]1 X [ m ] n X[m]n X[m]n X [ 1 ] < X [ 2 ] < …

Ansible之批量管理服务器

文章目录 背景第一步、安装第二步、配置免密登录2.1 生成密钥2.2 分发公钥2.3 测试无密连接 背景 Ansible是Python强大的服务器批量管理 第一步、安装 首先要拉取epel数据源&#xff0c;执行以下命令 yum -y install epel-release安装完毕如下所示。 使用 yum 命令安装 an…

【Linux网络编程】第二十二弹---深入理解 I/O 多路转接之 epoll:系统调用、工作原理、代码演示及应用场景

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【Linux网络编程】 目录 1、I/O 多路转接之 epoll 1.1、epoll 初识 1.2、epoll 的相关系统调用 1.2.1、epoll_create 1.2.2、epol…

双向列表的实现(C++)

一.实现思路 主要是一个空间存储一个数值&#xff0c;然后为了索引后面的数据单元和前面的数据单元&#xff0c;所以在每个空间里面还要存储前面和后面数据单元的指针&#xff0c;就形成了每个数据单元 后面就是要管理的是双向列表的头结点和尾节点&#xff0c;方便实现后面的头…

国产信创实践(国能磐石服务器操作系统CEOS +东方通TongHttpServer)

替换介绍&#xff1a; 国能磐石服务器操作系统CEOS 对标 Linux 服务器操作系统&#xff08;Ubuntu, CentOS&#xff09; 东方通TongHttpServer 对标 Nginx 负载均衡Web服务器 第一步&#xff1a; 服务器安装CEOS映像文件&#xff0c;可直接安装&#xff0c;本文采用使用VMware …

Linux——修改USB网卡设备节点名称

修改驱动&#xff1a; 测试&#xff1a; 参考资料&#xff1a; https://blog.csdn.net/ablexu2018/article/details/144868950

上手体验微软全新整合的王炸平台Fabric

体验确实不错&#xff0c;微软强大的生态能力。 把可视化&#xff0c;数仓&#xff0c;数据胡&#xff0c;数据工厂&#xff0c;机器学习&#xff0c;数据监控等技术都整合到一个平台了。所有数据全都存储在统一的one lake数据中心&#xff0c;消除数据孤岛问题。而且不同角色可…

浅析PCIe链路均衡技术原理与演进

在现代计算机硬件体系的持续演进中&#xff0c;PCIe技术始终扮演着核心角色&#xff0c;其作为连接 CPU 与各类周边设备的关键高速通信链路&#xff0c;不断推动着计算机性能边界的拓展。而 PCIe Link Equalization均衡技术&#xff0c;作为保障数据在高速传输过程中准确性与稳…

东京大学联合Adobe提出基于指令的图像编辑模型InstructMove,可通过观察视频中的动作来实现基于指令的图像编辑。

东京大学联合Adobe提出的InstructMove是一种基于指令的图像编辑模型&#xff0c;使用多模态 LLM 生成的指令对视频中的帧对进行训练。该模型擅长非刚性编辑&#xff0c;例如调整主体姿势、表情和改变视点&#xff0c;同时保持内容一致性。此外&#xff0c;该方法通过集成蒙版、…

Wireshark 学习笔记1

1.wireshark是什么 wireshark是一个可以进行数据包的捕获和分析的软件 2.基本使用过程 &#xff08;1&#xff09;选择合适的网卡 &#xff08;2&#xff09;开始捕获数据包 &#xff08;3&#xff09;过滤掉无用的数据包 &#xff08;4&#xff09;将捕获到的数据包保存为文件…

学习threejs,导入babylon格式的模型

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.BabylonLoader babyl…

Redis缓存穿透、缓存击穿、缓存雪崩

缓存穿透 定义&#xff1a; 查询一个不存在的数据&#xff0c;mysql查询不到数据也不会直接写入缓存&#xff0c;就会导致每次请求都查数据库 例子&#xff1a; 一个get请求&#xff1a;api/news/getById/-1 解决方案 方案一&#xff1a;缓存空数据 缓存空数据&#xff0c;查…

用Kimi做研究:准实验设计的智能解决方案

目录 1.研究策略设计 2.过程框架设计 3.背景变量 4.细节设计 准实验设计是一种介于实验与观察研究之间的研究方法&#xff0c;准实验设计是在无法完全控制实验条件的情况下进行因果关系的探索。与传统实验设计相比&#xff0c;准实验设计不具备随机分配实验对象到各处理组的…

RIS智能无线电反射面:原理、应用与MATLAB代码示例

一、引言 随着无线通信技术的快速发展,人们对通信系统的容量、覆盖范围、能效以及安全性等方面的要求日益提高。传统的无线通信系统主要通过增加基站数量、提高发射功率和优化天线阵列等方式来提升性能,但这些方法面临着资源有限、能耗高和成本上升等挑战。因此,探索新的无线…

解决nginx多层代理后应用部署后访问发现css、js、图片等样式加载失败

一般是采用前后端分离部署方式&#xff0c;被上一层ng代理后&#xff0c;通过域名访问报错&#xff0c;例如&#xff1a;sqx.com.cn/应用代理路径。 修改nginx配置&#xff0c;配置前端页面的路径&#xff1a; location / {proxy_pass http://前端页面所在服务器的IP:PORT;pro…

IoT平台在设备远程运维中的应用

IoT平台是物联网技术的核心组成部分&#xff0c;实现了设备、数据、应用之间的无缝连接与交互。通过提供统一的设备管理、数据处理、安全监控等功能&#xff0c;IoT平台为企业构建了智能化、可扩展的物联网生态系统。在设备远程运维领域&#xff0c;IoT平台发挥着至关重要的作用…

新时期下k8s 网络插件calico 安装

1、k8s master节点初始化完毕以后一直处于notreadey状态&#xff0c;一直怀疑是安装有问题或者是初始化有问题&#xff08;当然&#xff0c;如果真有问题要先解决这些问题&#xff09;&#xff0c;经过不断探索才发现是网络插件没有安装导致的&#xff0c;根据建议安装calico插…