阅读更多

0顶
1踩

数据库
导读:NoSQL数据库系统发展迅速,常见的有Redis,Tarantool ,CouchBase等等。那么对于用户来说,该如何选择呢?接下来我们将会结合性能测试工具Yahoo! Cloud Serving Benchmark(YCSB)来对几款常用内存NoSQL进行性能对比,以找出最优方案。

本文主要内容是测试了不同NoSQL数据库在测试工具YCSB中的表现。我们选取了3款流行的内存(in-memory)数据库管理系统:Redis,Tarantool 以及 CouchBase,还有缓存系统Memchached。Memchached虽然不属于数据库管理系统但常作为快速存储系统使用。

测试环境由4台在Microsoft Azure Cloud中的虚拟机组成的计算机组组成。这些虚拟机同属于一个数据中心。nosql-1和nosql-2用作测试Tarantool和CouchBase,nosql-3和nosql-4用作测试Redis,Azure Redis Cache 以及 Memcached。这些机器都安装和配置了相应数据库和测试项目。虚拟机的配置为4核A3 CPU,7GB RAM,120GB硬盘。

数据库及设置


内存数据库管理系统会存储所有在主内存中的数据并在磁碟上进行持续更新操作;透过日志记录每个数据的修改以确保连贯性。由于是以append-only方式进行日志写入,因此它很少遇到瓶颈问题;读取/写入都不会造成频繁的磁碟头移动。



Redis在2009推出,目前的最新版本是3.0.5。我们这里使用的版本是3.0.4,以append-only(只附加)方式进行数据管理,与其配合使用的是Microsoft Azure Redis Cache工具。



Tarantool是一款开源NoSQL数据库管理系统。我们使用的是Tarantool 1.6.7-126-gb35aff9,日志采用write-ahead(先写)模式。Memcached是一款分布式内存缓存系统,这里使用是Memcached 1.4.14-0ubuntu9。



Couchbase Server是开源分布式NoSQL面向文档数据库,这里使用的版本是Couchbase 4.0.0-4047-1。

YCSB测试工具

Yahoo! Cloud Serving Benchmark(YCSB)是功能强大的NoSQL数据库性能测试工具,它提供了6种主要的负载工作类型,以字母A到F来区分。

负载A负责更新操作,极值是50/50的读写操作,如用于进行新近操作记录。负载B负责读取操作,极值是95/5的读写操作,如用于进行图片标签管理,多进行标签读取操作。负载C负载100%的读取操作,如用于进行用户属性获取。负载D以先进先出方式进行插入操作,如用户进行最新数据读取。负载E负责小范围记录读取而不是单个记录读取,如线程会话。负载F负责记录的读取,修改和写入,如用户信息管理。

我们对配置文件作了两处参数修改:数据条目recordcount设为200000,操作条目operationcount设为5000000。YCSB是多线程工具,我们将以8, 16, 32, 64, 128 及256 线程来进行测试。详细的测试脚本请点击这里进行下载。

下列测试结果图以颜色进行测试对象区分,
  • Tarantool (HASH) (蓝)
  • Tarantool (TREE)(浅蓝)
  • Redis (红)
  • Azure Redis Cache (橙)
  • Memcached (绿)
  • CouchBase(黑)
















更多图片请点击[这里]查看。
结论

Tarantool在所有负载类型测试中皆取得了最优成绩。它创建了一个无锁内存引擎,以协同多任务方式进行操作而不是互斥或并行处理方式。根据以下性能图表现,我们的结论是Tarantool的高吞吐量处理是其最大优势之一。因此在多数场合下,Tarantool是用户的最佳选择。

原文:highscalability

译者/伍昆,现就职于必维集团IT信息部,担任IT运营主管一职。热衷于计算机编程和数据库技术。
  • 大小: 17 KB
  • 大小: 16.3 KB
  • 大小: 8 KB
  • 大小: 31 KB
  • 大小: 37.3 KB
  • 大小: 36 KB
  • 大小: 36.6 KB
  • 大小: 34 KB
