从女儿的名字到数据库革命:MySQL的诞生故事

当瑞典程序员蒙蒂·维德纽斯用女儿的名字命名他的数据库项目时,他没想到这会成为开源数据库革命的起点...

从女儿的名字到数据库革命:MySQL的诞生故事

导语

1994年冬,瑞典小镇 Tc 的一座红房子里,35岁的蒙蒂·维德纽斯(Michael “Monty” Widenius)坐在地下室的工作台前,身旁放着一杯已经凉透的咖啡。他正在为一个客户开发一个数据仓库应用,但现有的 mSQL 数据库让他抓狂——它不支持 SQL 连接(JOIN),这让数据分析几乎不可能。“如果我能有一个更快、更完整的数据库就好了,“他喃喃自语。这时,他的妻子抱着他们刚出生不久的女儿走进地下室,女儿的小名叫”My”。蒙蒂看着女儿,又看了看屏幕上的代码,突然有了灵感。“就叫它 MySQL 吧,“他在文件名上敲下这个名字。这个以女儿命名的项目,将在未来20年里成为全球最流行的开源数据库,支撑着从 Facebook 到 Wikipedia 的无数互联网巨头,开启一场开源数据库的革命。


时代背景(Why now)

要理解 MySQL 的诞生,我们需要回到1990年代初的软件开发世界。

商业数据库的统治

1994年,数据库市场被商业巨头统治:

  • Oracle:企业级数据库的霸主,功能强大但价格昂贵(数万美元起步)
  • Microsoft SQL Server:捆绑 Windows 生态,主要面向中小企业
  • IBM DB2:大型机和企业市场的选择
  • Sybase:金融和电信行业
  • Informix:高性能 OLTP 系统

这些数据库的共同特点:昂贵、复杂、需要专门的 DBA 团队。

开源运动的兴起

1990年代初,开源运动开始兴起。1991年,Linus Torvalds 发布了 Linux 内核。1995年,Apache HTTP Server 发布。开源软件证明:社区协作可以创造出与商业软件媲美的产品。

Web 的黎明

1994年,Mosaic 浏览器发布,互联网开始从学术界走向大众。网站需要数据库来存储内容、用户信息、日志。

但当时的网站开发者面临困境:

  • 商业数据库太贵(一个初创公司买不起 Oracle)
  • 开源数据库选择很少(PostgreSQL 还很复杂,mSQL 功能有限)

LAMP 栈的孕育

1994年前后,Web 开发的”LAMP”栈正在孕育:

  • Linux:操作系统
  • Apache:Web 服务器
  • MySQL:数据库(即将诞生)
  • PHP/Python/Perl:编程语言

LAMP 栈将定义接下来20年的 Web 开发。

mSQL 的局限

David Hughes 开发的 mSQL(mini SQL)是当时最流行的开源数据库。但它有严重局限:

  • 不支持 JOIN(SQL 连接)
  • 不支持事务
  • 性能问题

这正是 Monty Widenius 决定创建 MySQL 的原因。


产品诞生(Origin Story)

Monty Widenius 的故事,要从他的背景说起。

自学成才的程序员

Widenius 1962年出生于芬兰,在瑞典长大。他没有大学计算机学位,是自学成才的程序员。

从十几岁开始,他就沉迷于编程。他购买了一台基于 CP/M 的电脑,开始学习汇编语言。1980年代,他开发了多个商业软件,包括一个用于库存管理的数据库系统 UNIREG。

Tc 的日子

1990年代初,Widenius 住在瑞典小镇 Tc,为各种客户开发定制软件。他的公司叫 TcX DataKonsult AB。

UNIREG 是他最常用的工具,但它是一个终端应用,不适合 Web 环境。

1994年,一个客户需要一个 Web 前端来访问 UNIREG 数据。Widenius 尝试使用 mSQL,但很快发现 mSQL 不支持 JOIN。

“JOIN 是关系型数据库的核心,“Widenius 回忆道,“没有 JOIN,你很难做有意义的数据分析。”

MySQL 的诞生

Widenius 决定自己动手。他基于 UNIREG 的 ISAM(Indexed Sequential Access Method)存储引擎,编写了一个支持 SQL 的数据库服务器。

他的目标是:

  • 支持标准 SQL
  • 性能优于 mSQL
  • 易于使用和部署
  • 开源

关于名字的起源:MySQL 中的”My”来自 Widenius 女儿的小名 My(瑞典语发音类似于”米”),“SQL”是 Structured Query Language 的缩写。

(注:Widenius 后来澄清,虽然女儿的名字是灵感之一,但”My”在瑞典语中也有”我的”之意,暗示”我的 SQL”。)

早期合作者

Widenius 不是一个人战斗。他找到了两位重要的合作伙伴:

David Axmark:瑞典人,开源倡导者。他帮助编写了 MySQL 的构建系统和文档,是 MySQL 早期的布道者。

