去IOE,MySQL完胜PostgreSQL

一、PostgreSQL

 

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,最终为什么会倒下? 

PostgreSQL另一个痛点,相信很多人没有意识到的就是其在在线事务(OLTP)方面的性能问题。PostgreSQL在功能方面或许是比较完整的,但是真的要进入到生产环节,看的不再是简单的功能,因为大部分用户都明白日常所使用的仅是数据库提供的20%功能。MySQL 5.7现在已经可以轻松达到50W QPS的性能,并支持通过NoSQL接口可以达到100W QPS,这是PostgreSQL为什么没有能在互联网时代站住脚跟的一个重要原因之一。在线事务对性能的要求之苛刻,是普通用户所无法感知的。

PostgreSQL最大的优势是在线分析的场景,因为其优化器对于Join的支持堪称全面,对于复杂查询有着良好的支持,从Oracle迁移到PostgreSQL的成本会比较低。基于PostgreSQL的GreenPlum也已经开源,因此PostgreSQL目前在这方便是较为领先的。

二、MySQL

 

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

 

去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也没有这个能力。

PS:有兴趣的读者可以看我之前发表的博文:MySQL新纪元,看看最新版MySQL所带来的变化,不要停留在5年前,10年前对于MySQL数据库片面的印象。

作者介绍:姜承尧

  • 【DBA+社群】联合发起人
  • IMG社区创始人,MySQL分支版本InnoSQL创始人,《MySQL技术内幕》、《MySQL内核》系列书籍作者,Oracle MySQL ACE。
  • 现任网易杭州研究院数据库技术组负责人,负责MySQL数据库内核、分布式数据库、NoSQL等数据库的内核开发、云服务的运维和相关开发工作。


时间: 2024-08-31 21:15:46

去IOE,MySQL完胜PostgreSQL的相关文章

阿里人首次分享:真实的阿里巴巴去IOE故事

沈洵,专家,阿里中间件技术部资深专家 2016全球敏捷运维峰会演讲嘉宾 08年加入阿里,参与过阿里巴巴的分布式数据库TDDL的以及分布式消息系统项目. 目前主要在负责阿里的云产品的技术与服务,包括分布式数据库DRDS, 分布式消息系统MQ,以及企业级应用服务框架EDAS 我是08年加入阿里的,有幸经历了阿里业务成长最快的那段时间,也留下了很多宝贵的记忆.今天在这里给大家讲讲我们几年前经历的那些有意思的故事. 首先来讲讲去IOE.对于阿里巴巴去IOE的过程,大家可能觉得就是老板们振臂一呼,大家齐头

搜索账号 排行榜客户端 去IOE的另外一条路径:全内存数据库弯道超车

老祖宗留下了<易经>这本书,告诉我们世界的本质是"变化"的,"变化"之间有相关性.比如云计算的兴起是由于计算机的带宽快速增加引起的,大数据的兴起是由于数字化进程引发的. 当今的IT界最重要的"变化"就是摩尔定律.曾几何时,程序员们沉醉于用C语言精妙的语句节省了数KB 内存空间,现在大家都用上了逻辑更加清楚.更易于大规模协作的JAVA,而对语言效率看得不那么重要.计算和存储能力变得越来越廉价的"变化"引发了其上软件产

在MySQL和PostgreSQL之外,为什么阿里要研发HybridDB数据库?

2016-12-09 来源:InfoQ 作者:萧少聪 阿里云为什么要做HybridDB?Pivotal么看待阿里云此举?Pivotal中国研发中心总经理冯雷(Ray Feng).阿里云数据库总负责人余锋(褚霸)于12月13日线上发布会剖析自己的想法.点击回顾视频:除了发布外,我们还想告诉你--阿里云为什么要做HybridDB? 编者按 在大数据火遍IT界之前,大家对数据信息的挖掘通常聚焦在BI(Business Intelligence)之上.BI具有着明确的分析需求,清晰地知道需要处理哪些信息

阿里中间件:正在开启“第二次去IOE”

编者按:Apsara Aliware是阿里中间件技术部基于阿里巴巴10年技术沉淀,推出的企业互联网架构平台,旨在实现企业业务能力的全面云化.欲了解更多信息请点击:https://www.aliyun.com/aliware?spm=5176.8142029.388261.228.DxHeiz "我们来阿里都不是上班的."赵杰辉这句话几乎贯穿于整个访谈,而且反复提及,令笔者印象深刻. 赵杰辉在云栖大会上激情演讲 一开始,对于这句话的理解,笔者是懵圈的,然而随着赵杰辉极具感染力且不断深入的

从“去IOE”到 IT国产化 本土厂商迎来大机遇

站在年关,回顾过去一年行业所发生的变化,可以发现其已经为2014年的产业发展指明方向.在2013年,信息科技行业发生的最大改变之一便是NSA和斯诺登事件带来的影响,其涉及信息与网络安全.ICT设备.服务提供商等多产业环节,其中包括"去IOE"等概念也反复提及,重新发酵.在抛去各种概念和炒作之后,可以发现的是IT系统国产化呼声的日益高涨,而这样的趋势在2014年也将越演越烈. 阿里"去IOE"模式短期难复制 "去IOE"最初由阿里巴巴提出,并在20

解密阿里技术发展路径:去“IOE”实现蜕变 自己革自己的命

2008年的一天,阿里巴巴集团(下称"阿里")开了一次内部会议.在这次当时看来很平常的会议上,明确了两个议题:一,阿里是一家数据公司:二,阿里要把"计算"变成一种像水和电一样的公共品.当时在中国还没有人谈"大数据"的概念:更没有人想到云计算会和一家互联网公司未来发展如此紧密. 1999年阿里成立之初,创始人"十八罗汉"中就不乏技术基因.公开资料显示,创始人之一吴泳铭1996年毕业于浙江工业大学计算机系,后成为支付宝的技术总监.

阿里巴巴王坚:“去IOE”不是技术升级 而是时代变化

2013年"双十一",天猫成交额达350亿,支付宝成交笔数1.88亿,阿里巴巴再一次赚足眼球. 2012年起,阿里集团闪电般地拆分成7家公司.25个分支机构,并在金融业肆意扩张,在移动互联网领域大举收购--马云构建的阿里生态圈,正在从城邦成长为"帝国".在这一系列高调动作的背后,实则与一位低调的人有关,他就是王坚. 2008年,王坚加盟阿里巴巴成为集团首席架构师,即现在的首席技术官.这位前微软亚洲研究院常务副院长被马云定位为:将帮助阿里巴巴集团建立世界级的技术团队,

借拉里·埃里森的智慧,看去IOE到底伤了谁?

"When people start telling you that you're crazy, you just might be onto the most important innovation in your life."   "Your generation will change the world, as every generation does. You will invent new technologies and new forms of art.

去IOE 怎么去

2013年5月17日,最后一台小型机在阿里巴巴支付宝下线,标志着阿里已经完成去IOE化.阿里巴巴的"去IOE"为市场带来了一个成功的范本,证明了打破国外厂商的垄断地位是有可能的,实现自主可控的"中国梦"并非遥不可及. 所谓 IOE 是个简称.是指以 IBM .Oracle.EMC 为代表的小型机.集中式数据库和高端存储的技术架构.其中 I 指 IBM p 系列小型机,操作系统是 AIX,IBM 专有的 Unix 系统; O 指 Oracle 数据库(RDBMS);E