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年,有一家公司在瑞典成立了,叫MySQLAB,公司名中的“AB”是瑞典语“aktiebolag”或“股份公司”的首字母缩写。可将其翻译为“MySQL有限公司”。事实上,MySQL有限公司和MySQLGmbH均是MySQL 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的创始人Michael “Monty” Widenius也弄出MariaDB来对抗MySQL。事情过去了几年,现在Oracle还在不断地为MySQL投入人力物力,MySQL也得到了进一步完善。然而与此同时,MySQL的衍生版以及NoSQL数据库技术的发展也在不断提速。业界的讨论话题变成了该不该继续使用MySQL。对此,我们整理了来自两个阵营的声音,给出了继续使用和放弃MySQL的五个考虑因素。
正方:继续使用MySQL
1. MySQL上的投资和创新比以往更多了
开源社区的传统认识是Oracle需要MySQL是为了减少对于他们的关系型数据库业务的威胁。 如果微软是被谴责的对象,那么这种谴责是对的,但这里是Oracle。 它的旗舰级数据库显然要高级得多,而MySQL做到最好也只能沾到它的一点边。
自从收购以来,Oracle已经扩大了MySQL团队并且给予他们一个更加成熟的开发过程。相比于传统开源项目由分散在这个星球上的人们协作完成,MySQL的开发和计划更多地由Oracle驱动。
在这段时间里,正如一位开发者所说的那样,这家公司已经在使代码更加模块化。这意味着短期的工作,但却有着长期的回报。在MySQL 5.6中,他们拆分了一个MySQL Server中的重要的锁,也就是说,锁开了(the LOCK_open),而这将带来超过一倍的顶级性能提升。
更何况,MySQL的主存储引擎是InnoDB,而Oracle在2005年收购了InnoDB 。这些同样位于Oracle的InnoDB的开发者们,正在为了更好的集成性能和MySQL与Oracle的数据库团队共同工作。
2. MySQL产品依然稳固.
MariaDB和开源倡导者抱怨说:新的代码在MySQL 5.5没有测试用例,一些企业版5.5内的特性是闭源的。这是一个开源纯度的问题,当然,一个所有用户都关心的事情。
而且,自二月份新版本发布以来,MySQL5.6被认为是一个坚实的、性能良好的产品,包含一些新的特性功能。Oracle花了两年时间将这个里程碑版本放到MySQL社区中测试及获取反馈。
MySQL 5.6从之前的4个CPU线程到现在的64 CPU线程,并发连接的数量较之前几乎增加了两倍,体现出来的是读速度4倍的提升,除此之外还有很多的改进需要花段时间来列出。
数据库集群和复制组的主席Robert Hodges说:他对MySQL的活力毫不质疑,他甚至还遇到一个担忧Mysql会被 Oracle毁掉的经理人,现在的情况是 Oracle正在将MySQL变成一个企业级的数据库管理系统。
3. MySQL被设计着眼于Web开发、云计算及大数据
Oracle在计算发展趋势上没有瞎,并把重点放在网络,云计算和大数据等项目上。侧重点在MySQL和MySQL cluster上,旨在提供伸缩扩展的高性能、高可用性、自愈性和数据的完整性、配置、监控及资源管理、开发的敏捷性和安全性等方面的改进。
为了支持云服务,MySQL通过GTIDs(全球的的交易标识符)这个新特性使得复制功能大大增强。 GTIDs使主从服务器之间的复制进度跟踪和变得简单,可以更容易的从故障中恢复,同时提供灵活配置和多层复写的持续管理。
2013四月,Oracle宣布发布Hadoop的MySQL插件。该插件实现了MySQL到Hadoop/Hive/HDFS间事件发生时的复制,补充了现有的基于批处理的Apache Sqoop连接。
诺基亚是在大数据环境拥抱MySQL的第一个公司,它运维着一个集中的PB级别的Hadoop集群,这个集群和规模100TB的Teradata企业级数据仓库关联着,大量的Oracle和MySQL数据节点及可视化技术使诺基亚世界各地60000+的用户使用大规模数据存储。而MariaDB呢,好像找不到大数据相关的任何事情。
4.MySQL企业版
MySQL企业版在甲骨文收购之前就推出了,但甲骨文已经显着提高了产品。5.6版增加了高可用性功能,如复制,Oracle VM模板,DRBD,甲骨文的Solaris集群,MySQL的Windows故障转移。它还引入了新的方法为新的和现有的应用程序执行基于策略的合规审计。
还有的企业监控器,它持续监控你的数据库,并提供给您最佳实践来实施。它还提供了查询分析器来监视应用程序的性能和Workbench,它提供了数据建模,SQL开发,服务器配置,用户管理和综合管理工具。
5. 现在较之前有更多的MySQL项目
在MySQL AB被收购之前,它在在25个国家有400名员工,其中有70%在家里办公。是否在一定要在一个地方工作一直存在争议。雅虎首席执行官Marissa Mayer说:她结束了在雅虎远程工作的允许,做事情需要合作,即同一建筑物里。
一位Oracle的MySQL架构师在自己的博客上说,Oracle已经变了,整个团队协同工作,尽管有些在红木海岸的巨塔、加利福尼亚或其他的地方,但都在为MySQL特定的项目工作。整个项目组在集群上工作,其中一个工作组负责可管理性,一个优化团队致力于数据库算法的优化,另一个团队解决复制(至关重要云、大数据等),整个团队使项目更具扩展性。
反方:放弃使用MySQL
1. MySQL不像其他关系数据库管理系统般成熟.
MySQL开始时并不是作为一个RDBMS,但后来改变了方向包括进了更多的功能。随着时间的发展,一些成熟的RDBMS被认为比MySQL具有更丰富的功能。如果你想要一个功能丰富的数据库,你可以试一下PostgreSQL或闭源的选项,如Oracle或微软的SQL Server。
PostgreSQL的贡献者Selena Deckelmann说Postgres的被视为Web开发者对关系数据库有需求的新项目的正确选择。“用JSON数据类型和PLV8,Postgres可能成为NoSQL的默认选择”,她说。
2. MySQL是开源的...但只是有些而已
传统来说,MySQL是一个开源数据库,但是在实践中已经不是那种感觉了。在Oracle的大伞下,MySQL现在有专有的、闭源模块。“MySQL看上去仍然很活跃,但是Oracle却陷入开发进程之中,拒绝发布bug的测试用例,MySQL的安全补丁在代码上严格控制,将大量的开源开发人员分配到新绿洲。”Paula Rooney在ZDNet里解释说:是Oracle把MySQL捐献给Apache的时候了吗?
除Mysql之外没有其他开源方案可选了吗,不是的。MariaDB是MySQL的一个分支,仍然是“真正的开源”。SkySQL和Monty Program Ab(MariaDB的合作公司)在今年年初合并了,声明如下:“MariaDB的所有代码都在GPL,LPGL或BSD协议下面发行,MariaDB没有如MySQL Enterprise Edition里的那些闭源模块。事实上,所有MySQL 5.5 Enterprise Edition里的闭源特性都可以在MariaDB开源版本里找到。”
3. MySQL性能方面的缩放性不如其竞争对手
MariaDB的官方博客的提供了MySQL、MariaDB最新版本的详细对比测试,虽然结果很接近,但MariaDB胜出。
PostgreSQL的贡献者Selena Deckelmann说:Heroku Postgres因为几个原因使它更具吸引力,其中包括缩放性。“可以说他们已经运维了最大的数据库托管环境,可以自动处理应用程序的缩放,支持节点冷添加可以非常方便容易的尝试新特性”,她这样说,另外,她补充道:“他们刚宣布支持PLV8,允许你在数据库中运行JavaScript而且能更好地利用在9.2及更高版本中可用的JSON数据类型。”
4. MySQL为Oracle拥有而不是社区
MySQL被甲骨文收购后没有显著的方面改变,但Oracle仍拥有它,这使得一些开发者很紧张。“也许,最糟糕的是,开发社区工作者和在Oracle的MySQL开发者一起工作是不可能的,”迈克尔“蒙蒂”纽斯,MySQL和MariaDB创始人这样说。
纽斯指出,Oracle不接受补丁或提供一个未来的路线图。“与MySQL开发者谈论如何实现或当前代码如何运行,这没门”,他说。如果一个开源社区开发的数据库对你很重要的话,纽斯推荐MariaDB(废话!)因为它是建立在MySQL之上的。而且它提供了更多的功能、速度和稳定性,安全问题更少。
5. 可选的方案越来越多
在2013年6月的波士顿峰会上,Red Hat宣布和MySQL分道扬镳,取而代之的是红帽企业版和MariaDB上了同一条船。Fedora已经宣布将在Fedora 19切换到MariaDB分支。Slackware Linux宣布在2013年3月将MySQL切换到MariaDB,而且OpenSUSE在2013年1月也作出了类似的声明。
不止在Linux阵营,2013年4月,Wikimedia基金会宣布全球第七大受欢迎网站Wikipedia正在切换至MariaDB。在声明中,Wikimedia基金会站点的架构师Asher Feldman解释称,MariaDB的优化及增强Percona的XtraDB功能设置是切换的原因。“同样重要的是,作为自由文化运动的支持者,维基基金会更倾向于自由软件项目,那些在免费及企业版间没有授权及分支代码的项目。”他又补充到,“我们欢迎并支持MariaDB 基金会作为一个非盈利组织,尤其是在自由、开放以及MySQL相关的社区方面。”科技记者Steven J. Vaughan-Nichols在2012年底提到,不管你对Oracle或开源与专有软件的比较持什么看法,不管你正在使用的是Linux、Apache、MySQL、PHP/Python/Perl(LAMP)的什么组合,MariaDB在世界最繁忙的Web站点中的优良表现会一步步吸引着你的注意力。
那么大数据呢,技术娴熟的公司知道,MySQL的忠实用户清楚么? MySQL是不再是数据库解决方案小池塘里唯一的大鱼了,相反,MySQL正面临着Oracle免费版的挑战,真正的开源后裔MariaDB、日益流行的PostgreSQL关系型数据库以及日益增长的NoSQL市场,如果你还没换掉MySQL,那现在有充足的理由重新考虑了。
--摘自互联网