MySQL分支现状和数据库存储引擎
2010-05-08 11:00:33 阿炯

MySQL争夺战已经结束,甲骨文高管正在对开源人士展开示爱攻势,但曾经的MySQL精英们也已经重整旗鼓,通过MySQL数据库分支的方式来赢得了数据库管理员和开发者的芳心。

在MySQL经历了2008年Sun的收购和2009年Oracle收购Sun的过程中,基本处于停滞发展的情况,在可以预见的未来,MySQL是肯定会被Oracle搁置并且逐步雪藏消灭掉的。MySQL随着相应的各主创和内部开发人员的离去,缔造了各个不同的引擎和分支,让MySQL有希望继续发扬光大起来。

在举行的MySQL大会上,MySQL之父迈克尔·韦德纽斯(Michael Widenius)和大名鼎鼎的MySQL架构师布莱恩·阿克尔(Brian Aker)分别发表演讲,全力推广他们各自的MySQL分支数据库,他们坚信任何一家公司都不可能成为MySQL开发或支持服务的唯一提供商。他们明确的表达了支持MySQL的开发商和公司应该多元化的观点,另外他们认为,MySQL分支数据库的所有者是那些对代码感兴趣的开发者,而不是某一家利益驱动的企业。

可笑的是MySQL现在已经归数据库巨头甲骨文所有,在本次MySQL大会上该数据库巨头被列为创始赞助商。几天前甲骨文首席软件架构师爱德华·斯凯文(Edward Screven)试图取得MySQL用户的信任,声称他们的数据库非常安全,因为甲骨文向用户提供一套完整的支持组合服务。

斯凯文承诺,未来计划将MySQL嵌入到甲骨文的软件架构和管理产品中去,然而这可能有悖于开源人士所渴望的独立性和开放性原则。很明显,甲骨文每年一度的OpenWorld大会未能打动数据库管理员和开发者的芳心,斯凯文的演讲结束后,只得到了MySQL社区关系经理科林·查理斯(Colin Charles)礼貌性的鼓掌。

24小时后,MySQL之父和MySQL顶级架构师抛出了与斯凯文相反的观点:甲骨文推动社区发展是一件好事,但单一架构和单一供应商不利于创新。独立性是他们远离甲骨文的原因,也是他们吸引用户和潜在代码贡献者的制胜法宝。

这些MySQL名人的做法对甲骨文来说是一种考验,将验证甲骨文与MySQL社区配合和容忍不同意见的程度,甲骨文投入时间和金钱召开的MySQL大会,是否允许批评家和分支MySQL领导者自由发表自己的观点。

斯凯文曾含蓄的表示,甲骨文可以为客户提供全面解决方案,并引用《钢铁侠2》作为其广告宣传。据甲骨文的《钢铁侠2》网站显示,人与机器的无缝结合造就了战无不胜的英雄钢铁侠,而甲骨文业界领先的软件和硬件的无缝整合,也将带来任何竞争对手所不具备的完整IT架构。甲骨文软件和 Sun的 Solaris系统、服务器和存储产品的融合,可以实现业界最佳和领先优势。

MySQL分支状况
阿克尔郑重承诺,他不会围绕自己的MySQL分支数据库成立Drizzle公司。甲骨文收购Sun公司后,阿克尔选择了离开,他表示自己不希望创建一个公司来妨碍创新。他表示,有人会提供Drizzle相关服务,但不会有一个核心地位公司。作为一个企业实体,MySQL已经丧失了对创新的关注,在甲骨文收购Sun 之前这个问题已经存在。当时MySQL 5.0的一些功能更多着眼于OEM厂商,而非Facebook和谷歌等关注大规模、多核心、64位计算体验的用户。

阿克尔鼓励人们对MySQL进行更多分支,他认为这将带来新一轮机遇和创新。他表示,我们有一个开放代码库,并允许人们对其进行分支,我们鼓励人们围绕它创建产品。阿克尔承诺,在今年夏天的O'Reilly开源大会上,他将宣布两家对Drizzle提供支持的公司。

2009年甲骨文交易发生之前,韦德纽斯离开Sun创建了自己的公司Monty Program AB,并创建MySQL数据库分支MariaDB。他在MySQL大会上发表了题为MySQL是一个生态系统而并非仅仅是一家公司的演讲,韦德纽斯是MySQL Ab的联合创始人兼首席技术官,他在2008年把MySQL卖给Sun,但却坚决反对甲骨文获得MySQL所有权,从他演讲的题目我们不难看出他的观点。

