MySQL 30 岁:仍然重要,但不再是王者

360影视 国产动漫 2025-05-14 11:17 1

摘要:本月,MySQL 迎来了 30 岁生日。MySQL 曾经是 Web 开发的基石,至今仍广受欢迎。但具有讽刺意味的是,随着 MySQL 进入第四个十年,它已经播下了自己衰落的种子,尤其是相对于 Postgres。自 2010 年以来一直是 MySQL 的管理者,

MySQL 曾经是开发人员的主要首选数据库,但现在已经输给了 Postgres 和其他专业数据库。

本月,MySQL 迎来了 30 岁生日。MySQL 曾经是 Web 开发的基石,至今仍广受欢迎。但具有讽刺意味的是,随着 MySQL 进入第四个十年,它已经播下了自己衰落的种子,尤其是相对于 Postgres。自 2010 年以来一直是 MySQL 的管理者,Oracle 可能会宣称 MySQL 是“世界上最受欢迎的数据库”, 但客观上,长期以来,这一直是错误的,正如开发人员情绪调查以及 Stack Overflow 和 DB-Engines 的受欢迎程度排名所表明的那样。

所有这些都不是为了贬低 MySQL 的重要性。它过去是,现在也是 Web 的关键基础设施。但它不再是开发人员在大多数情况下的默认数据库。这是怎么发生的呢?

多年来,MySQL 一直是互联网的首选数据库。MySQL 是昂贵的商业系统的轻量级开源替代方案,它使在 Web 上构建变得容易。它推动了 LAMP(Linux、Apache、MySQL、PHP)堆栈的兴起。它简单、快速且免费。但随着时间的推移,使 MySQL 占据主导地位的因素开始限制它的发展。它专注于简单性,使其易于学习,但难以发展。其宽松的早期设计帮助它快速传播,但也使其不适合现代、复杂的应用程序。它的主导地位使其不如 PostgreSQL 渴望创新,PostgreSQL 是一个不断缩小差距并增加新功能的数据库。

MySQL 的起源故事植根于早期的开源运动。1995 年,瑞典开发人员 Michael “Monty” Widenius 将 MySQL 作为内部项目创建,并在不久后向公众发布。到 2000 年,MySQL 已经完全开源(GPL 许可),它的受欢迎程度呈爆炸式增长。作为 LAMP 堆栈的数据库组件,MySQL 为 Web 开发人员提供了一个不可抗拒的组合:它免费、易于安装,并且“足够好”来支持动态网站。在一个由昂贵的专有数据库主导的时代,MySQL 的到来恰逢其时。2000 年代的 Web 初创公司(Facebook、YouTube、Twitter、Flickr 和无数其他公司)都采用 MySQL 来存储用户数据和内容。MySQL 很快成为构建网站的代名词。

尽管进行了一些权衡,但早期的 MySQL 还是获得了关注。在年轻的时候,MySQL 缺乏某些“企业”功能(例如完全的 SQL 合规性或默认引擎中的事务),但这种简单性对许多用户来说是一个功能,而不是一个错误。它使 MySQL 的读取和简单查询速度极快,并且对于新手来说更容易管理。开发人员可以毫不费力地运行 MySQL 数据库,这与当时的 Oracle 甚至 PostgreSQL 等较重的系统形成鲜明对比。“很难与易用性竞争,” 我在 2022 年观察到 。

到 2000 年代中期,MySQL 无处不在,并且功能越来越丰富。数据库已经成熟(添加了 InnoDB,一个更强大的事务存储引擎)并继续乘着 Web 爆炸式的发展。即使出现了更新的数据库,MySQL 仍然是数百万部署的默认选择,从小型企业应用程序到大型 Web 基础设施。截至 2025 年,就安装量而言,MySQL 可能仍然是全球部署最广泛的开源(或专有)数据库。大量应用程序是使用 MySQL 作为后备存储编写的,其中许多应用程序仍在积极使用中。从这个意义上说,今天的 MySQL 有点像 IBM 的 DB2:一个拥有大量安装基础的主力数据库,即使它不再是最时尚的选择,它也不会消失。

在过去十年中,MySQL 在开源数据库领域的主导地位一度毋庸置疑,但面临着来自相对较新的竞争者(MongoDB、Redis、Elasticsearch)和旧竞争者(Postgres)的强大阻力。从我在 MongoDB 的有利位置来看,我看到大量开发人员转向 MongoDB 以更灵活地构建 Web 和其他应用程序。但是,对于希望坚持使用 SQL 但需要比 MySQL 提供的更多功能的开发人员来说,Postgres 已成为“ 轻松的按钮”。

2005 年的 Web 开发人员几乎可以将 MySQL 用于任何项目,而今天他们有大量针对特定需求量身定制的选择 。需要一个灵活的 JSON 文档存储来支持通用数据库需求?MongoDB 在招手。构建实时分析还是全文搜索?Elasticsearch 可能更合适。正在寻找内存缓存或高速数据结构存储?Redis 就在那里。即使在数据分析和数据仓库领域,Snowflake 和 BigQuery 等云原生选项也已经起飞。

但是,PostgreSQL 可能是 MySQL 衰落的功劳(或者说,如果你愿意的话,也可以责怪)。造成这种情况的原因既有技术上的,也有文化上的。Postgres 提供了 MySQL 历史上没有的功能 。其中包括:

