Oracle 裁撤 MySQL 团队,我们是该选择其他替代品?

近日,据外媒据The Register的报道:甲骨文对其MySQL团队进行了大规模重组,约70名员工被裁,其中包括多位核心开发者和资深工程师。这一举动被外界解读为甲骨文进一步向商业化和云服务倾斜的信号,甚至引发了“MySQL
社区版正在被慢慢杀死”的担忧。

Oracle 裁撤 MySQL 团队,我们是该选择其他替代品?-临风且听

事件回顾

根据英国科技媒体《The Register》的报道,此次裁员主要集中在MySQL传统核心开发团队。多名长期参与MySQL社区版开发的工程师离职,部分员工被转岗至其他部门。更引人关注的是,MySQL团队已被整体并入甲骨文的Heatwave业务单元。Heatwave是Oracle推出的云原生数据分析平台,支持在MySQL数据库中进行实时机器学习与分析处理。

这一结构调整表明,Oracle正在将MySQL的开发重心从传统的社区版迭代转向云端和AI功能集成。Heatwave作为Oracle云基础设施(OCI)的核心产品之一,其战略地位显然高于免费的MySQL社区版。

MySQL联合创始人迈克尔·“蒙蒂”·维德纽斯(Michael “Monty” Widenius)对此表示“感到悲伤”。他在社交媒体和博客中多次提到,早在2009年Oracle收购Sun Microsystems(MySQL最初的所有者)时,他就担心MySQL的开源生态会受到商业利益的侵蚀。也正是基于这种担忧,他离开了Oracle并创建了MySQL的分支项目MariaDB,旨在“为下一代MySQL用户提供一个真正开源、社区驱动的替代方案”。

维德纽斯指出,此次裁员验证了他当年的判断。他表示:“虽然Oracle推动MySQL向云端和AI发展并不令人意外,但减少对社区版的投入意味着那些依赖免费、稳定版本的用户将逐渐被边缘化。”

另一位知名社区成员、曾担任MySQL性能工程师的彼得·扎伊采夫(Peter Zaitsev)则更直接地批评了这一举动。他在一篇文章中写道:“这看起来像是在缓慢地扼杀社区版。Oracle显然希望用户迁移到其商业产品或者云服务。社区版未来的更新可能会放缓,功能逐渐落后,最终迫使企业转向付费版本。”

行业影响

MySQL社区版目前仍被广泛应用于全球数百万个系统中,尤其是创业公司、教育机构和非营利组织。如果Oracle真的减少对其投入,这些用户可能面临以下风险:安全更新延迟:社区版的安全补丁和漏洞修复可能放缓;功能停滞:新功能优先甚至仅限于商业版;技术支持缺失:社区依赖的核心开发者减少,问题解决效率降低。尽管如此,完全放弃MySQL社区版对Oracle来说也是一把双刃剑。过度商业化的策略可能导致用户流失,反而推动他们转向其他开源替代品(如MariaDB、PostgreSQL或云厂商的托管服务)。

如果Oracle继续弱化社区版,MariaDB很可能成为最大受益者。维德纽斯也借此机会呼吁用户考虑转向MariaDB:“我们从一开始就致力于提供一个真正由社区驱动的、可持续的MySQL兼容数据库。现在比任何时候都更需要一个不受单一商业公司控制的开源数据库。”

然而,MariaDB自身也面临挑战。其上市公司股价近年来持续低迷,2023年甚至因财务问题收到退市警告。尽管技术成熟度高,但在商业推广和生态建设上仍落后于MySQL。

另一方面,PostgreSQL等其它开源数据库也在虎视眈眈。PostgreSQL以其强大的功能性和活跃的社区吸引了大量企业用户,逐渐吞噬MySQL的市场份额。

Oracle此次裁员和业务调整,标志着MySQL正在从一个“大众开源数据库”逐步转变为Oracle云战略中的一枚棋子。尽管社区版短期内不会消失,但其长远前景确实蒙上了阴影。

对于用户而言,这是一个提醒:依赖单一公司控制的开源项目存在风险。多元化技术选型、关注替代方案、参与社区建设,或许是应对未来变化的最佳策略。

无论如何,MySQL的故事还远未结束,但它正在步入一个更加复杂和商业化的新阶段。

可供选择的方案

从目前情况看,似乎开发者还钟情于mysql的简单易用。

MySQL 和 MariaDB 的版本对应关系对于数据库选型、迁移和兼容性测试非常重要。为了方便快速了解,下面的表格整理了它们主要的版本对应关系。

📊 MySQL 与 MariaDB 版本对应关系

MySQL 版本MariaDB 对应版本说明
MySQL 5.1MariaDB 5.1, 5.2, 5.3MariaDB 的早期版本基于 MySQL 5.1
MySQL 5.5MariaDB 5.5此版本两者保持对应
MySQL 5.6MariaDB 10.0MariaDB 从 10.0 开始启用新的版本命名
MySQL 5.7MariaDB 10.2, 10.3, 10.4这是最常见的替代选择,MariaDB 10.2-10.4 通常被视为与 MySQL 5.7 同级别
MySQL 8.0MariaDB 10.5, 10.6, 10.7, 10.8, 10.9, 10.10, 10.11...注意:从这一代开始,两者在功能和特性上出现了显著分歧。虽然版本号大致同期,但不能简单视为直接替代品。

💡 重要说明与使用建议