韦德纽斯在演讲中指出,围绕MySQL创建的所有一切都是开源的,所有分支数据库可一起运行,技术支持来自多家服务公司,而非某个单一企业实体。去年他的公司与MySQL服务支持公司Percona联手建立了开源数据库联盟,以统一所有MySQL相关的开发和服务。他表示,在MySQL公司,我们一直与合作伙伴斗争,因为我们希望做所有事情。我们永远不会把领导权交给合作伙伴,因为销售人员说我们自己可以做该项工作。

韦德纽斯表示,他也一直在回避MariaDB代码所有权的公司模式。他将Monty Program AB的运营模式称为黑客模式(the hacking business model),员工拥有公司,利润全部用于维护代码。韦德纽斯表示,他创建MariaDB的目的不是为自己赚钱。

韦德纽斯宣布了一个来自Monty Program AB的全套MariaDB支持模式:用户交纳36000美元,即可获得MySQL 3.3以上版本的无限制、公司范围支持服务。

两人认为他们的MySQL分支要比MySQL数据库更强大,而且其开发模式也要优于甲骨文所提供的模式。他表示,MySQL客户可以在数秒时间内完成 MySQL到MariaDB的移植,而且能够获得更多功能、更强大的稳定性和更快的速度。他还表示,计划对目前MariaDB 5.1版本进行改进,它宣称该数据库版本可以实现MySQL 5.4的性能,不过此后甲骨文在MySQL大会上宣称MySQL 5.5的运行速度将比5.4版快很多。韦德纽斯还表示,众多MySQL 6.0中的功能将出现在MariaDB 5.3中:未来数月将以beta版发布增强版优化器。他补充说,MariaDB计划每9个月发布一个新版,对已嫁入甲骨文这样豪门的MySQL来说,如此升级速度又将是一个挑战。他表示,我发现很多已经存在的补丁却未被包含在MySQL中。

MariaDB的下一版本是5.2,据韦德纽斯称该版本将增加另外的事务存储引擎Spider和 Spinx,以及分组提交(group commit)和虚拟列(virtual columns)功能。同时,阿克尔表示,Drizzle的理念是带领MySQL走向未来。Drizzle的构想是充分发挥64位系统和固态硬盘的优势,使用了一个防止厂商锁定的架构,使用C++语言创建。另外,MySQL分支数据库将是编程工作更流畅,它们将只有一个Blob类型,这将消除关于使用哪一个Blob类型的无休止争论。

Drizzle剥离了那些非必需的功能,然后将它们以插件形式提供,这使得其代码体积大大减少,阿克尔表示其核心代码从原来的209000行锐减至 10900行。

为什么要进行分支?
为什么需要对 MySQL 进行分支?这是一个非常合理的问题。成千上万的网站依赖于 MySQL,并且对许多人来说,它似乎是一个很好的解决方案。但是,通常就是这样,适合许多人并不一定适合所有 人。这促使一些开发人员想要根据自己的需要开发出更好的解决方案。还有什么能比将良好的解决方案转换为完美的解决方案更好的呢?。

下面我们将介绍这些分支寻求改变的更多细节。一些分支认为 MySQL 变得太臃肿 了,提供了许多用户永远不会感兴趣的功能,牺牲了性能的简单性。如果人们对更精简的 MySQL 4 特别满意,那么为什么还要在 MySQL 5 中添加额外的复杂性呢?对于此分支来说,更好的 MySQL 分支应该更简单、更快捷,因此提供的功能也较少,但这样会使这些功能极其迅速地发挥作用,并且牢记目标受众,在本例中,目标受众是高可用性网站。

对于其他分支来说,MySQL 并没有提供足够多的 新功能,或者是添加新功能的速度太慢了。他们可能认为 MySQL 没有跟上高可用性网站的目标市场的发展形势,这些网站运行于具有大量内存的多核处理器之上。正如熟悉 MySQL 的人所知道的那样,MySQL 提供了两种存储引擎:MyISAM 和 InnoDB。这一分支认为这两种存储引擎都没有提供他们所需的内容,因此他们创建了一种非常适合其目标的新存储引擎。

