当前位置:Linux教程 - Linux业界 - MySQL不再支持Berkeley DB 转而添加插件

MySQL不再支持Berkeley DB 转而添加插件

来自:IT168

在最新的5.1.12版中,MySQL将把Berkeley DB(BDB)存储引擎移出所支持的数据库引擎列表。有些观察人士认为,这一行动与Oracle收购Sleepycat有关,而下一个可能被移出的可能是 InnoDB。然而MySQL架构主管布莱恩•阿克尔(Brian Aker)表示,他们不会放弃InnoDB,此次放弃Berkeley引擎是出于技术原因。布莱恩•阿克尔同时宣布MySQL公司将发布新一款的用于 MySQL的memcache存储引擎插件。

  此事与Oracle收购Sleepycat与Innobase的消息之间的关系是显而易见的。有人认为Oracle是为了破坏MySQL的业务,以及放弃支持BDB引擎的决定。但阿克尔表示事情不是这样。

  MySQL、Oracle各执一词

  如果不是针对Oracle,为什么要放弃BDB呢?一种可能是,BDB引擎应用不够广泛。阿克尔称,Debian应该是唯一一个带有BDB支持的 MySQL合作商,而“MySQL的主程序启用它的方式也很奇怪”。“我相信实际的安装数量屈指可数。并不是说BDB引擎本身不好,更主要的原因是 InnoDB有一个更活跃的开发团队在支持。在开源世界中,活跃的代码是使用广泛的主要原因。”

  Oracle嵌入式系统营销副总裁雷克•王(Rex Wang)表示,实际上是Berkeley DB开发团队要求取消支持的。“据我们所知,现在的MySQL已经几乎不再使用Berkeley DB,所以我们(Oracle)的用户群并没有产生冲突。”

  虽然BDB使用不算广泛,但是,阿克尔表示BDB不会从MySQL 5.0及以前的版本中消失。所以安装了MySQL 4.x或MySQL 5.0.x,并使用BDB的用户无需为此担心。阿克尔还强调,“MySQL从来没有为BDB提供商业支持,所以无需任何更改。”

  MySQL在放弃BDB的事情上没有太过声张,但却写入了5.1.12版本的MySQL更新说明中。5.1版一直被视为测试版,5.1.12也还没有发布,因此MySQL没有就此事发布正式声明也不足为奇。

  有一些特别的分析人士抱怨说,这是MySQL缺乏与用户沟通的表现之一,并认为接下来遭此“横祸”的大概会是InnoDB。

  阿克尔称,放弃BDB并不意味着接下来将要针对InnoDB发难,也不意味着InnoDB被Oracle收购之后MySQL将要抛弃InnoDB存储引擎。“我的狗总认为所有松鼠都是贼。上星期我花了几个小时来整理InnoDB界面的代码。我发现仍然有Heikki加入的新代码。几个月前我还与人谈论如何扩展MySQL中的SQL语法来平衡InnoDB中的全文检索支持。没有任何迹象表明InnoDB将要从此消失,或者Oracle停止对它进行支持。” 而且MySQL有什么理由抛弃InnoDB?我们的用户中有许多人还在使用它。我做网站的时候也要用到,所以我个人很希望它顺利运行下去。”

  Oracle嵌入式系统营销副总裁雷克•王指出,Oracle会继续支持用于MySQL的InnoDB存储引擎。“InnoDB目前是MySQL中使用最多的事务型数据存储引擎,而Oracle会继续向MySQL提供InnoDB支持,包括推进更新和全面支持。所以说MySQL和Oracle没有必要继续支持第二个事务型存储引擎Berkeley DB。”他强调BDB是MySQL的第一个事务型引擎,但InnoDB发展迅速,已经成为用户的首选。“因为InnoDB全力支持唯一的用户MySQL,而Berkeley DB则要面对一系列用户和开源社区。MySQL使用的是修改版本的BDB,驱动本身并没有针对它进行优化,这种情况保持了许多年。而InnoDB一直在进行针对MySQL的优化,目前已经成熟稳定。”

  插件:Plugins anyone?

  开源的优势在于任何需要的人都可以进行选择使用。如果开源社区有兴趣继续支持BDB,阿克尔认为把BDB制作为存储引擎插件是很容易的事。并举出以插件形式加入MySQL而没有集成在内的引擎例子,如PrimeBase XT的MySQL事务型引擎,和Solid Information Technology的MySQL存储引擎。

  阿克尔还提到他所开发的memcache存储引擎插件,该插件可以为MySQL直接加入Memcached功能,而无需单独运行Memcached。 Memcached是一些高流量网站(如LiveJournal)通过允许访问者访问内存信息,而无需访问磁盘来提高性能的工具。阿克尔称,使用 Memcache作为存储引擎会使开发人员更加轻松。“数据的往返成本会得到控制,因为数据可以直接从数据库中传送。你也可以简单使用SELECT语句来比较memcache与数据库内容的区别。使用更轻松,整合更容易,往返数据量更少……全部考虑进来是个非常好的主意。”

  这一插件还在早期开发中。阿克尔称它为“前Alpha版本”,所以有些SQL语句可能还无法在memcache中运行。阿克尔说,SELECT、 UPDATE、DELETE和INSERT语句都可以运行,而ORDER BY、REPLACE等一些语句还不能运行。

  Memcache会不会成为MySQL的主流组件?阿克尔称,“这取决于需求和使用。目前将memcache置于MySQL主线之外进行开发更加快捷。我相信有一天可以将它们合并在一起。”

原文链接:http://news.csdn.net/n/20060929/95676.html