oracle my sql-or-nosql

18
isky000.com 2013/11/17 1 Oracle, MySQL Or NoSQL ? 简朝阳

Upload: sky-jian

Post on 18-Dec-2014

2.104 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Oracle my sql-or-nosql

isky000.com 2013/11/17 1

Oracle, MySQL Or NoSQL ?

简朝阳

Page 3: Oracle my sql-or-nosql

isky000.com 2013/11/17 3

Oracle, MySQL Or NoSQL ?

背景 NoSQL 争鸣,去 IOE 及去关系型呼声震天

产品差异 功能,性能,成本,维护 …

场景需求 要求:一致性?可靠性?读写比?事物要求?

平衡选择 如何选?

Page 4: Oracle my sql-or-nosql

isky000.com 2013/11/17 4

Oracle, MySQL Or NoSQL ?

背景

信息量飞增 大数据

NoSQL争鸣 关系型?

X86性能突破 PC 崛起

SSD 分布式

云计算

… …

… …

革命

Page 5: Oracle my sql-or-nosql

isky000.com 2013/11/17 5

Oracle, MySQL Or NoSQL ?

背景

信息量飞增 大数据

NoSQL争鸣 关系型?

X86性能突破 PC 崛起

SSD 分布式

云计算

… …

… …

去 IOE

IBM

Oracle

EMC

Page 6: Oracle my sql-or-nosql

isky000.com 2013/11/17 6

Oracle, MySQL Or NoSQL ?

产品差异

功能 性能 (读, 写)

成本

维护 扩展

支持

人才

Page 7: Oracle my sql-or-nosql

isky000.com 2013/11/17 7

Oracle, MySQL Or NoSQL ?

产品差异 功能

Oracle

全才,无论 OLAP 还是 OLTP,无论是锁定机制还是事物支持,无论是

内置函数还是外部可扩展功能,都比较全面

MySQL

OLTP型选手,但由于缺少 Hash Join,以及分析函数相对较少,所以

OLAP方面功能相对欠缺,但对事务的支持以及锁定机制都比较齐全。

NoSQL

K/V 型选手,主要提供高效的简单查询,虽然部分NoSQL产品也支持相

对复杂一点的检索,但在事务以及Join方面都未支持,功能最弱

Oracle > MySQL > NoSQL

Page 8: Oracle my sql-or-nosql

isky000.com 2013/11/17

Oracle, MySQL Or NoSQL ?

产品差异 性能 – 写入

Oracle

需要记录 Redo Log 且保证每次事务都fsync到物理磁盘以保证事务安全,

连续写;数据的写入大多是在内存中完成,后台进程进行内存到磁盘的

定期批量刷新,随机写为主。

MySQL

InnoDB引擎 与Oracle类似;MyISAM 引擎无事务所以没有事务日志到

磁盘的fsync问题,但由于其表锁的原因,并发稍若。从总体使用经验来

看和 Oracle 相差不大

NoSQL

在数据存储及日志记录方面的架构及实现优化,使之在写入性能方面较

传统数据库有较大优势

NoSQL > Oracle ≈ MySQL

8

Page 9: Oracle my sql-or-nosql

isky000.com 2013/11/17

Oracle, MySQL Or NoSQL ?

产品差异 性能 – 简单查询

Oracle

在高并发场景下,由于其在事务控制实现方面的优势,以及多进程的机

制,显示出了相对明显的优势。

MySQL

在并发数不是太高的前提下,如8,16,32个并发场景下,相对于

Oracle 没有显示出弱势,甚至部分存储引擎下还有一些优势,但是随着

并发数的增加,就逐步体现出了与 Oracle 的差距,这与其基于线程的机

制也有一定关系。

NoSQL

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

Oracle > MySQL > NoSQL

9

Page 10: Oracle my sql-or-nosql

isky000.com 2013/11/17

Oracle, MySQL Or NoSQL ?

产品差异 性能 – 复杂查询

Oracle

统计信息涉及的方面非常多,优化器相对于 MySQL 来说也先进很多,

再加上对 Join 方式的全面支持,无论是从功能还是性能角度来说,多表

Join 都是 Oracle 的优势所在。

MySQL

其查询优化器所能参考的统计信息相对较少,优化器深度也比 Oracle 少

很多,所以在多表 Join 的时候出现执行计划异常并不少见。此外,不支

持 Hash Join 的天生缺陷也让其 Join 能力大打折扣。

NoSQL

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

Oracle > MySQL > NoSQL

10

Page 11: Oracle my sql-or-nosql

isky000.com 2013/11/17

Oracle, MySQL Or NoSQL ?

产品差异 扩展能力

Oracle

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

成本相对高很多。

MySQL

原生分布式架构的优势在于并发支持,但延时问题一直被广为诟病。所

以大部分场景下是人肉进行分布式拆分,但其Replication特性加上对一

致性的约束相较Oracle弱,使其架构灵活性很高

NoSQL

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

NoSQL > MySQL > Oracle

11

Page 12: Oracle my sql-or-nosql

isky000.com 2013/11/17

Oracle, MySQL Or NoSQL ?

产品差异 可维护性

Oracle

这一点上 Oracle 具有非常大的优势,无论是性能跟踪还是常规维护方面,

Oracle都提供了非常丰富的工具和系统。

MySQL

原生工具相对简单,但由于其开源的特性,有一些第三方开发的工具支

持,比如Percona提供的一套工具(原mktools),但总提仍然比

Oracle 少了很多

NoSQL

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

Oracle > MySQL > NoSQL

12

Page 13: Oracle my sql-or-nosql

isky000.com 2013/11/17

Oracle, MySQL Or NoSQL ?

产品差异 商业支持

Oracle

商业软件,全套的商业服务支持。

上百本文档手册支持,几乎涵盖所有的内容。

MySQL

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

NoSQL

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

Oracle > MySQL > NoSQL

13

Page 14: Oracle my sql-or-nosql

isky000.com 2013/11/17

Oracle, MySQL Or NoSQL ?

产品差异 人才环境

Oracle

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

MySQL

开源数据库的王者,社区活跃,虽然人才总量常常供不应求,但总体还

是处于良性状态。

NoSQL

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

态。

Oracle > MySQL > NoSQL

14

Page 15: Oracle my sql-or-nosql

isky000.com 2013/11/17

Oracle, MySQL Or NoSQL ?

产品差异 软件成本

Oracle

商业软件,价格昂贵

MySQL

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

NoSQL

开源软件

Oracle > MySQL > NoSQL

15

Page 16: Oracle my sql-or-nosql

isky000.com 2013/11/17 16

Oracle, MySQL Or NoSQL ?

场景分析

逻辑 复杂度

一致性 要求

并发量 规模

数据容量 规模

… …

Page 17: Oracle my sql-or-nosql

isky000.com 2013/11/17 17

Oracle, MySQL Or NoSQL ?

平衡选择 功能

成本

维护

扩展

… …

Page 18: Oracle my sql-or-nosql

isky000.com 2013/11/17 18

Oracle, MySQL Or NoSQL ?

Q & A