您的位置: 网界网 > 周报全文 > 正文

[周报全文]因事制宜 各展所长——四大NoSQL数据库横向评测

2012年11月28日 10:37:49 | 作者:佚名 | 来源:网界网 | 查看本文手机版

摘要:有人曾说:“可选的东西越多就越难以做出选择。”在NoSQL数据库领域,Cassandra、HBase、MongoDB和Riak在不同系统负载下的性能表现究竟如何呢?

标签
数据库
横向评测
NoSQL

有人曾说:“可选的东西越多就越难以做出选择。”在NoSQL数据库领域,Cassandra、HBase、MongoDB和Riak在不同系统负载下的性能表现究竟如何呢?

2010年,当全世界都被云和服务于云的新型数据库的卓越性能所吸引时,雅虎的研究小组决定对NoSQL进行研究。他们开发出了用于评估新工具性能和发现最佳使用案例的YCSB(雅虎云服务基准测试)架构。随后,雅虎在一篇名为《用YCSB测量云服务系统》的论文中公布了他们的研究成果。

虽然雅虎研究小组的研究非常出色,但是与任何论文一样,它无法将所有的东西都概括进来。总结起来,该论文没有涉及的内容包括:该研究没有提供给其他测试机构自行分析所需要的全部信息;尽管雅虎对Cassandra、HBase、雅虎PNUTS和一个简单的分片式MySQL(即sharded MySQL)部署进行了分析,但是并没有包括一些我们常用的数据库;雅虎在研究中使用的是高性能硬件,但对于大多数企业而言,这些数据库在使用普通硬件时的性能表现才更具意义。

对Altoros Systems公司的研发工程师而言,雅虎的研究给了我们很大的启发,我们决定在他们的研究基础上再做一些研究。根据不同系统负载下所测得的NoSQL数据库性能,我们撰写了这份独立于厂商的NoSQL数据库分析报告。

研究特色

我们所说的NoSQL为非关系型数据库。凭借在容量、弹性和扩展性方面的优势,它们能够存储海量数据,以及与云计算[注]系统协同工作,这些特点让它们深受用户喜爱。NoSQL数据管理系统天生没有表结构,数据模型灵活没有直观的复杂性,并且拥有始终如一的一致性(符合BASE,而不是ACID)。它们拥有一套简洁的API和很高的吞吐量,能够应对海量数据。

2012年,NoSQL数据库的产品数量达到了120余种,目前这一数字还在持续增长之中。产品种类的多样化使得用户难以针对特定案例选择一款最佳工具。数据库厂商通常在定制硬件和软件设置上展示解决方案的优势。为此,我们希望进行一次独立、公开的研究,以对雅虎同行们所做的研究进行补充。

我们对以下四款NoSQL数据库解决方案进行了分析与评估。为了保证研究过程的透明以及结果的可验证性,同时将硬件差异导致的评估错误降到最低,我们选择使用亚马逊的虚拟机。

■Cassandra:一种列族存储

■HBase :同样采用面向列的存储

■MongoDB:一种面向文档的数据库

■Riak:一种键值存储

我们还以这四款NoSQL数据库为基准测试了MySQL集群和分片式MySQL。一些测试结果被公布后,部分观察人士认为,MongoDB不应该与其他NoSQL数据库进行比较,因为MongoDB更多的是以直接与内存协作为目标。我们也非常清楚这一点。不过,这次研究的目的是为不同的NoSQL数据库确定最佳使用案例,因此我们忽略了这些数据库各自所具有的特点,选择在相同环境中对它们进行测评。

工具、库和研究方法

为了确定测试基准,我们使用了YCSB(雅虎云服务基准测试工具)。该工具包括下列组件:

■一个带有工作负载生成器的架构

■ 一组工作负荷场景

我们已经在特定类型的工作负载下测量了数据库的性能。工作负载由指派给两个主要选项的不同分布所明确:

执行哪些操作
读写哪些记录
针对数据存储的操作将随机选择,主要为以下类型:
插入:插入一个新记录。
更新:通过替换字段值更新记录。
读取:读取记录,无论是随机选取的字段还是所有字段。
扫描:以随机选择的记录值为起点按顺序扫描记录,所扫描的记录数量从1至100之间随机选择。
每个工作负载都以一张含有100,000,000份记录的表为目标;每个记录为1,000字节,并包括10个字段。每个记录通过一个类似“user234123.”字符串的主键进行识别。每个字段被依次命名为field0、field1。每个字段的值为由ASCII编码组成的随机字符串,每个大小为100字节。

数据库性能由数据库计算基本操作的速度所衡量。基本操作指由工作负载执行器所执行的操作,其职责是驱动多客户端线程。每个线程都通过一系列的数据库接口调用来加载数据(加载阶段),并执行工作负载(处理阶段)。由于线程可控制生成请求的速率,因此我们可以直接控制数据库的输入负载强度。此外,线程可以测量延时和操作的吞吐量,并将这些测量数据报告给统计模块。

1234

参考资料

1.云计算:(Cloud Computing)描述了一种基于互联网的新的IT服务增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展而且经常是虚拟化的资源。云计算是继1980年代大型计算机到...详情>>

[责任编辑:孙可 sun_ke@cnw.com.cn]