完善自我的MySQL
在2006年遭遇最为“惨重”的当属MySQL。
MySQL开源数据库采用的是双重授权策略,对于不愿公开自己源代码的使用者,需要付费使用MySQL, 而对于开放源代码的使用者,可以基于GNU的公共许可协议GPL来使用。
MySQL数据库并没有属于自己的用于负责数据的物理存储和索引的存储引擎,它普遍使用别的开源数据库引擎做为自己的关键性存储引擎。MySQL曾经把InnoDB做为自己的事物型数据存储引擎,把BerkeleyDB做为自己的嵌入式事物型存储引擎。这两种开源数据库被Oracle收购之后(InnoDB在2005年10月份被收购,BerkeleyDB在2006年2月份被收购),MySQL在做了一些应急措施及得到一些“帮助”之后(2006年2月,MySQL雇佣了嵌入式开源数据库Firebird项目的关键人物Jim Starkey;2006年9月份,宣布去除掉对BerkeleyDB存储引擎的支持;2006年7月25日,专门为MySQL量身定做的Beta版 SolidDB Storage Engin正式对外发布)正在加紧研发自己的存储引擎。
MySQL起初也没有自己的存储过程 (Stored Procedure)语言,在当时这是对习惯于企业级数据库的程序员的最大限制。多语句SQL命令必须通过客户方代码来协调,这种情形是借助于相当健全的查询语言和赋予客户端锁定和解锁表的能力,这样才允许的多语句运行。 但在MySQL 5.0发布之后,MySQL宣称已经完全支持存储过程。
但是MySQL目前没有自己的存储引擎。MySQL的存储是以可插取的存储引擎存在的,它采用不同的存储引擎技术把数据存储在文件或者内存中。 MySQL有多种存储引擎:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、 FEDERATED、ARCHIVE、CSV、BLACKHOLE。可以采用内存存储引擎存储临时数据,采用事物存储引擎来完成事物处理,等等。相比之下,其它的一些数据库系统(包括大多数商业选择)仅支持一种类型的数据存储。对于用户而言,这种选择不同的存储引擎来存储和检索数据的灵活性,是比较受欢迎的。然而,Oracle也正是看中了这一点,才对MySQL发难。
研发自己的存储引擎是MySQL在2007年亟需解决的任务。2006年年底,MySQL AB公司和NitroSecurity公司达成协议,双方联合研发一款基于NitroEDBTM高速关系数据库技术的MySQL数据库引擎。 NitroSecurity技术使用独特的索引技术、数据管理方法和查询处理算法,该技术可以轻松处理大容量的数据库操作,而未来的MySQL数据库服务器版中将嵌入NitroSecurity的NirtroEDB数据库存储引擎,并且这种解决方案可以与旧版本的MySQL数据库的应用程序互相兼容。而在 2007年的开始,已经有消息传出针对批量Web服务器环境而设计的内部测试版新MySQL存储引擎已经发布,以用于细化MySQL的存储引擎的功能和性能。
2007年新的一年中,MySQL不仅要在存储引擎上做出努力,还要在磁盘存储、内存损耗、集群技术以及其他的企业级性能和功能上有自己的突破。另外,面对时下的开源环境,MySQL也应该仔细考虑自己的发行费用方式的转变、培训、关键性部署等非技术性问题。