0
1
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • jasperIreport +Ireport实现金额大写

    Ireport实现金额大写 在irport里面写script脚本 完成转换

  • js之金额大小写转换工具类(测试OK)

    //金额转换 function convertCurrency(money) { //汉字的数字 let cnNums = new Array( “零”, “壹”, “贰”, “叁”, “肆”, “伍”, “陆”, “柒”, “捌”, “玖” ); //基本单位 let cnIntRadice = new Array("", “拾”, “佰”, “仟”); //对应整数部分扩展单位 let cnI...

  • js数字金额转换为英文金额(数字的中英文转化) 修正版

    function englishmoney(num){ var i; var hundreds; var tenth; var one; var thousand; var million; var billion; var numbers; var s var result; if((num=='')||(num==null)) return(''); var str...

  • 【原创】JS 数字转换成英文写法(包含小数)

    【转载请注明出处】:https://blog.csdn.net/Csongxuan/article/details/81706968 最近写了一个项目,需要把数字转换成英文写法,网上找了一些代码,都不是很满意。就自己想着自己写一个,参考了网上的一些想法。基本上可以实现所有数字的的英文转换(包含两位小数)。 (* 小数超过两位,返回原数据,不进行转换) >> 如有不正确的地方,...

  • SQLSERVER金额转换成英文大写的函数

    CREATE FUNCTION [dbo].[f_num_eng] (@num numeric(15,2)) RETURNS varchar(400) WITH ENCRYPTION AS BEGIN --All rights reserved. pbsql DECLARE @i int,@hundreds int,@tenth int,@one int DECLARE @thou...

  • ireport402增加金额转大写的java

    在JasperReport报表中加入大写金额,在报表执行过程中使用scirptlet将存放着数字金额的变量读出转换成大写金额字符串后放入大写金额变量中。报表即可象显示普通字符变量一样显示大写金额。

  • 金额转换为英文大写

    在目前的物流软件中, 经常会遇到客户需要将金额信息转换为英文大写,通过SQL Server中的T-SQL语句编写函数实现如下: Create FUNCTION [dbo].[INV_num_eng] (@num numeric(15,2)) RETURNS varchar(400) WITH ENCRYPTION AS BEGIN –All rights reserve...

  • 小写金额转换成大写金额(JAVA实现)

     package comUtil;/** * 小写金额转换成大写金额 * @author chenzh * @version 1.0 */public class TfAmt {  public static String[] shuri= new String[10];  public static String[] danwei= new String[15];  public sta

  • irepotr 转换金额为大写实际论证

    怎么将ireport 金额转换为大写 java代码金额小写转大写类 package cn.etcom.report; import java.text.DecimalFormat; import net.sf.jasperreports.engine.JRAbstractScriptlet; import net.sf.jasperreports.engin...

  • Java之——数字金额转化为英文金额

    今天,给大家带来一篇基于Java将数字金额转化为英文金额的示例代码,网上有很多类似的代码,但是,它们不是转化错误就是不支持小数,那现在我们就一起实现一个完美的数字金额转化为英文金额的示例代码吧,不多说了,详情参见如下代码: package com.lyz.util; /** * 将数字转化为英文金额 * @author liuyazhuang * */ public class Num

  • VBA 金额转英文大写 数字转英文 EXCEL

    由于自己英语差,懒得转写,就在网上找了个金额转英文大写的VBA程序,但是发现and有时候会漏加,自己就稍微修改了下,程序分享出来。 使用方法:EXCEL→开发工具→Visual Basic→插入模块→然后输入最下面的代码就好了。。当然也可以做成模块导入,方法自己网上查。 函数说明:ConvertCurrencyToEnglish(要转换的数字,[前缀],[后缀]) 第一个参数必填,后两个选填。 不填写的话默认前缀是“SAY US DOLLAR”,后缀是“ ONLY***”。 代码: Public.

  • 用一个按钮把英文首字母全大写

    脚本说明: 第一步:把如下代码加入区域中 function changeCase(frmObj) { var index; var tmpStr; var tmpChar; var preString; var postString; var strlen; tmpStr = frmObj.value.toLowerCase(); strLen = tmpStr.length; if (strL

  • ireport开发报表实现金额大写

    1、工具--选项--ClassPath--Add Folder ,加入TransChineseMoneyScriptlet.class(脚本程序)所在项目的class文件的classes路径,如C:\workspaces\privilege\target\classes\com\smf\report\TransChineseMoneyScriptlet.class,加入的路径为C:\workspa...

  • ireport实现金额小写转大写

    ireport本身没有提供这个方法,但因为ireport完全使用java编写的,所有对java的支持非常好,我们可以利用这一点完美解决。 首先新建一个TransChineseMoneyScriptlet.java继承JRAbstractScriptlet类,具体方法number2CNMontrayUnit实现金额小写转大写的功能,代码如下:(这是本人从网上找的一段金额小写转大写的代码)第一步: ...

  • iReport文书中大写日期,大写金额

    在用iReport制作文书过程中,发现有的需要日期大写,还有金额必须是中文金 额。在这里我采用js来做 function test(){ var data = {}; var result = formPage.formSubmit({case_id:case_id.getValue()},{ model:'model:com.chinacreator.zzzhzf.print.m...

  • irport报表,把数字金额转换成大写人民币金额

    1、编写oracle函数 1 CREATE OR REPLACE Function MoneyToChinese(Money In Number) Return Varchar2 Is 2 strYuan Varchar2(150); 3 strYuanFen Varchar2(152); 4 numLenYuan Number...

  • 数字转换成英文 金额转成英文大写

    /****** Object: UserDefinedFunction [dbo].[NumberToStr] Script Date: 03/20/2017 23:38:14 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO --创建函数 ALTER FUNCTION [dbo].[Numbe...

  • 金额转英文

    /** * 金额转英文 */ public class MoneyUtil { public static String parse(String str) { int z = str.indexOf("."); // 取小数点位置 String lstr = "", rstr = ""; if (z > -1) { // 看是否...

Global site tag (gtag.js) - Google Analytics