Allan Larsson:TcX DataKonsult 的联合创始人,负责商业和法律事务。

三人的组合奠定了 MySQL 的成功基础。


第一个关键突破(First Breakthrough)

MySQL 的第一个突破,来自于1995年的正式发布和双重许可策略。

1995年5月23日:MySQL 首次公开发布

Widenius 在 comp.databases.mysql 新闻组发布了 MySQL 3.11.1 版本。它支持:

  • 完整的 SQL 子集
  • 多线程
  • 多用户
  • 多种存储引擎

双重许可模式

这是 MySQL 最具争议也最关键的决策。

MySQL 采用 GPL(GNU General Public License)开源许可证发布,这意味着任何人都可以免费使用、修改、分发 MySQL,但必须开源衍生作品。

但同时,MySQL AB(后来成立的公司)提供商业许可证。如果你的应用不想开源,可以购买商业许可证。

这个模式的逻辑是:

  • 个人开发者、开源项目、内部使用:免费(GPL)
  • 商业应用、不想开源的产品:付费(商业许可)

这在当时是创新的商业模式。它让 MySQL 既能保持开源精神,又能获得商业收入。

Linux 发行版的采纳

1990年代末,Linux 发行版开始包含 MySQL:

  • Red Hat Linux
  • Debian
  • SuSE

这让 MySQL 成为 Linux 用户的默认数据库选择。

PHP 的合作

PHP 语言在1990年代末快速崛起。PHP 与 MySQL 的组合(通过 mysql 扩展)成为 Web 开发的黄金搭档。

1998年,PHP 3.0 发布,内置了 MySQL 支持。PHP 的易用性和 MySQL 的性能,共同推动了动态网站的爆发。


扩张阶段(Growth)

1995年至2005年,MySQL 经历了爆发式增长。

MySQL AB 的成立

2001年,Widenius、Axmark 和 Larsson 正式成立了 MySQL AB 公司,总部设在瑞典 Uppsala 和美国 Cupertino。

公司的使命是:商业化 MySQL,同时保持开源。

融资历程

  • 2001年:第一轮融资,来自 Scandinavian 投资者,约 400 万美元
  • 2003年:B 轮 1950 万美元,来自 Benchmark Capital 和 Index Ventures
  • 2005年:C 轮 1850 万美元

产品演进

MySQL 3.2x 和 4.0 版本带来了重要功能:

  • InnoDB 存储引擎(支持事务、外键、行级锁)
  • 复制(Replication)
  • 子查询
  • 全文搜索
  • GIS 支持

标志性用户

2000年代,MySQL 成为互联网公司的首选数据库:

  • Yahoo!:大量内部系统
  • Google:AdWords 早期版本
  • Facebook:2004年成立时选择 MySQL,至今仍大量使用
  • YouTube:视频元数据存储
  • Wikipedia:MediaWiki 的底层数据库
  • Twitter:早期版本
  • Alibaba:淘宝、支付宝

这些公司证明了 MySQL 可以处理大规模生产负载。

LAMP 栈的统治

到2005年,LAMP(Linux、Apache、MySQL、PHP/Python/Perl)成为 Web 开发的绝对主流。

根据各种估计,当时超过 70% 的网站使用 MySQL 作为数据库。


关键竞争(Competition)

MySQL 的崛起,引来了竞争。

PostgreSQL

PostgreSQL 是 MySQL 的主要开源竞争对手。PostgreSQL 功能更丰富(存储过程、复杂查询、扩展性),但学习曲线更陡峭。

PostgreSQL 的优势:

  • 更标准兼容
  • 更复杂的数据类型
  • 更好的扩展性

MySQL 的优势:

  • 更简单、更快
  • 更好的复制
  • 更广泛的 Web 托管支持

两者的竞争持续至今,但市场足够大,两者都取得了成功。

商业数据库

Oracle、SQL Server、DB2 继续统治企业市场。它们的特点是:

  • 功能更全面(存储过程、复杂事务、高级安全)
  • 更好的技术支持
  • 企业采购偏好

MySQL 的定位是:互联网应用、Web 开发、中小企业。

InnoDB 的收购危机

2005年,Oracle 宣布收购 InnoDB 的开发者 Innobase OY。

InnoDB 是 MySQL 最重要的存储引擎,提供事务支持。如果 Oracle 停止开发 InnoDB,MySQL 将受到重创。

Widenius 的应对:

  1. 开发替代存储引擎(Falcon,后来是 Maria 的 Aria)
  2. 与 Oracle 谈判,确保 InnoDB 继续开源
  3. 开始规划 MySQL 的”B 计划”(后来成为 MariaDB)

这次危机让 Widenius 意识到:依赖第三方组件的风险。


拐点(Turning Point)

MySQL 的关键转折点出现在2008年至2010年。

Sun Microsystems 收购

2008年1月,Sun Microsystems 宣布以 10 亿美元收购 MySQL AB。

