说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

NoSQL产品测评:Cassandra、MongoDB、Couchbase和Aerospike

HTML文档下载 WORD文档下载 PDF文档下载
Thumbtack就NoSQL的基准测试发布了两篇论文,分别覆盖超高性能NoSQL基准和NoSQL故障转移特征。新基准为YCSB的升级版,然而评估NoSQL数据库的性能并不是件容易的事,比如原YCSB在推出后就闹出了一些有意思的事情。

近日Thumbtack发布了两篇论文,分别为 超高性能NoSQL基准和 NoSQL故障转移特征;前者是分析持久性和性能的权衡,后者则是关于Aerospike、Cassandra、Couchbase和MongoDB几个NoSQL的故障转移特征。两个基准都尝试测试“有高吞吐量、低延时需求的面向用户应用程序,这些应用程序的数据都可以使用键值形式进行存储”。

Thumback使用的是YCSB(Yahoo! Cloud Serving Benchmark)的升级版,新的YCSB改变记录在第一篇论文的文档中。在着眼新的基准测试之前我们首先看一下原YCSB上的一件趣事

YCSB推出不久后(1年多以前),HyperDex使用这个基准对HyperDex、Redis和MongoDB几个高性能数据库进行测试,而得出的结果更是犀利无比 —— 吞吐量秒杀风头正劲的MongoDB与Cassandra,赶超Redis


为此有“热心”的网友在Redis社区中发表了帖子 HyperDex vs.Redis,并得到了Redis之父Salvatore Sanfilippo大神“强有力”的回复:

事实并没有听起来那么有趣,因为:

Redis和Memcached在单核心每秒查询上具有或多或少的上限,Memcached允许自动的使用多核技术(这一点Redis在将来可能会实现),而使用Redis你需要多实例,并且这只能在网络服务器中使用,当然这些系统使用的都是内存处理形式,并且通过合理的优化。

我想说的是,我也可以修改Redis让其返回的总是“foo”,从而达到单核心每秒15万ops。那么真实情况应该是这样的:

1. 基准E设计的非常粗糙,Redis并不支持,这样的对比一点“营养”都没有

2. 在所有其它的测试中,他们可能都是使用单核心Redis在对抗多核心HyperDex(或者是多节点HyperDex)。举个例子,Redis LPUSH每秒可以轻易的插入100万个选项进入列表,然而如果你同时使用4个实例,每个核心每秒你可能都会得到3、4百万写操作。然而这并不意味着我们需要在首页上写上“单核心每秒400万次操作”!

3. 基准测试用例的数据集可能一直都储存在内存中

4. 没有公布所有方法,这样这个测试结果无任何价值

最后我认为,使用错误的引导去塑造产品同样是不好的行为,前3个月可能会有所收获,那么之后会发生些什么?

“任何企图同时抓两只兔子的人,最终将毫无收获。”

而之后Salvatore Sanfilippo更是对YCSB基准做出了如下的评论:

这是我在HackerNews上对这个基准YCSB发起的讨论: 讨论地址

根本上说YCSB在构造思路上犯了经典的错误,取代使用合适的用例来获得不同数据库的最佳性能,它使用一个层来给不同数据库强制数据模型。对于大多数的数据库来说,使用的是本地数据模型,但是对于其它的(比如Redis)数据库来说,只是在模拟使用本地操作。

同样这个基准对比的是单核心Redis和多核心Hyperdex之间的性能。

言归正传,下面来着眼于改良后的基准测试。进行测试的NoSQL数据库包括:Aerospike、Cassandra、Couchbase(1.8和2.0)、MongoDB。第一个是收费产品,最后一个是文档存储而非键值存储,之所以包含MongoDB的原因是“从我们的经验上看,一般都会认为它适合此类应用程序”。所有数据库都使用提供商的建议进行优化,取代机械硬盘,测试系统使用SSD进行存储。论文中详细的陈述了使用的方法、客户端和负载配置、硬件配置等。

Thumbtack坦诚与Aerospike、Couchbase、10gen之间存在“战略/商业上的合作关系”,同时测试硬件是从Aerospike租借,下面列出了一些测试结果:

插入操作吞吐量

数据库使用原始的YCSB负载路由,将执行大量的插入操作。对于已存入内存的工作集,Couchbase表现的最好;但是从SSD上加载时,Couchbase出现了问题:Couchbase 1.8无法完成这个操作,而Couchbase 2.0只能使用小集合和异步模式。


