之前总想翻出mysql来看,却一直拖着。前两天处理了一个mysql的故障,其实我到现在还很晕。觉得这样糊里糊涂太让人无语。所以前两天开始安装mysql(source安装以后再说吧,直接rpm),翻了翻网上的资源,貌似介绍的不是很系统。最后还是去看了mysql的reference。看到5.1的有中文版,先看着吧。
看到这个
“MySQL AB是由MySQL创始人和主要开发人创办的公司。MySQL AB最初是由David Axmark、Allan Larsson和Michael“Monty”Widenius在瑞典创办的。” |
然后特意去翻了最新的5.5的reference,已经成了
"MySQL, the most popular Open Source SQL database management system, is developed, distributed, and supported by Oracle Corporation. " |
有种说不出来的感觉,sigh~
顺便想到开源,当我第一次知道这个的时候,觉得很神奇。读了那一段历史,觉得开源的出现和存在,给我很大的触动。
“MySQL”的正式发音是“My Ess Que Ell”(而不是“my sequel”),但我们并不介意你的发音方式是“my sequel”或其他当地方式。 |
好吧,以前我都不知道原来是My Ess Que Ell,当然这个我也不会发音。特意去翻了一下mysql的历史,转载之。
数据库厂商的发展历史之MySQL 来源:网络 MySQL这个名字,起源不是很明确。一个比较有影响的说法是,基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQL AB创始人之一的Monty Widenius的女儿也叫My。这两个到底是哪一个给出了MySQL这个名字至今依然是个密,包括开发者在内也不知道。 MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。 MySQL,虽然功能未必很强大,但因为它的开源、广泛传播,导致很多人都了解到这个数据库。它的历史也富有传奇性。 MySQL的历史最早可以追溯到1979年,那时Oracle也才小打小闹,微软的SQL Server影子都没有。有一个人叫Monty Widenius, 为一个叫TcX的小公司打工,并用BASIC设计了一个报表工具,可以在4M主频和16KB内在的计算机上运行。过了不久,又将此工具,使用C语言重写,移植到Unix平台,当时,它只是一个很底层的面向报表的存储引擎。这个工具叫做Unireg。 可是,这个小公司资源有限,Monty天赋极高,面对资源有限的不利条件,他反而更能发挥潜能,总是力图写出最高效的代码。并因此养成了习惯。与Monty同在一起的还有一些别的同事,很少有人能坚持把那些代码持续写到20年后,而Monty却做到了。 1990年,TcX的customer 中开始有人要求要为它的API提供SQL支持,当时,有人想到了直接使用商用数据库算了,但是Monty觉得商用数据库的速度难令人满意。于是,他直接借助于mSQL的代码,将它集成到自己的存储引擎中。但不巧的是,效果并不太好。于是, Monty雄心大起,决心自己重写一个SQL支持。 1996年,MySQL 1.0发布,只面向一小拨人,相当于内部发布。到了96年10月,MySQL 3.11.1发布了,呵呵,没有2.x版本。最开始,只提供了Solaris下的二进制版本。一个月后,Linux版本出现了。 紧接下来的两年里,MySQL依次移植到各个平台下。它发布时,采用的许可策略,有些与众不同:允许免费商用,但是不能将MySQL与自己的产品绑定在一起发布。如果想一起发布,就必须使用特殊许可,意味着要花银子。当然,商业支持也是需要花银子的。其它的,随用户怎么用都可以。这种特殊许可为MySQL带来了一些收入,从而为它的持续发展打下了良好的基础。(细想想,PostgreSQL曾经有几年限入低谷,可能与它的完全免费,不受任何限制有关系)。 MySQL3.22应该是一个标志性的版本,提供了基本的SQL支持。 1999-2000年,有一家公司在瑞典成立了,叫MySQL AB (不知道AB是什么意思,待查)。 雇了几个人,与Sleepycat合作,开发出了 Berkeley DB引擎, 因为BDB支持事务处理,所以,MySQL从此开始支持事务处理了。
2000年4月,MySQL对旧的存储引擎进行了整理,命名为MyISAM。同时,2001年,Heikiki Tuuri向MySQL提出建议,希望能集成他们的存储引擎InnoDB,这个引擎同样支持事务处理,还支持行级锁。 如今,遗憾的是,BDB和InnoDB好像都被Oracle收购了,为了消灭竞争对手,哪怕是开源的,都是不择手段。 MySQL与InnoDB的正式结合版本是4.0。 到了MySQL5.0,2003年12月,开始有View, 存储过程之类的东东,当然,其间, bug也挺多。 在2008年1月16号 MySQL被Sun公司收购。 最近,MySQL的创始人Monty Widenius已经向Sun提交了辞呈。head都要走了。 据说,被Sun收购的公司多薄命,不知道MySQL今后前途如何,希望一路走好。相信MySQL的生命力还是很长久的。 |
这篇文章应该成文较早,在 2009年4月,Sun被Oracle收购了,sigh~还有一篇
走进MySQL – MySQL历史与架构(1) MySQL的架构在其历史背景中最容易理解,所以,这两部分放到一起来讲。 MySQL的历史 或许是需要在比较烂的计算机硬件上工作,抑或是依靠天生的聪明才智,Monty练就了编写非常高效代码的习惯与能力。同时他还练就了,或者是天赋了具备常人所不能及的前瞻能力,使他能在不知道未来太多开发细节的情况下,怎样让现在的代码对以后的开发有所帮助。 除了以上原因之外,因TcX是一个小公司且Monty是其合伙人之一,所以代码如何编写,Monty相当有发言权。尽管有着为数不少跟Monty一样有天赋与才华的人,但因种种原因,很少有人能左右自己的代码20年以上,但Monty做到了。 Monty的作品、天赋以及他的这种对代码的所有权为MySQL这一奇迹的出现奠定了基础。 上世纪90年代某年某月某日,TcX的客户急切要求访问其数据的SQL接口,TcX出了好几种方案,一种是把数据都加载进一个商用数据库,但Monty对这个方案的执行速度并不满意。他尝试将mSQL的代码用做SQL层,并用自己的低层级的存储引擎集成进来,但效果也不好。然后一场由压抑的天才的程序员举旗的运动爆发了:“别人不靠谱,我要自己搞!” 就这样,1996年五月份,MySQL 1.0发布给一小撮人,同年10月,MySQL 3.11.1正式发布。这个发布版只提供一个Solaris的二进制发布版,一个月后,源码和Linux二进制包也发布了。 接下来的两年中,随着新的特性逐步增加,MySQL被移植到其它的操作系统上。起初MySQL发布的时候遵循一种特殊许可证:允许MySQL可以商用,但利用MySQL所开发的软件不能再次发布。特殊许可证可以颁给那些想销售捆绑MySQL的产品的人。另外,TcX也提供商业支持有偿服务。尽管MySQL最初的目标早已实现,但这些举措为TcX对MySQL的深入开发指明了方向。 在这一段时期中MySQL发展到3.22,它支持了适度的SQL集,还带有一个比我们想象的可以由一个人可以搞定的那种要更复杂的优化器,新版本速度很快,且非常稳定。API的大量提供,让你几乎可以用任何一种地球上的编程语言编来写它的客户端。尽管如此,它还是不支持事务、子查询、外键、存储过程和视图。只在表级别存在的锁,时不时会造成响应缓慢更甚挂机。很多不得要领的MySQL爱好者只是把它拿来玩玩而已,而高级用户则乐呵呵地把数据从Oracle和SQL Server上往MySQL上迁移,以解决性能问题和降低成本,并编写代码弥补MySQL自身的缺陷不足。 大约在1999-2000,一个名叫MySQL AB的独立公司成立了,它聘请了几位开发者并与Sleepycat公司建立合作伙伴关系,提供访问Berkeley DB数据文件的SQL接口。自从Berkeley DB具备事务功能之后,它就赋于了MySQL支持事务的特质,补上了它的短板。在为集成Berkeley DB做了一些修改之后,MySQL 3.23发布了。 尽管MySQL的开发者没能完全解决掉Berkeley DB接口的所有缺点,且Berkeley DB的表也不甚稳定,但是,功夫没白费。MySQL的源码中加入的钩子,这样就可以加入任何类型的存储引擎了,当然也就可以加入支持事务的了。 到了2000年四月,有了Slashdot的支持与赞助,master/slave机制加入。不支持事务的老存储引擎ISAM被重写了,并以MyISAM的形式发布。经过大量的改良,当前版本也支持了全文搜索。MySQL AB还曾有一个跟NuShpere短期的合作,在MySQL中加入了一个支持行级锁和事务的引擎Gemini,但因法律问题于2001年结束了。也就在这时,Heikki Tuuri提议用自己的引擎集成到其中,并接手MySQL AB的工作,这个引擎就是同样支持行级锁和事务的InnoDB。 因为之前Berkeley DB已经完成了新的表处理接口,所以Heikki的集成工作变得更加的顺畅。2001年10月,MySQL/InnoDB版发布了,版本号是4.0 alpha。2002年初,MySQL/InnoDB组合已经是非常快速稳定了,但在2003年3月份,4.0版才正式宣布。 值得一提的是,版本号的变更并是不因为加入了InnoDB。MySQL的开发者只是把InnoDB当成是一个插件,完全没把它当成是他们赖以成功的法宝。从过去到现在,一个新的存储引擎的加入也不值得发布一个版本号来庆贺。实际上,跟以前的版本比较起来,4.0并没加太多的新东西。也许新加的最有意义就数查询缓存了(Query Cache),它大大提升了众多应用的性能。用来在slave上复制数据的代码也重写了,变成了两个线程,一个用来处理master上的网络IO,另一个用来处理更新。另一些是关于优化器的改良。客户端/服务器间的协议也可以用SSL加密。 2003年4月4.1 alpha版本发布,2004年6月4.1 beta版发布。这可不像4.0,这次加入了很多有意义的功能。最有意义的就是子查询,一个大家期待已久的功能。空间索引支持也加到了MyISAM引擎中。Unicode支持也被实现了。客户端/服务器协议也有了大量的改动,面对黑客的攻击它更安全,而且支持预处理语句(prepared statement)。 与4.1同步进行的还有另外一个分支版本5.0,它加入了存储过程,服务器端游标,触发器,视图,分布式事务(Xa transactions),查询优化器的显著改进以及其它的一些特性。MySQL的开发者发现如果要让4.1 稳定下就要花很大的工夫,如果他们要把新特性都加进去,就必须先搞定存储过程,这让他们痛下决心另创了一个分枝来开发5.0。5.0 alpha版最终于2003年12月发布了。曾经一度因这个造成了一些混乱——两个分枝同时处在alpha 阶段,后来(2004年10月)4.1稳定了,这个尴尬也就随之而解了。 5.0也在一年之后,也就是2005年10月,也稳定下来了。 5.1 alpha版紧随其后,于2005年11月发布,其中加了好多的新的改进,如表分区(table data partitioning),基于行的复制(row-based replication),事件调度器(event schedular),和让新存储引擎和其它插件轻松集成的标准化插件API。 现在,MySQL正在热火朝天地开发中,5.0是稳定版,5.1是beta版,且马上就要稳定了。很多新的特性也会有5.2中有所体现。 (待续……) |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23650854/viewspace-686793/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23650854/viewspace-686793/