MySql与MariaDB由来与历程

MySQL数据库

MySQL数据库是一个关系型数据库管理系统,由瑞典MySQL AB公司开发。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

(1)Mysql支持大型的数据库。可以处理拥有上千万条记录的大型数据库;

(2)MySQL使用标准的SQL数据语言形式;

(3)Mysql可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等;

(4)Mysql对PHP有很好的支持,PHP是目前最流行的Web开发语言;

(5)MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB;

(6)采用了GPL协议(一种*软件许可证,许可社会公众享有:运行、复制软件的*,发行传播软件的*,获得软件源码的*,改进软件并将自己作出的改进版本向社会发行传播的*)。

MySQL数据库的历程

(1)1979年,一个名为Monty Widenius的程序员在为TcX的小公司打工,并且用BASIC设计了一个报表工具,使其可以在4MHz主频和16KB内存的计算机上运行。当时,这只是一个很底层的且仅面向报表的存储引擎,名叫Unireg。

(2)1990年,TcX公司的客户中开始有人要求为其API提供SQL支持。Monty直接借助于mSQL的代码,将它集成到自己的存储引擎中。令人失望的是,效果并不太令人满意,决心自己重写一个SQL支持。

(3)1996年,MySQL 1.0发布,它只面向一小拨人,相当于内部发布。到了1996年10月,MySQL 3.11.1发布(MySQL没有2.x版本),最开始只提供Solaris下的二进制版本。一个月后,Linux版本出现了。在接下来的两年里,MySQL被依次移植到各个平台。

(4)1999~2000年,MySQL AB公司在瑞典成立。Monty雇了几个人与Sleepycat合作,开发出了Berkeley DB引擎, 由于BDB支持事务处理,因此MySQL从此开始支持事务处理了。

(5)2000,MySQL不仅公布自己的源代码,并采用GPL(GNU General Public License)许可协议,正式进入开源世界。同年4月,MySQL对旧的存储引擎ISAM进行了整理,将其命名为MyISAM。

(6)2001年,集成Heikki Tuuri的存储引擎InnoDB,这个引擎不仅能持事务处理,并且支持行级锁。后来该引擎被证明是最为成功的MySQL事务存储引擎。MySQL与InnoDB的正式结合版本是4.0

(7)2003年12月,MySQL 5.0版本发布,提供了视图、存储过程等功能。

(8)2008年1月,MySQL AB公司被Sun公司以10亿美金收购,MySQL数据库进入Sun时代。在Sun时代,Sun公司对其进行了大量的推广、优化、Bug修复等工作。

(9)2008年11月,MySQL 5.1发布,它提供了分区、事件管理,以及基于行的复制和基于磁盘的NDB集群系统,同时修复了大量的Bug。

(10)2009年4月,Oracle公司以74亿美元收购Sun公司,自此MySQL数据库进入Oracle时代,而其第三方的存储引擎InnoDB早在2005年就被Oracle公司收购。

(11)2010年12月,MySQL 5.5发布,其主要新特性包括半同步的复制及对SIGNAL/RESIGNAL的异常处理功能的支持,最重要的是InnoDB存储引擎终于变为当前MySQL的默认存储引擎。MySQL 5.5不是时隔两年后的一次简单的版本更新,而是加强了MySQL各个方面在企业级的特性。Oracle公司同时也承诺MySQL 5.5和未来版本仍是采用GPL授权的开源产品。

MariaDB数据库

MySQL被收购之后,面临着被闭源的风险,因此MySQL之父 Widenius离开Sun之后,2009年重新开发代码全部开源免费关系型数据库,推出了MariaDB。

鉴于所有应用,MariaDB都是MySQL的代码级量身定制的替代者,相应的版本可以直接替换(如MySQL 5.1 -> MariaDB 5.1, MariaDB 5.2 & MariaDB 5.3也是兼容的。MySQL 5.5将与兼容),其与MySQL保持着高度的兼容性:

  • 数据及表的定义文件(.frm)在代码级兼容;
  • 所有客户端的API、协议和结构都是相同的;
  • 所有文件件名、二进制文件、路径、端口、套接字等……全都是一样的;
  • 所有的MySQL与其他语言(PHP、Perl、Python、Java、.NET、MyODBC、Rub、MySQL C……)的连接文件无需任何改动,在MariaDB就可工作;
  • mysql-client程序也可在MariaDB服务器上工作。

但MariaDB绝对不是MySQL的简单替代品,相对于MySQL,其有更多新选项、扩展、存储引擎及漏洞修复。

据调研,目前Oracel已经对MySQL进行了闭源,开源的CentOS7已经不支持MySQL,而换成了的MariaDB。如果用户需要在CentOS7上安装MySQL需要先将MariaDB卸载掉,否则就会导致安装冲突。