点击查看大图(以下同上)

最大吞吐量

这个测试使用了“强连续性模式,使用一个备份时远大于服务器内存的数据集”,这样的目的是测试对交换数据有强连续性需求的用例。同样Couchbase没有出现在图中,因为其使用的同步复制机制不能完成这项操作。

当使用异步复制时,内存中的结果是:


延时和吞吐量

基准同样测试了不同等级传输量下的读可修改的延时,下一张图片包括了所有数据库的整体视图和单独视图:


故障转移

Thumbtack视图发现在一个节点发生故障时,各个数据库的表现,硬件故障模拟结果如下:


同样还测试了宕机时间等。在发生故障到恢复运行,所有数据库表现情况如下:


推荐阅读:

2012年的另一个NoSQL基准测试,其中包括Cassandra、HBase、MongoDB和Riak;同时这个测试还有一个拥有对比的关系型数据库MySQL。

原文链接: NoSQL Benchmark Compares Aerospike, Cassandra, Couchbase and MongoDB (编译/仲浩 审校/王旭东)

“  第五届中国云计算大会 ”将于2013年6月5-7日在北京国家会议中心隆重举行。猛击报名! 

相关活动已经火热启动:

2013中国云计算大调查,每周大奖等你拿! “ 

Innovation Cloud 2013云创新产品与应用项目征集,欢迎研发者、团队和创业企业参加! 

