数据库技术   

MariaDB 10.0 和 MySQL 5.6 有何不同

时间:2013-01-21 10:08:00

去年的5月,我第一次在博客上介绍了关于MariaDB 10.0。 我们当时收到很多的反馈,在进行众人意见总结后,我们再次的更加深入的解释过MariaDB 10.0. 在新的一年的伊始,随着MariaDB 10.0 的 Alpha版本的推出,现在应该是时候再多说一点关于MariaDB 10.0, 特别是它和MySQL 5.6的一些区别,而这个问题也是我和很多身在MariaDB项目里的人都常常被问及的问题。

首先, 我要着重详述下为什么我们没有把MySQL 5.6 直接拿过来作为二次开发的基础,去做一个产品,可以呗称为 MariaDB 5.6. 这个原因的细节我们直接都没有和众人分享。

1. MySQL5.6 的代码库的文件结构已经被改动了。比如单个代码文件已经被分成多个,又或者是某些代码已经被重新归类到了不同的文件内。所以要把MariaDB 去配合现在这个文件结构一定是一个非常消耗时间的过程。而其实我确实不是很明白MySQL为什么要改动现有的文件结构。

2. MairaDB 5.5 已经有大量的代码不同于MySQL 5.5 的版本,而且也有很多的新的特征被整合到MariaDB 5.5 中,而这些特征知道 5.6 版本 才出现在MySQL中。所以我们在比较同样功能的MySQL 和MariaDB的版本,同时在完成设计和QA方面的审核后,一个很明显的结论是MariaDB会是一个更好的产品。在大多数情况下,在选择MariaDB的时候,人们会更多的考虑到功能方面的偏好。

3. 所以MySQL的新代码,至少是修改bug的代码以后都没有必要进行相应的测试了。我们试想一下,当有这样一个功能要加入到一段代码中,而这个功能原本就是来源于这段代码的情况下,测试将是一个异常重要的过程来保证这个功能的正常运行。

和上文中提到的第二点和第三点一样,Stewart Smith在Percona写到关于Mysql最后安全补丁的回归测试和QA如何测试使用MariaDB工程,以及保存在Percona服务器用作回归测试的测试用例的重要性。参考:wrote yesterday about the latest security fix in MySQL introducing a regression

MariaDB不仅仅是Mysql的一个替代品。它的主要目的是创新和提高Mysql的技术,Mysql5.6不是一个合适的创新基础平台,所以我们就做了下面的事情:

1.由于我们引入了一些新功能(像 multi-source replication多源复制, Cassandra integration, engine independent statistics独立统计系统等),所以我们需要搞个新版本。通常当你引入新功能时,你需要新建个版本。

2.下个版本称作“MariaDB5.6”是不准确的,因为他不是基于Mysql5.6,取而代之,我们决定版本号调为10.0

3.MariaDB引入Mysql5.6作为一种替代方案的话,需要提升很多功能,我们已经迈出了第一步,正朝着合并或者重建Mysql5.6的功能方向发展。

首先,mariadb 10.0是一个主要数据库版本,比如组合后的innodb与组合后性能架构,和一个新的全局执行事务id。夏日里,mariadb 10,有可能被当做GA开放式数据库。(注释)

通过阶梯式的方法,我们的最终目的是聚合或者重新实现mysql5.6的所有功能特色。重新实现的所有功能特色都将同它们的mysql版本兼容。到此为止,maria 10将全面兼容mysql5.6版本。除了顶部框架之外,其中含有众多附加的mariadb数据库的唯一的功能。

重新实现功能的决定很简单。如果从我们或者用户的角度来看,MySQL 5.6缺乏该功能,那么我们就重新实现它。重新实现的决定并不是因为“我想这样做”,或者受“非自主发明综合征”的影响。每个问题都是经过认真而广泛的讨论的。你可以加入邮件列表来参与这些讨论,并且让我们听到你的声音,邮件列表是  https://launchpad.net/~maria-developers网站上的  maria-developers@lists.launchpad.net 。

我们是不是有其他的选择。答案是 Yes。我们本可以把最新版本的MySQL 5.6 拿过来作为MariaDB 5.6 的基础,然后在其之上进行修修补补。但是,我们需要意识到的是:MariaDB 不是一个附加的补丁程序。虽然MairaDB 实在MySQL的基础上建立起来的,但是我们有很多的工程师正在努力工作,他们的功劳是不可低估的。不得不提的是,我们全职的MariaDB 的工程师和QA人员一直在努力MySQL 技术可以更好地为MairaDB服务。

当然,还有另外一条路可以走,就是不再依赖于MySQL,并且不再兼容MySQL,如此,我们将称为一个独立的个体。但是我们不太采取这样的方案。因为我们和众多的MariaDB的用户都收益于MySQL的功能,也很想MariaDB也同样可以有这些特征。

MariaDB 5.5 已经为MairaDB打下一片天地,而且我们自然也会乘机而上。现在,每周都会有更多的下载量,更多的分支是基于MariaDB的,而且更为重要的是已经很越来越多的大型运用案例是在采用MariaDB。

我们在进行MariaDB项目的过程中,一直都努力让MariaDB成为MySQL的一个替代品,而且同时也会有更多的可实现的创新,而这两点,我们一直都很小心地把握一个平衡来分配我们的投入。当然,没有传新,MariaDB永远都不会是一个真正的产品。

加入MariaDB和SkySQL的联合路演,您可以获得更多更新的关于MariaDB的消息。我们也很期待听到你们的建议和意见。路由的时间表和预订信息见here.



英文原文:MariaDB 10.0 and MySQL 5.6

参与翻译者sjZ52何传友寒星斜坠缪斯的情人









 

来源:PHPchina

上一篇:HTML5移动页面框架 2013-01-21

下一篇:马云:喜欢太极拳不喜欢太集权 2013-01-21

Notice: Constant RUNTIME already defined in /srv/html/srccn/news/config.php on line 15 Notice: Constant ROOTDIR already defined in /srv/html/srccn/news/config.php on line 16 Notice: Constant SITEDIR already defined in /srv/html/srccn/news/config.php on line 17 Notice: Constant DATAURL already defined in /srv/html/srccn/news/config.php on line 20 Notice: Constant VERSION already defined in /srv/html/srccn/news/system/kernel.php on line 17 Notice: Constant COREDIR already defined in /srv/html/srccn/news/system/kernel.php on line 18 Fatal error: require(): Cannot redeclare class mysql in /srv/html/srccn/news/system/kernel.php on line 22