Yahoo! Cloud Serving Benchmark
前言
该工具是大二唯一看过完整源码的程序
仅在此总结为一篇文章;
工具简介
Yahoo! Cloud Serving Benchmark (YCSB) 。是 Yahoo 公司的一个用来对云服务进行基础测试的工具。
使用方法:
./bin/ycsb load redis -P workloada/workload -p redis.host=localhost
使用过程
- 操作系统:ubuntu
- 以测试redis数据库的性能为例:
安装及使用
- 安装redis
wget http://download.redis.io/releases/redis-3.0.0.tar.gz |
- 安装java
java -version # 假如已安装,则不需再次安装 |
- 安装并运行YCSB
wget https://github.com/downloads/brianfrankcooper/YCSB/ycsb-0.1.4.tar.gz |
解读参数
YCSB Client 0.1 |
参数含义
参数 -P workload/workloada
用于加载配置文件,如
./bin/ycsb load redis -p redis.host=localhost -P workload/workloada > test_redis.txt |
workloada文件解析如下:
recordcount=1000 // 执行操作记录数 |
其他细节
- recordcount 和 operationcount
# workload配置 |
load 和 run
load
执行的是【INSERT操作】run
执行的是配置文件中的操作,如
readproportion=0.5
updateproportion=0.5将执行50%的【READ】和50%的【UPDATE】
概率分布
代码概述
命令./bin/ycsb run redis -p redis.host=localhost -P workload/workloada
在代码中会经过两个阶段:
- 读取命令参数:
- 分析终端中的命令参数
- 读取分析-P worklod/workload* 文件中的参数
- 根据(一)中的参数进行相应的数据库测试操作
- 根据YCSB目录下诸如
./hbase
;./redis
;./mongodb
等文件夹中对应的*Client.java
连接相应的数据库,以及该类文件提供的insert
,delete
,update
,scan
四种基本方法对数据库进行操作 - 上述四种操作的执行嵌套在
DBWrapper.java
中,DBWrapper实际上是一个包装类,将对上述执行操作进行额外的统计(如每条操作所需的时间
) DBWrapper
收集到的每次操作的数据最终将在com.yahoo.ycsb.measurements
以及com.yahoo.ycsb.measurements.exporter
package中汇总和格式化:(如test_redis.txt
中显示的格式)- 值得注意,在
com.yahoo.ycsb.generator package
所有类的作用,是因为非关系数据库
是key-value
的模式,我们将通过该generator生成可用且不重复的key值
- 值得注意,在
- 根据YCSB目录下诸如
尾声
据说YCSB
的一大优点在于其扩展性,然而编写代码仍是件很烦躁的事情(对不熟悉JAVA
的同学更是如此),tips:参考*Client.java文件,实现对特定数据库的连接和CRUD
基本操作,即可生成想要的结果。
附录
- 安装tcl8.5或更改版本
wget http://downloads.sourceforge.net/tcl/tcl8.6.4-src.tar.gz |