上周参加了2015年的中国数据库大会,差很少从第二届开始就每一年都会北京参会,从最先的嘉宾到此次的会场主持人,也算见证了中国数据库大会的发展吧。记得最先的时候大会只有两天,分会场也比较小,而如今各类大会变为了三天,分会场也愈来愈细化,赞助商也从之前的出版社演变为各类高大上的软硬件公司,这是主办方的成功,也是整个数据库从业人员的骄傲。然而,此次会议讨论的最多的依然是去IOE问题,可是原来的主角从MySQL换成了PostgreSQL。在以前的去IOE之MySQL问答系列中,笔者其实已经回答过了这部分的问题,然而不可避免的收到了来自PostgreSQL阵营非善意的“攻击”,故展开这个话题,尽可能作到职责内的公正,公平,公开。若是您有任何关于去IOE的问题,请关注微信公众帐号InsideMySQL并与我联系。html
PostgreSQL官方宣称的是:“The world’s most advanced open source database”。most advanced我不知道是怎么定义的,由于PosgreSQL仍是传统B+树索引的数据库,在一些场景下,好比全插入场景,其仍是会比其余一些数据库要来得差不少,好比TokuDB,MongoDB。撇开这部分的因素,不得不认可PostgreSQL是最为强大的开源数据库,或许,可是Oracle依然才是最为强大的关系型数据库。PostgreSQL阵营一直标榜本身在优化器和Oracle可移植性方面的优点,我想这对比MySQL或许是成立的。然而,若是上述都成立的话,为何PostgreSQL在装机量,流行度等指标上上远远地被后起之秀MySQL给超越了呢?全球前20大网站彻底看不到PostgreSQL的身影呢?在写本篇文章的时候,我倏地想到了一个相似的问题,业界公认手机质量最好的Nokia,最终为何会倒下?mysql
PostgreSQL另外一个痛点,我想不少人没有会意识到的,就是在在线事务(OLTP)方面的性能问题。PostgreSQL在功能方面或许是比较完整的,可是真的要进入到生产环节,看的再也不是简单的功能,由于大部分用户都明白平常所使用的仅是数据库提供的20%功能。MySQL 5.7如今已经能够轻松达到50W QPS的性能,并支持经过NoSQL接口能够达到100W QPS,这是PostgreSQL为何没有能在互联网时代站住脚跟的一个重要缘由之一。在线事务对性能的要求之苛刻,是普通用户所没法感知的。sql
PostgreSQL最大的优点是在线分析的场景,由于其优化器对于Join的支持堪称全面,对于复杂查询有着良好的支持,从Oracle迁移到PostgreSQL的成本会比较低。基于PostgreSQL的GreenPlum也已经开源,所以PostgreSQL目前在这方即是较为领先的。数据库
MySQL数据库官方的口号是:“ The world’s most popular open source database.”。对比PostgreSQL,这句话简直没法攻击,而且MySQL官方的目标也一直是成为最为流行的数据库。经过互联网浪潮,移动互联的时代,MySQL是真的作到了。编程
MySQL的优点是开源与开放性架构,使其拥有有着各类分支版本与存储引擎可供选择。除了官方的InnoDB存储引擎,还有TokuDB,Infobright引擎可在特定场合下进行使用。也正是由于MySQL的开源与开放,使得大量的开发人员加入到了MySQL的环抱。MySQL是一个很是成功的开源项目,可能不少人忽略了这个重要的因素。安全
MySQL被Oracle收购后表现的愈来愈好,一方面是功能愈来愈与Oracle数据库接近,不少时候给个人感受就是开源的Oracle数据库,另外一个重要的改进就是bug愈来愈少,甚至不少遗留了有近10年的bug也已一一修复。官方这样严谨的态度,使得MySQL逐渐站稳了并开始蚕食一部分的企业市场,世界500强的选择就是最好的证实。微信
MySQL在性能与流行度上的优点我不想再作过多的笔墨,由于这是任何人都没法回避的事实。MySQL数据库以前被PostgreSQL阵营攻击就是优化器,对于多表JOIN的性能以及不支持Hash Join。然而,不少人没有意识到,MySQL已经在5.6版本支持了MRR(Multi-Range Read),ICP(Index Condition Pushdown),BKA(Batched Key Access )Join这些优化,多表的JOIN性能已经获得了很大幅度的提高。不可否则,MySQL依然不支持Hash Join,可是这些优化的引入已经使得MySQL的Join性能提高到了一个新台阶。同时,在在线分析的领域,用户真的不关心使用Hash Join能够5分钟出报表,而是用MySQL须要8分钟,这些时间彻底是能够容忍的。然在在线事务领域,0.1的时间都是所不能容忍的。所以,本人在这里呼吁,尝试升级MySQL到5.6,5.7版本,而不要依然停留在5.1或者5.5版本。数据结构
MySQL替换Oracle另外一个被诟病的就是没有Oracle的透明网关(Transparent Gateway)功能,MySQL自带的Fedorate存储引擎支持MySQL数据库间的查询,不支持异构数据库以前的查询。然而,这个问题已经给MariaDB解决,用户只须要经过Connect存储引擎,就能达到相似Oracle透明网关的功能。架构
另外,还有用户提出MySQL不支持分区的全局索引,物化视图等,其实这些均可以经过变通的方法实现,这在个人书籍《MySQL技术内幕:InnoDB存储引擎》与《MySQL技术内幕:SQL编程》都有说起,并且也在网易、淘宝这样的互联网公司使用。并发
即便官方的MySQL没法知足你的需求,可是用户依然有InfoBright与TokuDB存储引擎的选择。InfoBright是列存的数据库引擎,很是适用于在线分析领域,这点连PostgreSQL都没法进行匹敌。TokuDB是一种相似LSM数据结构的数据引擎,在大并发的插入生产环境下,其对比各类传统数据库都有着显著的优点,即便对比PostgreSQL与Oracle数据库自己。总之,MySQL可以在各类维度知足用户对于数据库的各类需求。
PosgreSQL与MySQL对比,最为关键的是整我的才的储备。看看中国的互联网公司基本都已将MySQL数据库做为标配,而PostgreSQL甚至连备胎都没法入选。MySQL在互联网行业积累了大量的高可用架构,分布式架构与灾备经验,可是PostgreSQL几乎为0。再看看图书市场,PostgreSQL凤毛菱角,而MySQL则有很好的书籍供DBA,开发人员,架构师等学习。然即便如此,MySQL离Oracle数据库自己的积累还有很长的路要走。
去IOE最先是由淘宝提出,旨在去除IT架构中的IBM小型机,Oracle数据库,EMC存储。去IE是比较简单的事情,由于这仅是硬件的替换。另外,X86技术也愈来愈成熟,稳定性与小机的差距不断缩小。然而去Oracle数据库才是淘宝去IOE的难点与精华所在。整个去Oracle历时3,4年的时间。其中伴随着功能内部工程师的质疑,大量Oracle人才的流失,但最终已经证实了MySQL数据库替代Oracle的可行性。
笔者高兴的是传统企业也开始有这样的“觉悟”开始逐步进行去IOE的尝试,无论这种尝试是主动仍是被动,但都是值得尊敬的行为。缘由在于去Oracle数据库这件事情并不那么简单。数据库是传统企业最为核心的资产,任何损失都是不可接受的。而去年银监会的39号文件也坚决了传统企业的去IOE决心。
去IOE风潮显现,一大帮的公司开始进入到这个领域,但愿借助这阵风来大赚一笔。这点本无可非议,市场与技术相辅相成。然而,有一个很是很差的现象是,不少公司是为了迎合某些领导的须要,而不是真正的为传统企业构建面向互联网+的安全可控的技术架构。而这其中有着一些鲜为人知的因素。
首当其冲的是领导们的绩效,传统企业作事,以绩效为导向,这与互联网行业并没有不一样。可是互联网行业有着技术积累,并且对于技术的选型与转型有着至关的耐心,从淘宝去Oracle用了3,4年就能够看出。而目前摆在传统企业领导面前的现实倒是,39号文件要求各银行业金融机构对安全可控信息技术的应用以不低于15%的比例逐年增长,直至2019年达到不低于75%的整体占比。
遇到一些传统企业的朋友,领导要求他们用PostgreSQL替换Oracle数据库,缘由在于这是“最快”的替换Oracle成本,可是他们站在IT从业人员的角度来看这件事是不对的,有种敢怒不敢言。固然,这其中也有部分商业公司在其中推进的关系。可是明白人内心都知道,PostgreSQL国内从业人员寥寥,以前在中国没有大规模的使用经验与架构设计,大多停留在找个文档折腾下的水平上。所谓“最快”的替换方案仅是由于不用进行存储过程的移植,若是只是这样使用PostgreSQL,那么仅是应付上层的文件,而没有真正领会到文件的精神。更有商业公司号称有PostgreSQL的专家,然而很是经不起推敲,玩过GreenPlum的就是PostgreSQL专家?并且GreenPlum也仅作研究性质的用途?与专家交流后发现其对锁与并发,高可用这块的掌握更是让人触目惊心。
因此笔者一再和身边的朋友说,去IOE不是一件一蹴而就的事情,须要给MySQL时间,不然这件好事情会像着另外一个方向而发展,甚至重复当年年Sybase替换Oracle的事件发生。可是好消息是此次的领导们终于开始认识到互联网的重要性,理解了安全可控对于一个国家的重要性,而互联网公司的成熟经验具备很好的借鉴意义。
MySQL数据库早已不是原来的迷你数据库,其在功能性与性能方面都已经大幅提高,随着SSD的崛起,MySQL数据库已经彻底能够替换Oracle数据,而PostgreSQL还须要很长的路要走。但市场是开放的,就像Oracle称雄的年代,还有DB2,Sybase这样的数据库与之一较长短。我相信互联网时代,依然是百花齐放的年代,没有谁能够一直占领优点,即使是MySQL也没有这个能力。
来源:http://www.oschina.net/news/61729/mysql-exceed-postgrsql