MySQL的前世今生
正所谓以史为鉴,指导未来。了解MySQL的过去才能更好地掌握其未来的发展方向。本章首先介绍MySQL从无到有的历史。
短短的十几年间,MySQL快速发展,原本门可罗雀的MySQL网站,如今日访问超过1000万PV(Page View)。本章后面将引用著名市场调查公司的数据和图表,来说明数据库软件MySQL在市场中处于何种地位。
MySQL这个概念有三重意义。
首先,MySQL是一个关系型数据库管理系统。MySQL设计之初的目标便是成为高性能、普通用户支付得起的数据库服务器和工具。到今天为止,这一目标已经变得越来越近。
其次,MySQL是一家公司。瑞典主流媒体《瑞典日报》是如此描述这家公司的--"MySQL AB是开源软件数据库软件MySQL的后台支持公司"。MySQL公司由两个瑞典人Michael Widenius、Allan Larsson和一个芬兰人David Axmark于1995年在瑞典注册成立。
最后,MySQL是一种开源精神。由MySQL带动的一系列软件开发和经济效益给数据库领域带来了许多革命性的贡献。MySQL的使命是为所有人贡献一个经济实惠并且性能卓越的数据库软件。
1.1 MySQL的历史
MySQL的历史可以追溯到1979年。当时Allan Larsson和Michael Widenius(Monty)开了一家自己的咨询公司,取名TcX,名字的由来已无从考证。有道是"前世尽付真情,今生亦现福缘积厚"。那年一个夜黑风高的晚上,Michael写出了他的第一款数据库工具UNIREG。
有当年的天气记录为证,Michael写完该工具时极光异常明亮,炫彩无比。大凡重大事情的发生,后来的著述人都会记录有一些类似的怪现象。比如刮风、下雨、冒仙气什么的,还有天上星星异常闪烁等等,反正就是说明这种事情很不简单。
最初的UNIREG是运行在瑞典人制造的ABC800计算机(见图1-1)上的。ABC800的内存只有32KB,CPU是频率只有4MHz的 Z80。在1983年Monty遇到了David Axmark,两人相见恨晚,开始合作运营TcX,Monty负责技术,David搞管理。后来TcX将UNIREG移植到其他更加强大的硬件平台,主要是Sun的平台。
![]() |
(点击查看大图)图1-1 ABC800计算机 |
一次Monty接到了一个项目,需要为当时的UNIREG提供更加通用的SQL接口,Monty找到了David Hughes--mSQL的发明人,商讨合作事宜。然而,经过一番测试后,他们发现mSQL的速度并不尽如人意,无法满足客户的需求。
遇到这种问题,程序员出身的Monty无法委曲求全,毅然采取了革命性的态度--重新设计整个系统。1995年5月23日,MySQL的第一个内部版本发行了,并在第二年对外公布了MySQL官方正式发行版(3.11.1)。有趣的是,第一个MySQL正式版恰巧只能运行在Sun Solaris上,仿佛昭示了它日后被Sun收购的命运。
在接下来的两年中,MySQL被移植到不同的平台,同时加入了不少新的特性。到 1998时,MySQL能够运行在10多种操作系统之上,其中包括应用非常广泛的 FreeBSD、Linux、Windows 95和Windows NT等。很快MySQL 3.22也发布了,但它仍然存在很多问题--如不支持事务操作、子查询、外键、存储过程和视图等功能。正因为这些缺陷,当时许多Oracle和SQL Server的用户对MySQL根本不屑一顾。
大概在1999的冬天,下了很大一场雪。然后独立的商业公司MySQL AB就在瑞典的中部城市Uppsala成立了。并于同年发布了包含事务型存储引擎BDB的MySQL 3.23。在集成BDB存储引擎的过程中,MySQL开发团队得到了很好的锻炼,为后来能将InnoDB整合以及开发开放插件式的存储引擎架构打下了坚实的基础。
与此同时,芬兰公司Heikki开始接触MySQL AB,讨论将Heikki的存储引擎InnoDB整合到MySQL数据库中的可行性。双方的合作非常顺利,并于2001年推出MySQL 4.0 Alpha版本。经过两年的公开测试和应用,到了2003年,包含InnoDB的MySQL已经变得非常稳定了。随即在同一年,MySQL推出4.1版,第一次使得MySQL支持子查询,支持Unicode和预编译SQL等功能。
MySQL 4.1还在Alpha版时,公司已决定并行开发5.0版。因为他们打算加快MySQL的开发速度以适应日益苛刻的市场需求。这个新版本是有史以来 MySQL最大的变化,添加了存储过程、服务端游标、触发器、查询优化以及分布式事务等在大家看来一个"正常数据库管理系统"应当拥有的一整套功能。
2008年2月,当时的业界开源老大Sun Microsystems动用10亿美元收购了MySQL,造就了开源软件的收购最高价。这次交易给开源交易设立了一个新的基准。在此之前的交易金额 (JBoss、Zimbra、XenSource、Gluecode)从没接近过10亿美元,全部加起来才差不多与Sun Microsystems购买MySQL的花费持平。MySQL被收购之后,MySQL图标停止使用,取而代之的是Sun/MySQL图标。
MySQL和Sun合并之后,推出了MySQL 5.1GA版和MySQL 5.4 Beta版。5.4的推出照搬了4.1和5.0当时的开发模式,让5.4和6.0并行处于Beta开发阶段。
螳螂捕蝉,黄雀在后。2009年,数据库老大Oracle大笔一挥,开出74亿美元的支票,将Sun Microsystems和MySQL通盘收于旗下。
2010年……未来,让我们共同期待(MySQL发行大事记见表1-1)。
表1-1 MySQL发行大事记
日 期 |
事 件 |
1994年 |
MySQL开始设计、开发 |
1995年5月 |
内部版1.0发行 |
1996年 |
公开版3.11.1发行 |
1998年 |
MySQL Windows版可用 |
2000年6月 |
3.23 Beta版发行 |
续表
日 期 |
事 件 |
2001年1月 |
3.23 GA版发行 |
2002年8月 |
4.0 Beta版发行 |
2003年3月 |
4.0 GA版发行 |
2004年6月 |
4.1 Beta版发行 |
2004年10月 |
4.1 GA版发行 |
2005年3月 |
5.0 Beta版发行 |
2005年10月 |
5.0 GA版发行 |
2008年2月 |
Sun Microsystems收购MySQL AB |
2008年11月 |
5.1 GA版发行 |
2009年4月 |
5.4 Beta版发行 |
这里附带说明一下Drizzle,它是Sun/MySQL的Brian在2008年提出的一个计划。目标是将开发一个更小、更轻、更快的数据库,用作云计算(Cloud Computing)和Web应用的基础架构。
Drizzle是MySQL 6.0的一个分支,也采用客户端/服务器端(C/S)的架构,并基于GPL v2发布。
(1)与MySQL 6.0的相同方面:
存储过程。
查询缓存。
触发器。
(2)与MySQL 6.0的不同方面:
使用微内核,实现了完全模块化。
具有更多可插式接口,如认证和日志。
多核SMP优化。
采用相对较少的数据类型和存储引擎类型。
有兴趣了解和试用Drizzle的读者可以从Launchpad下载最新代码。