更丰富的 SQL 功能和标准合规性:PostgreSQL 长期以来一直优先考虑 SQL 标准和高级功能。它支持复杂查询、窗口函数、公共表表达式、全文搜索和强大的 ACID(原子性、一致性、隔离性、持久性)事务,其中一些 MySQL 没有或后来才添加。Postgres 可以处理复杂的企业级工作负载,而无需违反规则。可扩展性和灵活性:Postgres 具有高度可扩展性。您可以定义新的数据类型、索引类型,甚至可以用各种语言编写自定义扩展或存储过程。无论是 GIS/地理空间数据 (PostGIS)、时间序列扩展,还是用于加密和 AI 用例的 pgcrypto 和 pgvector 扩展,Postgres 都可以根据需要进行变形。这些可扩展性钩子使 Postgres 始终处于领先地位,即使这些扩展可能为现代应用程序提供明显较差的性能 。与 MySQL 更有限的插件模型相比,Postgres 的可扩展性仍然闪耀。开源、开放文化:MySQL 和 Postgres 都是开源的,但 PostgreSQL 的许可和治理更加宽松。Postgres 是一个真正的社区驱动型项目,由一个核心全球团队开发,并得到许多没有单一所有者的公司的支持。相比之下,MySQL 使用 GPL(用于开放版本),并且多年来一直由 Oracle 拥有。Oracle 的管理是一把双刃剑。一方面,Oracle 无疑对 MySQL 的开发进行了投资。当前的 MySQL 8.x 系列与 2000 年代的 MySQL 相去甚远。它是一个更强大、功能更丰富的数据库(在复制、安全性、GIS、JSON 支持等方面进行了改进),这在一定程度上要归功于 Oracle 的工程资源。但是,对 MySQL 工程的严格控制也改变了 MySQL 社区的动态,可以说减缓了其发展势头。

简而言之,PostgreSQL 让许多人相信,它比 MySQL 提供了更多“面向未来”的价值。

尽管存在所有挑战,但 MySQL 将与我们相伴很长很长一段时间。许多开发人员和组织有充分的理由坚持使用 MySQL,即使替代方案不断涌现。首先也是最重要的一点是 MySQL 的大规模可靠性记录。它已经证明自己能够处理巨大的工作负载。世界上的 Facebook 和 Twitter 并没有超越 MySQL,而是通过定制工具和精心的工程设计使 MySQL 屈服于他们的意愿。如果 MySQL 可以满足拥有数十亿用户的社交网络的数据需求,那么它可能会很好地处理您的电子商务网站或内部应用程序。这个血统很重要。

其次,MySQL 仍然简单且为众多开发人员所熟悉。它通常是新开发人员学习的第一个关系数据库,这要归功于它在教程和新兵训练营中的普遍性,以及与初学者友好型工具的集成。MySQL 的文档范围广泛,其错误消息和行为是众所周知的。在许多情况下,开发人员不需要 PostgreSQL 的高级功能,而 MySQL 的占用空间更小(是的,有时对 SQL 语法很宽容)可以使开发感觉更快。“MySQL 更简单”的旧观念仍然存在,即使 PostgreSQL 多年来提高了其易用性。这种熟悉会产生惰性:组织已经部署了 MySQL DBA、MySQL 备份脚本和 MySQL 监控。转换是困难的。

还有某种生态系统锁定。数以百计的流行 Web 应用程序和平台都构建在 MySQL(或其直接的表亲 MariaDB)之上。例如,为全球大部分网站提供支持的 WordPress 使用 MySQL/MariaDB 作为其数据库层。许多其他内容管理系统、电子商务平台和设备都依赖于 MySQL。这种根深蒂固的基础意味着 MySQL 在人们设置这些工具时会继续默认部署。即使是云提供商,虽然他们热情地提供 PostgreSQL,但也提供完全托管的 MySQL 服务(通常是与 MySQL 兼容的服务,如 Amazon Aurora)来满足需求。简而言之,MySQL 深深嵌入到 Web 基础设施中,这不会在一夜之间被撤销。

然而,MySQL 持续存在的原因也威胁到它未来的忠诚度。MySQL 的广泛遗留使用意味着它仍然具有相关性,但新项目越来越有可能选择其他东西,无论是 PostgreSQL、MongoDB、Redis 还是您喜欢的任何东西。MySQL 的风险在于,新一代开发人员可能根本不会对它产生相同的依恋。势头在技术社区中很重要:PostgreSQL 拥有它;MySQL 则不那么重要。

此外,如果 MySQL 没有跟上新趋势,它甚至可能会看到忠实用户探索替代方案。例如,当开发人员开始关心 AI 应用程序的嵌入和向量搜索时,Postgres 使用 pgvector 找到了答案,MongoDB 添加了 Atlas Vector Search。直到最近,MySQL 才出现任何可比性。MySQL 的持续发展对于保持忠诚度至关重要,这再次与 Oracle 和 MySQL 社区在未来几年如何引导项目发展方向有关。

在 MySQL 30 岁之际,我们应该庆祝这个开源数据库令人难以置信的遗产。很少有软件项目能对计算时代产生如此深远的影响。MySQL 使整整一代开发人员能够构建动态网站和应用程序,从而降低初创公司和开源项目的进入门槛。MySQL 证明,开源基础设施可以与专有解决方案竞争甚至超越专有解决方案,从而重塑数据库行业的经济状况。为此,MySQL 永远值得称赞。

MySQL 的辉煌岁月可能已经过去了,但它的故事远未结束。MySQL 激发并将继续激励 30 年的竞争和创新,数据库世界变得更好。

来源:AI中国一点号

相关推荐