【编者按】在《先锋》系列的 事务、高性能,王涛谈打造超越MongoDB的NoSQL一文中,我们与王涛浅谈了高性能,拥有事务的SequoiaDB打造经验。应读者需求,从数据上解读各个NoSQL的优势,我们同时邀请了国内外相关专家对MongoDB、SequoiaDB、Cassandra、HBase四个NoSQL进行基准测试,并公布测试用例、相关数据及测试规则。本次我们将给大家放出国内专家的测评,仅供参考。PS:为了方便传阅,特别为大家准备了PDF版本,点击下载 。
下为测试资料
在本篇测试报告中,我们使用Yahoo!发布的标准YCSB测试规则,对MongoDB、SequoiaDB、Cassandra、HBase进行对比,并尝试给出每种不同产品所适用的应用场景。在测试配置中,我们尽可能对全部产品做到高可用配置,而在一致性级别上则使用最终一致性。
在测试中我们会对两种类型的NoSQL数据库做横向对比,包括Document-Oriented文档类数据库、以及Big-Table宽表类数据库。由于每种类型的数据库具有很多自己独特的特性,我们不能将每种特性一一表现在该测评结果中。本测试主要针对数据库在不同任务类型下的性能指标进行,且仅依赖YCSB所提供的标准测试流程。
本测试将详细列出测试的物理环境以及配置信息,以便于读者能够使用自己的环境独立验证结果。
测试概要
1. 测试产品
本测试主要对比两种类型的NoSQL数据库,包括四款不同的产品:
MongoDB(文档类,V2.6.1) SequoiaDB(文档类,V1.8) HBase(宽表类,V0.94.6-CDH 4.5.0) Cassandra(宽表类,V1.1.12)
其中MongoDB作为当前市场占有率最高的数据库,可能是众多读者所关心的产品,提供丰富的数据库功能,号称是最接近关系型数据库的NoSQL产品;而SequoiaDB由前IBM DB2团队的研发人员创建,据称在性能和功能上能够与MongoDB做正面抗衡,同样提供很多MongoDB所提供的功能(例如分片、多索引等特性)。
HBase则是Hadoop框架的一员,也已经被广大企业和互联网用户所接受,我们使用的版本0.94.6是跟随CDH 4.5.0安装包的版本;而Cassandra则是与HBase类似的产品,由Facebook研发并进行开源,同样拥有广大的用户市场。
我们的测试使用由Yahoo!研究院发布的Yahoo Cloud Serving Benchmark (YCSB)基准测试,并将接口对各自产品的最新版进行了修改和适配。我们在正文后的附录中也提供了SequoiaDB的YCSB测试接口。
需要重新强调的是,每种不同的产品都有各自的应用场景。YCSB测试尽管是Yahoo!研究院提供的测试框架,但是在很多场景下并不能完全发挥出每个产品各自的特点。在本测试中,我们尝试使用YCSB框架给出最为客观的评估结果。如果对于该测试结果或配置存在疑问,我们欢迎广大读者根据自身需要重新调整,并将结果开放以供参考。
2. 测试场景
YCSB测试框架提供了丰富的场景配置机制,允许用户根据需要选择需要导入的数据量和增删改查之间相应的比例。在本测试中,我们导入一亿条数据,并对如下场景进行对比。
场景编号 场景分类 描述 1 单条记录导入 单条记录导入 2 批量记录导入 批量记录导入 3 单纯查询 100%查询 4 查询导入平衡 50%导入,50%查询 5 更新为主 95%更新,5%查询 6 查询为主 95%查询,5%更新 7 查询最新 95%查询,5%导入
对于数据导入的场景,我们对单条记录插入和批量插入两个场景进行了区分。对于一些数据库来说,默认配置会在客户端将一批记录打包并统一发送给服务器,对于这类产品,尽管其接口为单条记录操作,我们依然将其归类为批量记录导入模式。
写入和查询的数据模拟典型日志记录的长度,具有以下特性:
特性 描述 字段数 10字段 字段名长度 6字节 记录总大小 100Bytes 全部字段类型 字符串 主键长度 23字节 总记录数 1亿条 总裸数据量 大约100GB 数据副本份数 3
其中,SequoiaDB与MongoDB的分片均配置为一主两从;HBase所在的HDFS设置复制份数为3;Cassandra建表时使用参数replication_factor=2。
一致性级别上,我们使用最弱的最终一致性,读写的write concern均设置为1。
3. 测试环境
本测试中,测试环境总共包含4台Dell R520物理机作为数据存储。生成数据的YCSB程序与数据库运行在同一物理环境。
注:如使用独立服务器进行YCSB的数据生成,会导致千兆网瓶颈。
整个集群的拓扑结构如图1所示:
图1:测试集群拓扑
服务器环境。本测试数据库服务器使用4台Dell R520物理机环境,每台物理机配置如下:
类型 参数 CPU Intel(R) Xeon® CPU E5-2420 1.9GHZ (6 core) 内存 DDR3 48GB 磁盘 6块内置SATA硬盘,2TB/块 网络 千兆以太网 操作系统 Red Hat Enterprise Linux Server release 6.4
kernel-release:2.6.32-358.e16.x86_64 JDK Oracle JDK 1.6
4. 测试方法
本测试使用YCSB标准,基于四台物理机执行。对于每种不同产品的测试流程如下:
安装软件 基于四节点部署集群,配置时尽可能基于以下准则:
高可用配置 最终一致性 功能与单节点环境保持一致 充分利用硬件资源
在四台物理机中部署YCSB集群,向本地集群写入读取数据 进行数据操作时通过YCSB产生记录的统计数量 根据结果生成Excel文件 针对其他场景重复以上步骤
并发性方面则基于以下规则:
单条记录插入每服务器24条线程 批量记录插入每服务器8条线程 其他所有操作每服务器36条线程
免费订阅“CSDN云计算(左)和CSDN大数据(右)”微信公众号,实时掌握第一手云中消息,了解最新的大数据进展!
CSDN发布虚拟化、Docker、OpenStack、CloudStack、数据中心等相关云计算资讯, 分享Hadoop、Spark、NoSQL/NewSQL、HBase、Impala、内存计算、流计算、机器学习和智能算法等相关大数据观点,提供云计算和大数据技术、平台、实践和产业信息等服务。