技术开发 频道

简朝阳:Oracle,MySQL还是NoSQL?

  【IT168 现场报道】Oracle技术嘉年华又将与大家见面了!感谢行业内朋友们的支持与厚爱,从2011年第一届嘉年华开始,我们一路并肩走来,有太多的感动和激励督促我们为大家提供更多精彩的主题和分享,并为大家提供更多与业内优异专家面对面交流的机会。今年11月17-18日,北京国宾酒店,第三届Oracle技术嘉年华,这个面向全球数据库爱好者的技术盛宴将再度拉开序幕。

Oracle,MySQL还是NoSQL?
2013 Oracle技术嘉年华

  今年大会我们已荣幸的邀请到Jonathan Lewis,Tim Gorman等Oracle数据库领域国际级专家,特别为中国的数据库爱好者带来他们多年的总结与经验分享。另外,我们还将邀请来自Linkedin、Salesforce、京东、1号店、百度、360、淘宝、阿里巴巴、支付宝、移动、联通等公司的核心数据库专家/架构师为各位朋友带来国内最新的数据库领域应用及非常好的实践分享。

  在大会第二天的主题演讲中,平安金融科技系统维护部资深总监、ACOUG核心会员简朝阳老师发表了主题为《Oracle,MySQL还是NoSQL?》的演讲,其主要从功能、性能、扩展能力、人才储备、商业支持以及价格等因素上面,对比了Oracle,MySQL以及NoSQL。

Oracle,MySQL还是NoSQL?

  简朝阳老师表示,不管是Oracle,MySQL以及NoSQL,企业在选择的时候,一定要考虑多方面的因素,比如应用场景、如何做取舍(更需要功能,还是要降低成本?需要更好的维护,还是可扩展性?),当然,最重要的是,要清楚自己的问题所在。下面,我们看一下简朝阳老师对这三者的对比结果(这也是其PPT的主要内容):

Oracle,MySQL还是NoSQL?

  功能

  Oracle全才,无论OLAP还是OLTP,无论是锁定机制还是事物支持,无论是内置函数还是外部可扩展功能,都比较全面。

  MySQL OLTP型选手,但由于缺少 Hash Join,以及分析函数相对较少,所以OLAP方面功能相对欠缺,但对事务的支持以及锁定机制都比较齐全。

  NoSQL K/V 型选手,主要提供高效的简单查询,虽然部分NoSQL产品也支持相对复杂一点的检索,但在事务以及Join方面都未支持,功能最弱。

  性能(写入)

  Oracle 需要记录 Redo Log 且保证每次事务都fsync到物理磁盘以保证事务安全,连续写;数据的写入大多是在内存中完成,后台进程进行内存到磁盘的定期批量刷新,随机写为主。

  MySQL InnoDB引擎 与Oracle类似;MyISAM 引擎无事务所以没有事务日志到磁盘的fsync问题,但由于其表锁的原因,并发稍若。从总体使用经验来看和 Oracle 相差不大。

  NoSQL 在数据存储及日志记录方面的架构及实现优化,使之在写入性能方面较传统数据库有较大优势。

  性能(简单查询)

  Oracle在高并发场景下,由于其在事务控制实现方面的优势,以及多进程的机制,显示出了相对明显的优势。

  MySQL在并发数不是太高的前提下,如8,16,32个并发场景下,相对于 Oracle 没有显示出弱势,甚至部分存储引擎下还有一些优势,但是随着并发数的增加,就逐步体现出了与 Oracle 的差距,这与其基于线程的机制也有一定关系。

  NoSQL至少在我过往的多种测试下,大部分时候的简单查询性能都不如前二者。

  性能(复杂查询)

  Oracle统计信息涉及的方面非常多,优化器相对于 MySQL 来说也先进很多,再加上对 Join 方式的全面支持,无论是从功能还是性能角度来说,多表 Join 都是 Oracle 的优势所在。

  MySQL其查询优化器所能参考的统计信息相对较少,优化器深度也比 Oracle 少很多,所以在多表 Join 的时候出现执行计划异常并不少见。此外,不支持 Hash Join 的天生缺陷也让其 Join 能力大打折扣。

  NoSQL不支持Join,不具可比性,无疑是最弱的。

  扩展能力

  Oracle Oracle由于其极高的一致性要求,造成架构上的不少限制。导致其扩展成本相对高很多。

  MySQL原生分布式架构的优势在于并发支持,但延时问题一直被广为诟病。所以大部分场景下是人肉进行分布式拆分,但其Replication特性加上对一致性的约束相较Oracle弱,使其架构灵活性很高。

  NoSQL大多都原生支持分布式部署架构,具有极好的Scale Out能力。

  可维护性

  Oracle 这一点上 Oracle 具有非常大的优势,无论是性能跟踪还是常规维护方面,Oracle都提供了非常丰富的工具和系统。

  MySQL原生工具相对简单,但由于其开源的特性,有一些第三方开发的工具支持,比如Percona提供的一套工具(原mktools),但总提仍然比 Oracle 少了很多。

  NoSQL无论是从性能跟踪还是常规维护角度来说,都远不如前二者。

  商业支持

  Oracle商业软件,全套的商业服务支持。 上百本文档手册支持,几乎涵盖所有的内容。

  MySQL有商业服务支持,但文档相对简单,包含的内容也比较少。

  NoSQL少有商业支持,文档非常简单,网络资料也相对少很多。

  人才环境

  Oracle发展几十年,具有充足的人才储备,活跃的社区环境。

  MySQL开源数据库的王者,社区活跃,虽然人才总量常常供不应求,但总体还是处于良性状态。

  NoSQL新技术,产品众多,社区活跃度远不如前面二者,处于人才极度匮乏状态。

  软件成本

  Oracle商业软件,价格昂贵。

  MySQL有开源也有商业版本,但价格较便宜。

  NoSQL开源软件。

1
相关文章