NoSQL性能测试:MongoDB VS SequoiaDB
作 为NoSQL的一个重要类型,文档型NoSQL通常被认为是最接近传统关系型数据库的NoSQL。文档型NoSQL的核心是数据嵌套,这种设计可以从某种 程度上大大简化传统数据库复杂的关联问题。同时由于摆脱了关系模型里面的强一致性限制,文档型NoSQL还可以做到水平扩张与高可用。相比其他的 NoSQL类型,文档型NoSQL的应用范围要广泛的多。
常见的文档型NoSQL包括MongoDB、CouchDB等,其中MongoDB是一个高性能、开源、无模式的文档型数据库,它在许多场景下可用于替 代传统的关系型数据库或键/值存储方式,MongoDB使用C++开发,提供了很多功能,如面向集合的存储、动态查询、完整的索引支持、查询监视、复制及 自动故障转移、高效的传统存储方式、自动分片以支持云级别的伸缩性。
SequoiaDB(巨杉数据库)作为文档型NoSQL家族中的新成员,其企业级的新特性颇受关注。根据SequoiaDB官网的描述,该数据库在提供 文档类JSON接口的同时,能够替代HBase作为Hadoop的存储引擎。与MongoDB相比,其Hadoop接口较为完善。因此,本文将 MongoDB与SequoiaDB两款文档型NoSQL同时进行测试,对比两者的功能和性能。
一、测试环境
本次测试基于的环境是6台刀片机,每台的配置为4核AMD Opteron 2378 2.4GHz,内存4GB的服务器,2x150GB Raid 0本地磁盘。操作系统使用SLES 11SP2(Kernel:3.0.13-0.27-default x86_64)。
MongoDB部署在6台刀片机上,每台物理机作为一个单节点Shard。其中两台物理机还部署了Config Server,另外一台物理机部署了mongos进程。
SequoiaDB部署在6台刀片机上,每台物理机作为一个单节点复制组,其中两台物理机还部署了编目节点,另外一台物理机部署了协调节点。
MongoDB与SequoiaDB均使用“id”作为分区键字段,每条记录平均550字节,均采用手工指定分区方式分区。
二、主要功能对比

三、命令行操作对比
以下命令行完成创建表(集合)、插入数据、查询数据、删除表(集合)四种操作。
1、MongoDB

2、SequoiaDB

四、主要性能对比
1、单节点单线程场景
测试环境:1台刀片机,SequoiaDB/MongoDB为独立模式。
录入场景:使用单线程本地TCPIP连接,插入1亿条记录。
查询场景:使用单线程本地TCPIP连接,使用集合扫描1亿条记录,返回最后一条。
(1)数据录入
X轴代表数据库内包含的记录总数,Y轴代表数据库每秒插入记录数量。

(2)数据录入(平均)
Y轴代表数据库平均每秒插入记录数量。

(3)数据查询
Y轴代表数据库平均每秒扫描记录数量。

(4)占用空间
Y轴代表插入1亿条记录后所占用的存储空间(单位MB)。

从以上测试结果可以看出,SequoiaDB在单节点、单线程的使用场景下,插入性能优于MongoDB,在查找某一特定记录方面MongoDB略快于 SequoiaDB,在特性方面,MongoDB的异步插入相当于批量插入,而SequoiaDB的压缩插入在比较占优势,性能相对自身的批量插入提高了 将近一倍,而空间节约就更加可观了。
2、多节点多线程环境
测试环境:6台HP刀片机,SequoiaDB/MongoDB为集群模式。
录入场景:每台机器使用5线程本地TCPIP连接(总共30线程),总共插入1亿2千万条记录。
查询场景:每台机器使用5线程本地TCPIP连接(总共30线程),每线程使用集合扫描1亿2千万条记录,返回最后一条。
(1)数据录入
X轴代表每条线程插入的记录总数,Y轴代表数据库单条线程每秒插入记录数量。

(2)数据录入(平均)
Y轴代表数据库单条线程平均每秒插入记录数量。

(3)数据查询
Y轴代表数据库单条线程平均每秒扫描记录数量。

(4)表扫描
X轴代表每条数据库中存在的记录总数,Y轴代表数据库单条线程每秒扫描记录数量。

(5)占用空间
Y轴代表插入1亿2千万条记录后所占用的总的存储空间(单位MB)。

在同等情况下,都采用6个分区和手动分区,MongoDB也禁用了balancer,对MongoDB和SequoiaDB共有特性进行对比测试。从以 上测试结果可以看出,SequoiaDB的插入性能在并发情况下也远远优于MongoDB,虽然MongoDB在查询特定记录方面还是略胜一筹,但是从引 入全表扫描的结果来看,一旦客户端查询并且取回记录集时,SequoiaDB优势突显。
五、总结
MongoDB和SequoiaDB作为文档型NoSQL的代表,在功能和性能表现上各有千秋。通过本次测试能够看出,MongoDB和 SequoiaDB的性能都很强劲,其中SequoiaDB更是表现不俗,相信在不久的将来SequoiaDB能够独当一面,打开企业级NoSQL市场的 局面。
NoSQL性能测试:MongoDB VS SequoiaDB的更多相关文章
- 【NoSql】MongoDb
		