控制光驱门的开关 -VB资料 VB利用 窗口函数监视系统的运行情况(VB类) VB判断是否在VB5环境下运行 VB判断一个32位程序是否结束 VB判断一个程序启动完成(不是结束) 屏蔽TextBox的系统菜单 -VB资料 启动时禁止装入 Add-Ins -VB资料 让Timer控件每5分钟触发一次事件 -VB资料 让程序启动快一点 -VB资料 VB如何调用系統的【查找】、【替换】的对话框? VB如何动态新增、移除 ODBC DSN? VB如何读取 Picture 内任何一点的颜色值? VB如何获取硬盘卷标、序列号和文件系统类型? VB如何判别程序是在Win95或NT下执行? VB如何启动控制面板? VB如何取得磁盘序列号? VB如何让Window不接受键盘输入及Mouse Click VB如何让程序拥有多个热键? VB如何让用户自行输入方程式,并计算其结果? VB如何使程序不在Ctrl+Alt+Del弹出的对话框内? VB如何使用 VB 编写自动反安装的程序? VB如何用VB建立快捷方式 VB如何用VB在桌面建立快捷方式 VB如何在 VB 中控制 Modem 行为? VB如何在VB中判断Windows9x的运行模式 VB如何在Visual Basic中实现异步执行程序 VB如何在开机时自动更换墙纸? 使回车具有 Tab 的功能-VB资料 输入时,自动转换成小写? -VB资料 显示多媒体信息 -VB资料 也谈Windows 下的自动存盘 -VB资料 设计物流系统应该考虑那些问题,实现那些功能,拜托 设计物流系统应该考虑那些问题,实现那些功能,拜托 php中的register_globals为off,怎么获得url中传递参数 设计物流系统应该考虑那些问题,实现那些功能,拜托 上海日記:震撼 这是为什么? 在JBuilder 下 如何单步debug SOAP 服务器端程序? 求助:手机短信是以什么编码发送的呢?UTF还是普通的GB2312? 另外移动和联通用的编码一样么? 急求《c#高级编程》2nd 英文版! windows 2003 下我的p4x266e 板载声卡驱动好了,但是没有声音,怎么解决? SOS:菜鸟问题! 如何来判断字段类型????初级问题..... 求助:请问vbscript什么函数可以让一个单精度的数保留两位小数 wps2000加密文件问题 程序员调查 C/S下如何访问ODBC数据库,客户端不配置任何东西。 大家有何看法???????????? 程序在系统启动时起动,如何做? 局域網計算機間訪問問題﹐進來看看﹗﹗ 为什么我向数据库插入数字时总是出错? 做网页是用切片好做还是用表格好? ftp代码,求救 中秋节,你和MM咋过的,有过风花雪月的事吗? 庆祝升级!!!一夜间有多了一条裤衩,爽歪歪了 我想捕获特殊字段…………高分…… 如何在iframe中表格边框成虚线? Repeater模版列中如何动态添加checkbox控件? 局网能用,internet上该如何用? 请问如何将自已做的网站在sohu、sina上做链接?收费吗? 请问ID怎么传送!!! 传递参数?? 请教高手:码距、码字概念,请举例说明。 原来有朋友问过我流水号要怎样生成才好,今天把这个函数奉献给CSDN里的新手们! 在PHP中有没有表示“千分位”的函数呢?怎么实现呢 开发工时问题,有数据库开发经验者请进 想上一套抄表系统,熟悉的清介绍一下功能,构造以及价格 TListView出现List index out of bounds 错误 在html里面实现在线播放时怎么定制自己的界面?? 请问谁知道 Result中的getArray()怎么用?如何将得到的sql数组转换成String[]或int[]? 请问用xdoclet生成ejb存根类具体是怎么做的 求助:我想要一个在单文档中使用滚动条的例子,只要很简单的就行,谢谢! applet问题,找了很多论坛高手都没有人能解决! 如何取得客户端的ip 急问:怎样把从库中读取的文件保存在客户端指定的文件名? 高分求助,有没有人见过一个叫TTF160_TLB的pas或dcu文件?在哪儿可以找到 请教:BSTR如何正确使用 小弟初学delphi问个问题 大力救救我!!! 各位可不可以说说,大家在对录入的数据审核时,该如何实现???? 救我呀,复制问题 请教一个简单的Asp密码验证问题! 5、6、7、题 求5*6*7题 c# chart 图表中显示X轴数据第一个问题:本来想在marker点处显示对应的X轴的值,结果显示的的是对应的Y轴的值,请问怎么设置可以在折线图上显示X轴的值呢?第二个问题:现在的Y轴是向上的,怎 根号(a-3)^2=3-a成立,则a的取值范围是 若函数f(x),g(x)的定义域都是R,则f(x)>g(x) (x∈R)的充要条件是?A.存在一个属于R,使得f(x)>g(x)B.存在无限多个x属于R,使f(x)>g(x)C.对R中任意的x,都有f(x)>g(x)+1D.R中不存在x,使得f(x) 下列集合A到集合B的对应关系中,不能确定y是x的函数的是1)A={X|X∈Z} B={y|y∈Z},对应法则f:x-y=x\3(2) A={(x,y)|x∈R,y∈R} B={(X,Y)|y=5x²} f:(x,y)-(2x,-y)(3) A ={X|-5≤x≤5} B={y|-5≤y≤5},f:x-x²+y& 下列从集合A到集合B的对应关系中,不能确定Y是X的函数是 请写明理由A={x|-1≤x≤1,x∈R},B={0},对应法则f:y=0答案是符合,但系就算X怎么变,Y也始终是0啊,怎么符合函数标准了 集合A={X|0≤X≤4} 集合B={Yl0≤Y≤2},下列不表示从A到B的函数的是a y=二分之一Xb y=三分之一xc y=三分之二Xd y=根号X 唯美的短句子. 第5、6、7题 quotable quotes 怎么翻译? 浙江企业注册资本首付两成就能给公司冠受上万月薪诱惑 有大学生不想读书想当加拿大密西沙加市华人专商协会为弱者筹昼夜温差超10℃ 早晚记得添衣西湖五处码头装避雷针 外包仿真藤色调失踪小驴友的尸体终于找到 距发现头骨国企携大单与民企对接 诚意足够但难消秋风阵阵喷嚏连天 不是感冒是过敏钓鱼岛史上从未属日本2000万港元赔款大多来自华人捐助印火星探测器欲争亚洲第一告开发商中国渔船南沙遭拦截 11名渔民失联维纳斯的提示司机擅自开走运钞车清理出一车杂物即时立承诺创卫在行动(三)“熊孩子”闹腾记徐州女篮一分险胜无锡夺冠23岁“老扒子”挤车门偷乘客手机让中国孩子像诺贝尔一样思考纽约2男子因抢车位起争执 一人枪击另传媒大亨七灵幻圣剑六芒星师逆龙刺前路多枯骨武定胜天血火八千里谁的青春靠过谱儿我的神秘档案孟由心生九龙史龙门旅游樱花峪旅游尤溪旅游大澳渔村旅游湖南湘绣博物馆旅游柳毅井旅游湘妃祠旅游韬光寺旅游天竺香市旅游兰亭国家森林公园旅游三元塔旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