此外,一些分支的最高目标是成为 MySQL 的替代产品,在这些产品中,您可以轻松地访问它们的分支,无需更改任何代码。该分支使用与 MySQL 相同的代码和界面,因此使过渡变得非常容易。但是,另一个分支声称它与 MySQL 不兼容,需要更改代码。每个分支的成熟度各不相同,一些分支声称已经准备就绪可以投入生产,而另外一些则声称目前自己还远达不到这一最高目标。

最后,关于 MySQL 在 Oracle 下将如何发展仍不太确定。Oracle 收购了 Sun,也收购了 MySQL,现在 Oracle 控制 MySQL 产品本身,并领导开发社区开发新的成品。由于 Oracle 已经有了一个商业数据库,因此人们担心他们可能没有足够的资源来使 MySQL 保持其领先地位。因此,许多分支也是这些潜在担心所产生的结果,他们担心 MySQL 作为领先的免费开源数据库提供的功能可能太少、发布周期太慢并且支持费用更昂贵。

MySQL分支成熟尚需时间
那么Drizzle现状如何?它还远称不上一个成熟的产品,对现有MySQL用户来说,迁移是一个令人头痛的问题。尽管它通过了事务型测试,但是用户还必须重新加载数据,目前复制功能正在测试和改进中。阿克尔表示,Drizzle的更行频率约在3到4个月,因此代码贡献者无需等待太长时间,就可以看到自己的作品被加入到数据库中,用户可以迅速的获得这些最新的功能。

他表示,数年前李纳斯·托沃兹对Linux内核采用了相同的方式,软件完整版本发布模式已经过时,当我与创新型公司交流时发现,他们只关心现在能使用什么功能,而不需要听到2-3年后的开发路线图,那不是互联网时代的做法。

究竟会有多少用户转向MariaDB或Drizzle,还需拭目以待,但有一件事情可以确定,甲骨文势必对今年MySQL大会的效果感到不满,或许会重新考虑对明年该技术盛会的资金赞助力度。

下面我们就大致讲解一下MySQL目前除了主要的 MyISAM、InnoDB、Heap(Memory)、NDB 等引擎之外的其他引擎的发展和现状,以及MySQL主干以外的分支的状况,为了我们未来更好的使用MySQL或者其他分支建立一个了解基础。

【MySQL存储引擎介绍】

[ Falcon存储引擎 ]
Falcon存储引擎是MySQL当时寄以厚望的存储引擎,主要是为了面对当时Oracle收购了InnoBase公司的情况,用来取代InnoDB的一个存储引擎。Falcon引擎的主导人员是大师Jim Starkey,从2006年开始开发,到2008年发布Beta版本,至今为止也没有走入主流。2008年中旬,Falcon的主架构师Jim Starkey宣布从MySQL公司辞职,加入了一家创业公司NimbusDB担任CEO,去设计和开发运行在云计算上面的关系/语义数据库,按照 2010年目前NoSQL市场的发展来看,他的选择是正确的,但是带来的结果是Falcon陷入一个没有主导人员的地步,导致了至今都属于性能糟糕,半死不活的状态。

Falcon引擎是MySQL AB公司基于Netfrastrucure公司的产品开发的(Netfrastrucure公司被MySQL AB收购),Falcon 当初的目标是嵌入到MySQL 6.0中用来取代InnoDB引擎,基本很多功能设计都是按照InnoDB的目标去设计的。

Falcon是面向多CPU、拥有大量内存的当代硬件环境和典型Web应用的数据库操作特点而开发的,主要功能包括多版本并发控制、完善的ACID支持、支持前缀压缩的B+树索引、数据页压缩(在磁盘上以压缩形式存储,在内存中以非压缩形式存储)、成组提交等。从功能方面来说没有什么新鲜事,大体也就实现了一个事务型存储引擎必须要有的功能(很多高级的功能如多表空间、分区等都还没有),但其架构上却有很多独特之处。

通过网上的一些测试结果Falcon的性能还是很糟糕的,写入速度是 MyISAM 的 1/10 ~ 1/20,Select 的优化也有问题,添加了索引感觉还会进行全表扫描。

Falcon特性:http://dev.mysql.com/doc/falcon/en/se-falcon-features.html
Falcon测试:http://blog.gslin.org/archives/2008/02/12/1425/
Falcon手册:http://dev.mysql.com/doc/falcon/en/