了解上表的基础上,以下几点需要特别留意:

  • “对应”的本质是“兼容”:这种对应关系意味着该版本的 MariaDB 旨在与对应版本的 MySQL 保持高度兼容,可以作为“直接替代品”(Drop-in Replacement)来使用。数据文件、客户端协议、连接器等通常都是兼容的
  • 分歧从 MariaDB 10.2 开始加剧:尽管 MariaDB 10.2-10.4 与 MySQL 5.7 对应,但它已经引入了很多自己的新特性。而到了与 MySQL 8.0 同期的 MariaDB 10.5 及之后版本,两者在开发路径上已经有了显著的不同,例如支持的存储引擎、函数和系统变量等方面都存在差异
  • 迁移前务必进行测试:正是因为存在上述分歧,尤其是在较新版本中,如果你计划在 MySQL 和 MariaDB 之间进行替换或迁移,绝不能仅凭版本对应关系直接在生产环境操作。务必在测试环境中进行充分的兼容性和性能测试。
  • 查看官方文档:对于最准确的兼容性信息,始终建议查阅 MariaDB 官方文档 和 MySQL 官方文档。

我们再对 MySQL 和 PostgreSQL 主要差异做对比。由于两者都是非常成熟且功能丰富的数据库,许多历史上的差异正在缩小,但核心的设计哲学和某些关键特性上的区别依然存在。

MySQL 与 PostgreSQL 主要差异对比

特性/方面MySQLPostgreSQL
核心定位与哲学“快速、稳定、易用”,偏向于实践。传统上被认为是更简单的 OLTP/Web 应用数据库。“功能强大、标准、严谨”,偏向于学术。自称是“世界上最先进的开源关系数据库”,强调扩展性和标准符合度。
SQL 标准符合度遵循标准,但更倾向于提供自己的方言和扩展(如 LIMIT 子句)。在宽松模式下对 SQL 检查不那么严格。高度符合 SQL 标准。支持大量标准 SQL 功能(如窗口函数、CTE、公共表表达式等)。对语法和数据类型检查非常严格。
数据类型支持常规类型。对 JSON 的支持后来添加但已很强劲。支持极其丰富的数据类型,包括原生数组、JSON/JSONB、HSTORE(键值对)、几何类型、网络地址类型、XML 等。JSONB 是其王牌特性,支持索引和高效查询。
ACID 与事务早期版本(如 MyISAM 引擎)不支持事务。现在默认的 InnoDB 引擎提供了完整的 ACID 兼容。始终提供完整的 ACID 兼容,设计之初就以内核级别支持复杂事务。
并发模型使用多线程架构,连接线程池。使用 多进程架构,每个连接由一个独立的操作系统进程处理。
索引类型B-Tree, Hash, R-Tree, Full-Text。支持更多索引类型:B-Tree, Hash, GiST, SP-GiST, GIN, BRIN。GIN 索引对全文搜索和 JSONB 非常高效。
复制历史悠久,方案成熟。支持基于二进制日志的异步复制、半同步复制。组复制和 InnoDB Cluster 提供了高可用解决方案。原生支持流复制(异步/同步),逻辑复制(可复制特定表),以及基于此的物理备份和时间点恢复(PITR)。
性能在高并发、简单读/写操作(尤其是读密集型)场景下通常表现出色。配置相对简单。在复杂查询、大量数据写入、存在高并发负载的复杂操作场景下表现更优。需要更精细的调优。
扩展性主要通过分片(Sharding)进行水平扩展。官方方案较新(如 MySQL Cluster),多依赖中间件。可通过 外部数据包装器(FDW) 实现“联邦查询”,逻辑复制也可用于扩展。社区有 Citus 这样的优秀分片扩展。
存储引擎插件式存储引擎 是核心特性。如 InnoDB(事务)、MyISAM(非事务)、Memory(内存)等,可根据场景选择。单一、高度可集成的存储引擎。所有功能都围绕一个核心引擎构建,保证了功能的统一性和稳定性。
许可证双许可证:GPLv2(社区版)和商业许可证(企业版)。由 Oracle 公司控制。类BSD/MIT许可证,非常宽松,允许任何形式的再分发和商业闭源使用。由全球社区驱动。
主要优势- 简单易用,入门快
- 读写性能高,尤其适合 OLTP
- 复制方案成熟稳定
- 社区庞大,资料丰富
- 功能强大,SQL 标准符合度高
- 数据类型和索引丰富,适合复杂数据
- 数据一致性和完整性极佳
- 扩展性强,支持自定义函数/过程/聚合等

总结与选型建议

选择 MySQL 的情况:

  • Web 应用/OLTP 场景:需要高速的读/写操作,如电子商务、内容管理网站。
  • 简单性和易用性:团队希望快速部署和运维,对高级数据库功能需求不高。
  • 特定生态系统:与 LAMP(Linux, Apache, MySQL, PHP/Python/Perl)栈深度集成的场景。
  • 读多写少的业务:并且查询模式相对固定和简单。

选择 PostgreSQL 的情况:

希望避免许可风险:宽松的 BSD 许可证让企业在商业应用中更安心。

复杂数据和复杂查询:数据结构复杂,需要使用 JSONB、数组等高级数据类型,或经常执行复杂的分析查询、窗口函数等。

数据完整性要求极高:需要严格的外键约束、检查约束和事务一致性。

地理空间数据:与 PostGIS 扩展结合,是地理信息系统(GIS)的事实标准。

需要高度自定义:希望使用自定义函数、聚合或甚至用不同语言(如 PL/pgSQL, Python, Perl)编写存储过程。

最后,请大家根据具体情况采取解决方案