[NoSql]MongoDb 一. 文档 1. 官网 2. C# Driver 3. C# 开发文档 二. 命令 1. --config "C:\mongodb\mongod.cfg&quo ...
 - 2020重新出发,NOSQL,MongoDB是什么?
		
什么是MongoDB ? MongoDB 是一个开源的文档数据库,它基于 C++ 语言编写,性能高,可用性强,能够自动扩展. MongoDB 是最流行的 NoSQL 数据库之一,原生支持分布式集群架构 ...
 - Linux系统安装NoSQL(MongoDB和Redis)步骤及问题解决办法
		
➠更多技术干货请戳:听云博客 如下是我工作中的记录,介绍的是linux系统下NoSQL:MongoDB和Redis的安装过程和遇到的问题以及解决办法: 需要的朋友可以按照如下步骤进行安装,可以快速安装 ...
 - NoSQL数据库Mongodb副本集架构(Replica Set)高可用部署
		
NoSQL数据库Mongodb副本集架构(Replica Set)高可用部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. MongoDB 是一个基于分布式文件存储的数据库.由 C ...
 - NoSQL性能测试工具YCSB-Running a Workload
		
写在前面 目前,在系统设计中引入了越来越多的NoSQL产品,例如Redis/ MongoDB/ HBase等,其中性能指标往往会成为权衡不同NoSQL产品的关键因素.对这些产品在性能表现和产品选择上的 ...
 - NoSQL和MongoDB
		
NoSQL(NoSQL=Not Only SQL),意即“不仅仅是SQL”.关系数据库关注在关系上,NoSQL关注在存储上. 发展背景 (1)传统关系型数据库遇到了性能瓶颈. 高并发读写(High ...
 - NoSql 中Mongodb数据库的使用
		
1.NoSql数据库简介 2.MongoDB数据库的简介 3.MongoDB下Windows下的安装
 - 浅谈NoSQL之MongoDB数据库
		
对于SQL数据库(关系型数据库)我们大家都有所了解,比如MySQL,sqlserver,oracle等数据库.在日常的开发过程中我们遇到服务器端的数据存储时几乎第一反应就是使用SQL据库像我们最常见的 ...
 - NoSQL与MongoDB介绍
		
写在前面 本文是由一次演讲整理出来的,文中大部分资料来源于网络,感谢Wikipedia,Google和MongoDB官网.文中使用的MongoDB版本为1.2.4. What is NoSQL NoS ...
 
随机推荐
- 怎样用VB自动更新应用程序
			
具体程序实现如下:在应用程序工程MyApp中的部分代码如下:Option Explicit'编译后的应用程序名称,注意没有后缀 .EXE,本例为MYAPPPrivate Const App_Name ...
 - [课程相关]homework-02
			
一.如何组织代码 因为这个代码比较简单,用函数就足够了,个人觉得没必要用类,杀鸡不必用牛刀. 代码有点长,主要是加了很多判断参数的部分. 提取了一个公共的递归函数. 用了不少全局变量,可能当做参数传入 ...
 - javaweb学习总结二十三(servlet开发之线程安全问题)
			
一:servlet线程安全问题发生的条件 如果多个客户端访问同一个servlet时,发生线程安全问题,那么它们访问的是相同的资源.如果访问 的不是相同资源,则不存在线程安全问题. 实例1:不会产生线程 ...
 - CF Tavas and Karafs (二分)
			
Tavas and Karafs time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
 - hdu 1423 最长公共递增子序列
			
这题一开始把我给坑了,我还没知道LCIS的算法,然后就慢慢搞吧,幸运的是还真写出来了,只不过麻烦了一点. 我是将该题转换为多条线段相交,然后找出最多多少条不相交,并且其数值死递增的. 代码如下: #i ...
 - 用java调用oracle存储过程总结(转)
			
//1.call+包名+存储过程名(传入.传出值用?) String str="{call SMSBUSINESS.deleteZhZMember(?,?,?)}"; //2.建立 ...
 - php-fpm配置文件详解
			
第一部分:FPM 配置 参数 | 说明 -p | 命令行中动态修改--prefix ;include=etc/fpm.d/*.conf | 用于包含一个或多个文件,如果glob(3)存在(glob() ...
 - HDOJ2014青年歌手大奖赛_评委会打分
			
青年歌手大奖赛_评委会打分 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
 - iBeacon
			
iBeacon[1] 是苹果公司2013年9月发布的移动设备用OS(iOS7)上配备的新功能.其工作方式是,配备有 低功耗蓝牙(BLE)通信功能的设备使用BLE技术向周围发送自己特有的ID,接收到该I ...
 - 做SqlDependency总结的一些经验
			
1.--查询是否具有Broker功能 select is_broker_enabled from sys.databases where [name]='DBName' 2.--打开Broker功能 ...