[ SolidDB存储引擎]
solidDB存储引擎是由Solid Information Technology(http://www.soliddb.com) 开发的,这是一款利用MVCC来实现的事务型存储引擎。它既同时支持悲观和乐观并发控制,这一点其他的存储引擎目前都不支持。solibDB的MySQL 版本包括对外键的完全支持,它在许多方面与InnoDB很相似,比如它使用了簇索引,solidDB还包括一个没有额外开销的在线备份功能。

solidDB公司已经由2008年被IBM收购,主要是用于整合为IBM数据库整合方案的一部分,目前是作为一个前端数据缓存的这么一个角色存在。IBM收购solidDB公司,主要是因为甲骨文在2005年6月收购了Solid Information Technology主要竞争对手TimesTen,为了在内存数据库这块市场上有所依托,所以收购了 solidDB公司。

solidDB产品是一个完整的打包程序,包括solidDB存储引擎、MyISAM存储引擎以及MySQL服务器。solidDB与MySQL之间的结合出现于2006年的晚些时候。但是底层的技术以及代码却是经过了该公司15年的完善。Solid公司保证和支持了整个产品,它是基于GPL协议的,并且提供了一个类似于MySQL服务器形式的商业版本。

性能上来说,SolidDB for MySQL开源数据库再次被证明能够完全满足高吞吐量、关键任务级应用对系统性能和可扩展性的要求。

但是就 solidDB被IBM收购,MySQL对Oracle收购的情况来看,基本上 solidDB for MySQL 是一个没法继续被MySQL使用的引擎,所以也是一个半死不活的MySQL引擎。

官方网站:http://www.ibm.com/software/data/soliddb/

[ XtraDB存储引擎 ]
XtraDB存储引擎是percona公司对于innodb存储引擎进行改进加强后的产品,第一个版本发布于2008年底。XtraDB兼容innodb的所有特性,并且在IO性能、锁性能、内存管理等多个方面进行了增强。

Percona是一个MySQL技术咨询公司,他们有一个在MySQL领域很有名的技术博客叫做 Mysql Performance Blog,同时他们编写了一本很有名的MySQL书叫做《High Performance MySQL》,目前也出版了中文版,他们还有一个很有名的MySQL备份工具叫做 XtraBackup。

XtraDB的设计目标也是取代InnoDB作为目标,它是基于InnoDB来做的开发,XtraDB 100%的兼容 InnoDB,通常可以认为 XtraDB 是 InnoDB的升级或者替代版本。在性能上来说,目前 XtraDB 是非常高的,在大部分情况下也是比较稳定的,值得你尝试使用。同样XtraDB也是未来感觉很有前途的一个存储引擎,值得我们期待。

性能测试:http://www.mysqlperformanceblog.com/2009/07/14/performance-improvements-in-percona-5-0-83-and-xtradb/
使用情况:http://www.ningoo.net/html/2009/xtradb_storage_engine.html
引擎介绍:http://www.percona.com/docs/wiki/percona-xtradb:start
引擎下载:http://www.percona.com/percona-builds/Percona-XtraDB/
公司官网:http://www.percona.com
性能博客:http://www.mysqlperformanceblog.com

[ Maria存储引擎 ]
Maria由MySQL的创始人,MyISAM的作者Monty (Michael Widenius) 开发,命名为Maria是因为他的第三个小孩就叫Maria。Maria是Monty在MySQL公司的时候就开始开发的一个MySQL的分支引 擎,Sun收购MySQL后,因为与Sun针对MySQL团队的一些问题不和,然后在2009年初离开了Sun,成立了 Monty Program Ab 公司,专门用于针对 Maria 引擎的开发,同时开发了一个MySQL的分支,叫做 MariaDB。

Maria是一个MySQL的存储引擎,利用它来扩展MyISAM使之在异常退出时文件不至于损坏。Maria的主要目的是作为更好的MyISAM,提供崩溃后的故障恢复功能。更长远的目标是成为一个全功能的事务型存储引擎,支持ACID、回滚、多版本并发控制、行级锁、成组提交,同时也可以选择不支持事务,最终代替MyISAM成为MySQL的默认存储引擎。

目前Maria引擎有针对MySQL 5.1 的版本,基本上就是一个增加了崩溃恢复功能的MyISAM,使用表级锁,但可以做到读写不冲突,即在进行任何类型的更新操作的同时都可以进行读操作,但多个写操作不能并发。

Maria的特点:
1. 多版本并发控制,ACID支持
2. 通过拷贝日志就能进行增强备份
3. 高效的磁盘存储

Maria 引擎开发之初就是用来取代MyISAM的存储引擎,并且目前按照我了解有些在使用公司的情况,运行情况挺不错,大家也可以尝试一下。Maria 在目前有MySQL创始人带领的情况下,也是一个非常有前途的的存储引擎,值得期待。

Maria下载:http://askmonty.org/wiki/MariaDB:Download
Maria手册:http://askmonty.org/wiki/Maria

[PrimeBase XT (PBXT) 存储引擎 ]
PBXT 是 PrimeBase 公司推出的MySQL插件引擎,其功能和 InnoDB 类似,它是一款事务型存储引擎,并且它的设计是很独特的。它的一个很与众不同的特征就是如何来使用事务日志和数据文件来防止“write-ahead”日志,这可以极大的减少事务提交的开销。这个架构给了PBXT很大的提高写并发的空间,并且测试也表明它在某些特定的操作下比InnoDB要快。PBXT也使用了MVCC并且支持外键约束,但是它不使用簇索引。

主要特性如下:
MVCC的 :多版本并发控制,使读操作没有锁定
事务性 :支持启动开始,COMMIT和ROLLBACK和恢复上
ACID标准 :原子性,一致性,隔离,持久(一次提交的更改不能丢失)
行级锁定 :更新使用行级锁的并发允许最大并发量
死锁检测 :立即通知如果客户端进程已陷入死锁
参照完整性 :外键的支持
写一次 :PBXT避免的架构双写入使用日志
BLOB的流 :在结合的 BLOB Streaming engine. (http://www.blobstreaming.org/)

按照他人的测试结果来看,PBXT存储引擎版本的TPS随着线程数的增长,表现比较稳定,性能上与innodb差不多,长期来看,它的目标也是作为一个能够取代InnoDB的存储引擎。而且目前 MariaDB 这个分支已经把 PBXT 作为内置的存储引擎,所以也是可以尝试使用的一个引擎。

性能测试:http://imysql.cn/2008_07_25_innodb_vs_pbxt
引擎下载:http://www.primebase.org/download/index.php
官方网站:http://www.primebase.org/

【MySQL分支介绍】

[XtraDB]
XtraDB 是一款独立的产品,但它仍被认为是 MySQL 的一个分支。XtraDB 实际上是基于 MySQL 的数据库的一个存储引擎。XtraDB 被认为是已成为 MySQL 一部分的标准 MyISAM 和 InnoDB 的一个额外存储引擎。MySQL 4 和 5 使用默认的 MyISAM 存储引擎安装每个表。InnoDB 也是一个相对较新的存储引擎选择,在建立数据库时,数据库管理员和开发人员可以基于每个表选择存储引擎类型。两个存储引擎的主要区别是:MyISAM 没有提供事务支持,而 InnoDB 提供了事务支持。其他差别是许多细微的性能差别,与 MyISAM 相比,InnoDB 提供了许多细微的性能改进,并且在处理潜在的数据丢失时提供了更高的可靠性和安全性。似乎 InnoDB 是用于未来改进的更适合的存储引擎,因此从版本 5.5 开始,MySQL 已将默认存储引擎从 MyISAM 更改为 InnoDB。

基于这些优势,InnoDB 存储引擎本身拆分出了一个分支,一个名为 XtraDB 的更新的存储引擎。这个存储引擎有多新呢?它 3 年前由 Percona 首次发布,因此它相对较新。它是专门针对在现代服务器上运行的现代高可用性网站设计的。它被设计为在具有十几个或更多核心和大内存(32 GB及更多)的服务器上运行。任何公司都可以从服务器管理公司购买这些类型的服务器,因此应将数据库设计为能够充分利用这些服务器。

XtraDB 分支有另一个目标,即成为 InnoDB 存储引擎的简单替代,这样用户就可以轻松地切换其存储引擎,无需 更改任何现有的应用程序代码。XtraDB 必须能够向后兼容 InnoDB,以提供它们想要添加的所有新功能和改进。它们实现了此目标。

XtraDB 的速度有多快?我找到的一个性能测试表明:与内置的 MySQL 5.1 InnoDB 引擎相比,它每分钟可处理 2.7 倍的事务。。速度显然是一个不可以忽略的因素,在考虑替代产品时更是如此。

[Percona]
与内置的 MySQL 存储引擎相比,XtraDB 提供了一些极大的改进,但它不是一款独立产品,也无法轻松放入现有 MySQL 安装。因此,如果您想使用这款新引擎,则必须使用提供它的产品。

Percona Server 就是这样一款产品,由领先的 MySQL 咨询公司 Percona 发布。Percona Server 是一款独立的数据库产品,为用户提供了换出其 MySQL 安装并换入 Percona Server 产品的能力。通过这样做,就可以利用 XtraDB 存储引擎。Percona Server 声称可以完全与 MySQL 兼容,因此从理论上讲,您无需更改软件中的任何代码。这确实是一个很大的优势,适合在您寻找快速性能改进时控制质量。因此,采用 Percona Server 的一个很好的理由是,利用 XtraDB 引擎来尽可能地减少代码更改。

此外,他们是 XtraDB 存储引擎的原作者。Percona 将此代码用作开源代码,因此您可以在其他产品中找到它,但引擎的最初创建者与编写此产品的是同一个人,所以您可以随心所欲地使用此信息。

下面是 Percona Server 的声明,该声明来自它们自己的网站:
可扩展性:处理更多事务;在强大的服务器上进行扩展
性能:使用了 XtraDB 的 Percona Server 速度非常快
可靠性:避免损坏,提供崩溃安全 (crash-safe) 复制
管理:在线备份,在线表格导入/导出
诊断:高级分析和检测
灵活性:可变的页面大小,改进的缓冲池管理

Percona 团队的最终声明是 “Percona Server 是由 Oracle 发布的最接近官方 MySQL Enterprise 发行版的版本”,因此与其他更改了大量基本核心 MySQL 代码的分支有所区别。Percona Server 的一个缺点是他们自己管理代码,不接受外部开发人员的贡献,以这种方式确保他们对产品中所包含功能的控制。

[MariaDB]
MariaDB 是一个采用 Maria 存储引擎的 MySQL 分支版本,是由原来 MySQL 的作者 Michael Widenius (Monty) 创办的Monty Program Ab公司所开发的免费开源的数据库服务器。基本上 MariaDB 的历史跟我上面讲的 Maria 存储引擎历史一样。MariaDB的设计目标就是用来取代 MySQL Server,Monty是开源数据库联盟(Open Database Alliance)的发起者,所以 MariaDB 也是开源数据库联盟的成员。

MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了 Percona的 XtraDB引擎来替换InnoDB,MariaDB的存储引擎还包括了PrimeBase XT (PBXT) 和 FederatedX 存储引擎,MariaDB基于GPL 2.0发布。

Monty Widenius提供了MySQL的分支MariaDB候选版本。MariaDB 5.1完全兼容MySQL 5.1,这个版本早在2008年11月就发布了,增加了很多新的功能和若干个新的补丁程序。开发者称这个候选版本非常稳定。基本上 MySQL,MariaDB 解决了很多问题,例如“pool of threads”功能提供解决多数据连接问题。目前 MariaDB 发布的Release版本是 5.1.44,基本上应该是跟 MySQL 5.1 的版本兼容的。

MariaDB 基本上名门之后,加上MySQL创始人Monty的实力和号召力,是作为MySQL一个非常好的替代品,前途发展无限,值得我们尝试使用。

MariaDB中存储引擎介绍:
Maria: http://askmonty.org/wiki/Maria
XtraDB:http://www.percona.com/docs/wiki/percona-xtradb:start
PBXT:  http://www.primebase.org/
FederatedX:https://launchpad.net/federatedx

MariaDB下载:http://askmonty.org/wiki/MariaDB:Download
MariaDB网站:http://askmonty.org

[Drizzle]
Drizzle,是从MySQL衍生出来的一个数据库服务器,一个精简版的MySQL分支,Drizzle项目的宗旨是构建一个“更精练、更轻量、更快速”的MySQL版本,它的扩展性和易用性与MySQL相当,但为了提高性能和扩展性,它从原来的核心系统里移除了部分功能。Drizzle 也是开源数据库联盟(Open Database Alliance)成员。

MySql的架构设计总监Brian Aker在O'Reilly开放源码大会(OSCON)上对Drizzle做了介绍。Drizzle是一个能为某些特定类别的应用提供支持的数据库项目("what if" project)。Drizzle的设计目标:
1. Web应用。
2. 云计算组件。
3. 没有业务逻辑的数据库(又名存储过程)。
4. 多核架构。

Drizzle,一个精简版的MySQL分支,在目前的MySQL代码基本之上,将存储过程、视图、触发器、查询缓存、PREPARE语句等等没什么必要的功能从代码中删掉,简化对数据类型和存储引擎的支持,并且进行大胆的重构。最终要实现的目的是将MySQL的代码大大简化,理顺MySQL的架构,改善 MySQL的代码质量,提高系统的稳定性和性能。将更适合 Web应用、云计算组件、没有业务逻辑的数据库(又名存储过程)、多核架构等业务

Drizzle的特征有:
* 基于MySQL 6.0的源码树
* 无附加库
* 遵守POSIX
* 微内核设计
* 可插拔架构,适用于视图、存储过程、UDF、存储引擎等
* 跨多个节点的Sharding技术
* 智能代理
* 多CPU/多核CPU
* 优化的字段类型
* 高效的内存使用
* 没有内部ACL,使用LDAP/PAM
* 没有数据库数据格式化
* 整理有序的Make系统
* 缺省存储引擎为InnoDB
* 移除Windows兼容性

Drizzle 缺省的存储引擎是InnoDB,支持的数据类型更少,基本上设计目标跟MariaDB 完全不同。MariaDB的设计目标是一个取代MySQL的数据库,而Drizzle 基本上是一个除了MySQL之外你可以选择的产品,并且基本上设计目标是针对未来的云计算和分布式Web存储的方向去的,目前可能不是太稳定,不适合在运营环境使用,但是相当的值得期待。Drizzle 是完全开源的产品,公开接受开发人员的贡献。它不像 MariaDB 那样有支持其开发的公司,也不像 Percona 那样有大量外部开发人员为其提供贡献。Drizzle 有很好的成长空间并会提供一些新功能,但可能需要重写大部分 MySQL 代码。

Drizzle使用:http://database.51cto.com/art/200907/137239.htm
Drizzle下载:https://launchpad.net/drizzle
Drizzle 网站:http://drizzle.org/

[总结语]
基本上来说,目前MySQL还是主流(MyISAM/InnoDB),但是未来发展不可预测,并且有这些除了MySQL之外的选择,也许有一天Oracle把MySQL彻底消灭掉了,但是我们同样还有 MariaDB、Drizzle可以选择,这就是开源的力量。

对比几个MySQL的存储引擎,Maria 和 XtraDB 是值得大家目前投入逐步使用的行列的,多做一些测试,灰度放亮,获得一个合理结果然后再使用是比较合适的。MySQL的数据库分支来说,MariaDB 也是比较值得尝试使用的,毕竟目前 Drizzle 还不是太成熟稳定,并且不一定适合你所做的业务。我所了解国内部分互联网公司也有在使用 MariaDB 的,并且效果不错,大家也都可以按照自己的情况来使用。

目前NoSQL运动如火如荼,有些业务更适合采用Key=& gt;Value或这是BigTable类型的数据存储方式,也许MySQL不是最好的,当然选择最合适存储,也许未来大部分数据库市场会被NoSQL所占领,但是我觉得关系型数据库还是未来几年很重要的存储方式。

本文旨在解决它们使用 MySQL 时遇到的一些问题。这些分支都是免费的开源产品。在使用时,您需要根据 MySQL 已提供的功能来权衡它们的优缺点。我相信,对于阅读本文的大多数人来说,MySQL 将仍然 是满足数据库需求的首选。我很怀疑阅读本文的大多数读者都是每小时拥有 1,000,000 点击率的网站的所有者。我想再次强调的是,MySQL 仍然是一款非常出色的产品,是一个非常适合大多数使用情况的数据库。

但是,对于那些认为自己的网站需要比目前 MySQL 所能提供的更高的可用性、可扩展性和性能的人来说,这 3 款产品中的任意一款产品都可能为您提供所需的解决方案。更进一步地说,如果您认为您的网站将成为 能获得很多利润的网站,那么可以考虑使用三款产品中的一款产品,在问题出现之前解决它们。

在MySQL被Sun收购,已经Sun被Oracle收购的过程中,整个开源世界都是在翻天覆地的变化,特别是MySQL的命运一直都是所有使用和热爱开源数据库的人们所关注的,在这些商业竞争中,那些开源斗士(比如 Monty),都通过别的方式,继续发扬了MySQL这种开源数据库。我们长期来看,总会有一些东西会消失,比如 Falcon存储引擎,有些东西会继续发展,比如 MariaDB或Drizzle,但是这些都为开源技术做出了贡献,也为数据库领域增添了色彩。

该文章最后由 阿炯 于 2012-05-08 15:08:43 更新,目前是第 2 版。