这是开源软件历史上最大的收购之一。MySQL 的创始人、员工、投资者都获得了丰厚回报。

Sun 的承诺:

  • 继续投资 MySQL 开发
  • 保持开源
  • 加强企业功能

Oracle 收购 Sun

2010年1月,Oracle 宣布以 74 亿美元收购 Sun Microsystems。

这引发了开源社区的担忧:Oracle 拥有 Oracle 数据库,它会不会扼杀 MySQL?

欧盟反垄断机构介入调查,最终 Oracle 做出承诺:

  • 继续开发和维护 MySQL
  • 保持开源许可证至少 5 年
  • 投入更多资源(超过 Sun 的投入)

MariaDB 的诞生

尽管如此,Widenius 对 Oracle 控制 MySQL 感到不安。

2009年,他离开 Sun/Oracle,创立了 MariaDB 基金会和 MariaDB Corporation。MariaDB 是 MySQL 的分支,保持完全开源(GPL)。

MariaDB 的初始版本与 MySQL 兼容,但逐渐添加自己的特性:

  • Aria 存储引擎
  • Galera 集群
  • 更多存储引擎选项

MySQL 5.5 和 5.6

在 Oracle 的管理下,MySQL 继续发展:

  • MySQL 5.5(2010):默认 InnoDB 存储引擎,半同步复制
  • MySQL 5.6(2013):GTID 复制,性能优化
  • MySQL 5.7(2015):JSON 支持,GIS 增强
  • MySQL 8.0(2018):窗口函数,CTE,文档存储

Oracle 确实投入了资源,MySQL 在性能、功能、可靠性上都有提升。


结果(Outcome)

到2024年,MySQL 仍然是世界上最流行的数据库之一。

市场地位:

  • DB-Engines 排名:第二(仅次于 Oracle)
  • 估计超过 1000 万安装实例
  • 支撑着数百万个网站和应用

产品生态:

  • MySQL Community Edition:开源免费版本(GPL)
  • MySQL Enterprise Edition:商业版本,包含高级功能和支持
  • MySQL Cluster:分布式内存数据库
  • MySQL HeatWave:Oracle 云的托管 MySQL 服务,包含分析引擎

云托管服务:

  • Amazon RDS MySQL
  • Google Cloud SQL
  • Azure Database for MySQL
  • Oracle MySQL HeatWave
  • Alibaba Cloud RDS

MariaDB 的发展:

  • MariaDB 成为许多 Linux 发行版的默认 MySQL 替代品
  • MariaDB Corporation 提供企业版和支持服务
  • MariaDB 在功能上逐渐与 MySQL 分化(虽然保持兼容)

近期发展(2023-2024):

MySQL HeatWave Oracle 推出的 HeatWave 是一个革命性的功能:在同一个 MySQL 实例中,既有事务处理(OLTP),又有实时分析(OLAP)。这消除了数据仓库的 ETL 需求。

AI 和向量搜索 MySQL 9.0 引入向量数据类型,支持 AI 应用的语义搜索。


规律总结(Lessons)

MySQL 的故事,是开源软件商业化的经典案例。

1. 简单即是力量

MySQL 的设计哲学是简单和快速。相比 PostgreSQL 的功能丰富,MySQL 选择专注核心场景。这让开发者可以快速上手,迅速获得价值。

2. 双重许可的智慧

GPL + 商业许可的双重模式,让 MySQL 既能获得社区贡献,又能获得商业收入。这是开源软件商业化的成功范本。

3. 抓住 Web 浪潮

MySQL 的成功很大程度上得益于 Web 的兴起。LAMP 栈的组合让 MySQL 成为 Web 开发的标准组件。抓住技术浪潮是产品成功的关键。

4. 社区的重要性

MySQL 的成功离不开社区:贡献代码、编写文档、回答论坛问题、举办会议。社区让 MySQL 从一个人的项目变成了全球现象。

5. 创始人控制

Monty Widenius 对代码质量的执着是 MySQL 成功的关键。即使在获得投资后,他仍然密切参与核心开发,拒绝妥协。

6. 适应企业需求

InnoDB 的引入、复制的改进、分区功能——这些功能都是为了满足企业级需求。开源项目要成功,必须同时满足开发者和企业用户。

7. 分叉与生态

MariaDB 的分叉看似负面,但实际上增强了 MySQL 生态。用户有更多选择,竞争推动了创新。开源软件的分叉是健康生态的一部分。

8. 云时代的适应

MySQL 在云时代面临挑战(AWS Aurora、Google Spanner 等),但托管 MySQL 服务(RDS、Cloud SQL)让 MySQL 继续在云中发挥作用。


“我从未想过女儿的名字会成为世界上最流行的开源数据库。有时候,最好的创新来自于解决自己的问题。MySQL 的成功证明,如果你专注于做正确的事情——简单、快速、可靠——世界会找到你。”

—— Michael “Monty” Widenius,MySQL 创始人