Oracle 最终会淘汰 MySQL 吗?

对于 MySQL 发展走向的讨论,从 Oracle 收购 Sun 公司起就从未停止过,也是从那时起,开始有人选择 Percona Server for MySQL 或 MariaDB。

时至今日,MySQL 已经不是当年的 MySQL,但并不影响 MySQL 仍旧拥有活跃的社区和一大批拥趸。

比如,几个月前,全球最大“程序员”在线交友网站 GitHub 将 1200 多个 MySQL 服务器升级到 8.0。

再如,MySQL HeatWave 满足 OLTP、OLAP 和 ML 三种需求,支持跨数据仓库和数据湖的实时数据分析,支持生成式 AI 和向量存储。

Oracle 并不会淘汰 MySQL,而是注入新的能量,AI 时代离不开 Oracle,更离不开 MySQL。

接下来的文字,译自 Percona 的联合创始人 Peter Zaitsev, PZ 还是一系列开源初创公司的独董,如 Altinity, Ivinco, MigOps 等。


大约 15 年前,当 Oracle 收购 Sun,并因此收购 MySQL 时,互联网上关于 Oracle 何时“关闭 MySQL”的讨论很多。当时流传着多种理论,包括彻底关闭 MySQL,以减少专有 Oracle 的竞争,或者只是将其作为开源项目关闭,只留下“MySQL Enterprise”作为唯一选择。传播此类谣言对 MariaDB 和 PostgreSQL 以及其他较小的竞争对手来说都是一笔好生意,因此这些谣言传播得非常广泛。

但实际上,Oracle 最终成为了 MySQL 的优秀管理者。MySQL 团队基本保持独立,MySQL 老将 Tomas Ulin 基本掌握着主导权。MySQL 变得更加稳定和安全。许多技术债务得到了修复,并添加了许多现代开发人员想要的功能,例如支持 JSON 和对高级 SQL 标准功能的支持。

虽然有“MySQL Enterprise ”,但它真正关注的是企业需要而开发人员不太关心的功能,比如可插入式身份验证、审计、防火墙等。虽然也有专有的 GUI、监控和备份工具(例如 MySQL Enterprise Monitor),但也有很多开源和专有的竞争对手,因此并没有造成巨大的圈定。

在此期间,我经常为 Oracle 辩护,因为很多人认为 Oracle 对待 MySQL 很不好,因为……他们是 Oracle。

我认为在这段时间里,甲骨文一直在使用这个众所周知的开源成功公式:“转换永远不应该影响采用。”

然而,近年来,随着“MySQL Heatwave”(Oracle 的 MySQL 云数据库)的推出,情况发生了变化。Heatwave 包含许多 MySQL 社区版或企业版所没有的功能,例如加速分析查询或 ML 功能。

对于“分析查询”,问题尤其严重,因为 MySQL 甚至没有并行查询执行功能。在拥有数百个核心的 CPU 面市的时候,这些核心的速度并没有显著提高,这越来越限制了性能。这不仅适用于来自分析应用程序的查询,也适用于应用程序中常见的简单“group by”查询。注意:MySQL 8 确实对 DDL 提供了一些并行化支持,但对查询没有。

这是否能让人们有更多理由接受 MySQL Heatwave?或者,人们更愿意转向 PostgreSQL 或采用 Clickhouse?

向量搜索是开源 MySQL 缺乏的另一个领域。虽然其他所有主流开源数据库都增加了对向量搜索功能的支持,MariaDB 也正在努力实现这一功能,但将其作为 MySQL 生态系统中仅限云上的 MySQL Heatwave 功能至少可以说是不幸的。

然后也许是最奇怪的选择 - Javascript 支持已作为 MySQL Enterprise 独有的功能发布,而我认为 MySQL 应该尽一切努力赢得 Javascript 开发人员的青睐,其中许多人已经更喜欢 MongoDB 等更简单的数据库。

我认为所有这些都违反了上面提到的黄金法则,因为它们无疑限制了 MySQL 的采用,无论是从这些特定功能的角度来看,还是从对这种看似政策变化对 MySQL 的未来意味着什么的担忧的角度来看。

如果这还不够的话,MySQL 似乎遭受了性能工程部门多年来的忽视,与 MySQL 5.6 相比,简单单线程工作负载的性能显着下降。 你可以声称功能具有性价比,但 MariaDB 能够显着减少性能下降,PostgreSQL 甚至在添加新功能的同时提高了性能。

显然,我无权参与 Oracle 管理团队的对话,也不能说这是无知还是恶意,但过去几年的此类产品决策肯定不利于 MySQL 的采用,因为 PostgreSQL 已经大步赢得人心,并且根据 DB-Engines 的数据,它已经大大缩小了与 MySQL 的采用差距,并且根据 StackOverflow 开发者调查,它已经成为最受欢迎的开源关系数据库。

无论如何,除非 Oracle 将注意力转向现代开发人员对关系数据库的需求,否则它将扼杀它,如果不是通过行动,那么就是通过不作为!


那么,你在用什么数据库呢?或者想换成什么数据库呢?欢迎留言讨论。


🌻 往期精彩 ▼

[Oracle]

[MySQL]

[TiDB]

[PG]


-- / END / --

👉 这里可以找到我

如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!(๑˃̵ᴗ˂̵)

本文由 mdnice 多平台发布

OracleMySQL数据库管理系统中都支持`OVER`子句,这是SQL标准中的一部分,用于定义窗口函数。不过,两个数据库系统在一些细节上可能存在差异,尽管基本用法是类似的。以下是一些共通点和可能的差异: 共通点: 1. 在查询中,`OVER`子句通常与窗口函数一起使用,如`ROW_NUMBER()`, `RANK()`, `DENSE_RANK()`, `SUM()`, `AVG()`等。 2. `OVER`子句用于指定窗口函数如何对一系列行进行计算,这些行被称为窗口。 差异: 1. MySQL较新版本(MySQL 8.0及以上)才开始支持窗口函数,而Oracle支持窗口函数已经很长时间了。 2. 在某些窗口函数的实现上,两个数据库系统可能有不同的默认行为。例如,在处理窗口的起始和结束边界时,OracleMySQL可能有不同的默认值。 3. Oracle提供了`DBMS_RANDOM`包来生成随机数,而MySQL则直接使用`RAND()`函数,这些函数的使用场景可能与`OVER`子句结合,但具体的语法和行为可能有差异。 具体的用法示例: ```sql -- 在Oracle中使用OVER子句 SELECT employee_id, salary, SUM(salary) OVER (PARTITION BY department_id) AS department_total FROM employees; -- 在MySQL中使用OVER子句 SELECT employee_id, salary, SUM(salary) OVER (PARTITION BY department_id ORDER BY salary RANGE BETWEEN INTERVAL 1 PRECEDING AND INTERVAL 1 FOLLOWING) AS moving_total FROM employees; ``` 在实际使用中,需要查阅相应数据库的官方文档,以获取最新和最准确的信息。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值