没有合适的资源?快使用搜索试试~ 我知道了~
首页NoSQL性能评估(MongoDB,HBase,Cassandra):哪种数据库最适合你的数据?
非关系数据库(经常被称为NoSQL)的特点是弹性和可伸缩性。另外,它们可以存储大数据并与云计算系统协同工作。这些因素导致非关系数据库非常流行。在2013年,NoSQL数据库的种类达到了150多个,并且一直在增长,多种多样的NoSQL数据库令人难以做出选择。更糟的是,鼓吹自己产品的海量广告宣传材料令人难以以理解该产品是否适合用户的需要。 为了向客户的项目提供最好的NoSQL方案,Altoros针对几种NoSQL数据库测试了多种工作负荷下的性能。本文概述了针对几种市面上最成熟也是最流行的NoSQL数据库性能测试的结果。
资源详情
资源评论
资源推荐
Author: Sergey Sverchkov Translated by: baudzhou@163.com
1of18
NoSQL 性能评估:哪种数据库最适合你
的数据?
February 3, 2014 Sergey Sverchkov Altoros
非关系数据库(经常被称为 NoSQL)的特点是弹性和可伸缩性。另外,它们
可以存储大数据并与云计算系统协同工作。这些因素导致非关系数据库非常流
行。在 2013 年,NoSQL 数据库的种类达到了 150 多个,并且一直在增长,多种
多样的 NoSQL 数据库令人难以做出选择。更糟的是,鼓吹自己产品的海量广告宣
传材料令人难以以理解该产品是否适合用户的需要。
为了向客户的项目提供最好的 NoSQL 方案,我们 Altoros 针对几种 NoSQL
数据库测试了多种工作负荷下的性能。本文概述了针对几种市面上最成熟也是最
流行的 NoSQL 数据库性能测试的结果。
NoSQL 数据库:基础
NoSQL 数据库为什么会出现?主要因为关系数据库(RDBMS)在处理大型数
据集时的很多限制。例如,RDBMS 难以扩展、它们的架构被设计为工作在单一机
器上,因而:
-写操作的扩展十分困难、代价昂贵或者根本不可行
-垂直扩展(或设备升级)受限制或者太过昂贵。不幸的是,这经常是扩展系统
的唯一方案。
-水平扩展(或向集群中增加新节点)不可行或者只能部分实现。Oracle 和微软
有一些提供多个运算实例服务器的方案,但是,数据库本身依然处于共享的存储
设备上。
对扩展性而言更糟的是,RDBMS 有严格的数据模型。数据模式在数据库建立
的时候就已确定,如果想要进行变更,那么需要付出相当高昂的代价。多数情况
下,这是一个非常复杂的过程并且很可能导致系统长时间宕机。除此以外,RDBMS
难以处理半结构化的数据。
NoSQL 方案致力于解决上述以及另外很多其他问题。市面上有多种 NoSQL 数
据库:键值对、列族、面向文档以及图。它们都不采用关系数据模型,因此具有
无模式、不过分复杂、数据模型灵活以及最终一致性的特点( 遵守 BASE 而非 ACID)
Author: Sergey Sverchkov Translated by: baudzhou@163.com
2of18
译者注:
BASE
(
Basically Available
,
Soft state
,
Eventual consistency
)即基本可用,
柔性状态,最终一致性
NoSQL 数据库提供 API 用于进行各种操作。其中有些支持查询语言操作,例
如,Cassandra 与 HBase。然而,现在并没有用于集群的标准 NoSQL 架构,因此
在部署中可以通过增加节点来进行水平扩展。另外,NoSQL 数据库可以支持海量
数据并可以提供非常高的吞吐率。
如何评估 NoSQL 数据库?
NoSQL 数据库与 RDBMS 的不同,主要在于数据模型上。这些数据库大体可以
分为四类:
1.键-值库,类似于映射或词典,数据由独一无二的键进行定位。
2.面向文档的库,将键值对封装在 JSON 或类似 JSON 的文档中。在文档集中,
键是唯一的。相比键-值库,值对于系统而言是不透明的,也可以查询。
3.列族库,也被称为面向列的数据库、可扩展记录数据库与宽列数据库。
4.图数据库,相比面向键的 NoSQL 数据库,图数据库特别适用于对关系错综复
杂的数据的有效处理。
NoSQL 数据库在将数据分布于多台机器上的方式上有所不同。由于键-值库、
文档库、列族库的数据模型都是面向键的,两种常见的分布策略都是基于键的。
1.第一种策略是将数据集按照键的范围分布。一 台路由服务器将整个键的集
合分成若干块,并 将 这些快分配给不同的节点。然后,每个节点负责处理它自己
键区间的存储与请求。为了查询一个键,客户端需要与路由服务器联系以获得分
区表。2.而采用第二种分布策略的话,可以获得更高的可用性与更简单的集群架
构。
副本是 NoSQL 方案的另一个核心。采用副本,不仅可以通过负载平衡来获得
更好的读性能,还因为失效节点可以很容易的被替代,可以获得更好的可用性与
耐用性。
如果所有主服务器的副本同步更新,那么系统在所有副本节点完成写操作之
前是不可用的。这 就 是为什么本方案不适合依赖于高可用性的平台,因为即使几
微秒的延迟都会对用户的操作产生很大影响。
另外,很显然,性 能也是一个很重要的因素。数据存储方案的性能可以通过
一些典型场景来进行评估。这些场景模拟了使用数据库的应用程序最常见的操
作,也被称为典型负载。我们通过 Altoros 执行的测试,采用了典型负载,来比
较几种 NoSQL 数据库的性能。
Author: Sergey Sverchkov Translated by: baudzhou@163.com
3of18
性能评估方法
在衡量产品能力时,数据库供应商通常采用专门设计以保证各自方案优势的
硬件、软件组合。在 我 们的测试中,我们尝试在同等的条件下测试 NoSQL 数据库
的表现。
在测试基准方面,我们采用了雅虎的云服务基准测试平台(YCSB)。YCSB
的核心框架包括一个用于生成测试负载的负载生成器与一个负载场景的集合。使
用 YCSB,开发者需要通过操作类型来描述负载的场景,例如,明确什么样的操
作执行在什么类型的记录上。支持的操作包括:插入、更新(修改一个字段)、
读取(一个随机字段或一条记录的所有字段)与 扫描(从一个随机选取的记录开
始按照键的顺序读取一系列记录)。
在我们的测试中,每个工作负载都操作一个有 100,000,000 条记录的表;
每条记录为 1,000 字节,10 个字段。主键用来标识每条记录,通常为一个字符
串,如“user234123”。每个字段都被命名为 field0,field1 等。每个字段的
值都是随机的 ASCII 字符,其长度都是 100 字节。
数据库的性能由其进行基本操作时的计算速度决定。由负载执行器执行的,
驱动多个客户线程的一个动作,作为一个基本操作。在 NoSQL 数据库中,每个线
程通过调用数据库的接口层执行一个操作序列来进行数据库加载(在加载阶段)
并执行工作负载(在事务阶段)。每个线 程都可以控制它们生成请求的频率。因
此我 们可以直接控制负载。另外,线程可以度量在执行操作时的延迟与吞吐量,
之后这些数据被发送给统计模块。
测试环境
在测试中,我们决定采用 AWS 公共云环境。所有的虚拟机都运行在同一个区
域(欧洲,爱尔兰)并且在同一个可用区域(或同一个数据中心)。每个数据库
都在一个四节点集群中存储数据。我们采用了 m1.xlarge 计算实例。我们的节点
都是 64 位的实例:16GB 内存,4vCPU,8ECU 与高性能网络,操作系统为 Amazon
Linux。
我们在集群中的每个节点上创建了数据存储,采用了 4 个拥有 EBS 优化的
EBS 卷,每个大小为 25GB,这些卷组成了 RAID0 阵列。数据被分布或分片在 4
个节点上。
采用 YCSB 框架的客户端运行在一个单独的 c1.xlarge 实例上。由于 MongoDB
的架构需要,我们增加了两个 c1.medium 实例作为路由器。
所有的实例都位于相同的安全组并提前配置了必要的网络端口用于节点间
通信,同 时 配 置 了 每 个 欲开放的数据库所需的所有端口。之后我们将工作负载定
义上传至 YCSB 客户端以运行测试,测试结果在安装了 YCSB 的实例上进行度量。
Author: Sergey Sverchkov Translated by: baudzhou@163.com
4of18
图 1:NoSQL 数据存储测试基础设施。来源:Altoros
欲评估的数据库与工作负载定义
在测试中,我们要度量我们认为市面上最成熟、最 流行的的几种 NoSQL 数据
库的性能。下面是它们的简介:
• Cassandra2.0。这是一个列-值数据库,运行它需要 Java1.7.40 环境。测
试中,事务运行在 non-default 配置下。特 别 的,我们采用了随机分割器
用来将数据分布在节点上。键的缓存为 1GB,行的缓存为 6GB。JVM 堆为
6GB。
• MongoDB2.4.6. 这是一种面向文档的数据库。再次,我们并没有做过多额
外配置或调试--基于 MongoDB 文档中的推荐配置,增 加 了 两 个作为路由器
的实例。然而,如果想简化架构模型,mongo 路由器可以运行在 YCSB 客
户端安装的机器上。在 早期一个测试中,我们发现 Mongo 路由器会占用大
量 CPU 资源,因此我们把路由器运行在两台单独的机器上。MongoDB 的数
据分片基于文档的键。
• HBase0.92. 针对 HBase,我们把 JVM 的内存设置为 12GB。
剩余17页未读,继续阅读
BaudZhou
- 粉丝: 16
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论2