MySQL目前三大最火的分支仍然是Oracle控制的、MariaDB控制的,以及Percona控制的,三者各有特色。其中,Oracle把控了原生MySQL社区版的发展,Percona紧跟MySQL的功能特性,并做了一些运维的改进和工具,MariaDB更加开放,功能特性也更强一些。

起初MySQL之父Monty在1979年写下MySQL的第一行代码,后来逐渐创建起MySQL公司,后将其以10亿美金卖给Sun,

结果Sun又把Microsystems和MySQL转手卖给Oracle,Monty愤而出走,创立MariaDB分支。从某种程度来说,可能MariaDB

才是一脉相承过来的MySQL。Monty无疑对MySQL是最熟悉的,所以MariaDB这个分支在功能性方面都表现得很优秀,

也比Oracle MySQL走得更快一些,早在5.5时MariaDB就已经有了目前MySQL 8.0鼓吹的Hash Join功能,在MySQL 5.7

上的多源复制功能也早在2012年就提供出来了。而且它是一个“开放”的分支,Monty为了避免它闭源特别成立了一个基金会,

把MariaDB放在基金会里,基金会无法进行商业活动,也就不会步MySQL的后尘。当然也有对应的 MariaDB的公司,来提供

内部QA稳定性测试、商业套件、订阅服务、培训、甚至定制化开发服务等,所以即使MariaDB这个公司被收购了,也不会影响

到MariaDB本身的发展。目前MariaDB在Gartner统计中是发展最快的开源数据库。

再看Percona,Percona是原MySQL运维部总监Peter和Vadim在2006年离开后创建的,因其本身是运维出身,所以他做的

这个分支基本上也是为运维人员服务的。比如说它的XtraBackup和pt-Toolkits,这些DBA常用工具都是出自他的公司。在一个公司

里面,运维和开发其实是两个比较冲突的部门;运维更保守,他要的是不要有Bug,监控、备份都需要配置起来方便,需要有问题

时及时处理。而开发人员想的则是:这个功能MySQL实现不了,需要新增功能,要提交,要快速迭代、快速开发,举个例子:

人类都有像鸟儿一样在天空翱翔的理想,于是开发人员生产了飞机,而运维人员担心掉下来生产了降落伞。

Percona公司更偏向于运维工具;MariaDB更偏向于功能的完善;Oracle MySQL它介于两者之间

但现在因为Oracle收购了MySQL,花了70多亿美金,自然想要控制MySQL,因此Oracle做的第一件事就是不再开发MySQL的Test Case,Test Case不需要遵循 GPL协议,所以Oracle成功了。但是,这个动作对开源社区和MySQL的开放性带来的损害是巨大的,阿里巴巴、Google、亚马逊等都有自己的特殊功能,对MySQL进行了大量源码的改造,用户遇到的问题提交给Oracle,Oracle写成Test Case,但是不开放出来,各大公司自己改的源码会因此无法得到验证,也就相对无法保证稳定和可靠,最后只有Oracle能够把控这个MySQL分支。在8.0的时候,Oracle进一步绑定了InnoDB,社区的控制力更弱。

总体来说,Oracle把控了原生MySQL社区版的发展,Percona紧跟MySQL的功能特性,并做了一些运维的改进和工具,MariaDB更加开放,功能特性也更强一些。