以Redis和JDBC(MySQL)为例介绍YCSB的使用
环境
首先确保安装了jdk和maven,我个人使用的是openjdk11和maven3,由于本人非常建议使用python版本的ycsb,建议安装python。ubuntu 18.04下可以使用apt安装:
apt install openjdk-11-jdk-headless maven python
时代问题
需要注意的是ycsb这个项目蛮老的,用的还是python2,用python3的话亲测有语法错误。
如果你需要在ycsb中使用mongodb,或者想全部编译,就需要注意这点,由于mongodb-async-driver已经废弃了,YCSB无法编译,如果不想费心思改代码的话,就需要把这个jar包找到安装到本地maven,jar包下载:
百度云下载位置
之后安装到本地
mvn install:install-file "-Dfile=mongodb-async-driver-2.0.1.jar" "-DgroupId=com.allanbank" "-DartifactId=mongodb-async-driver" "-Dversion=2.0.1" "-Dpackaging=jar"
不加引号的话Linux下没问题,Windows会有问题。
使用YCSB
不建议使用官方编译好的版本,建议自己编译,地址在YCSB,clone的时候建议浅克隆
git clone --depth 1 https://github.com/brianfrankcooper/YCSB
cd YCSB
之后因为需要很多乱七八糟的库,不建议直接mvn clean package
,部分编译比较好,
如安装Redis测试工具,则
mvn -pl site.ycsb:redis-binding -am clean package
对于所有需要jdbc的,则
mvn -pl site.ycsb:jdbc-binding -am clean package
之后,就可以使用ycsb了,因为不管是bat文件还是sh文件,维护都不够,github上一堆相关issues,建议用python版本,就是./bin/ycsb
,以redis为例,方法为
bin/ycsb load redis -s -P workloads/workloada -p "redis.host=127.0.0.1" -p "redis.port=6379" > redis-load-workloada.log
bin/ycsb run redis -s -P workloads/workloada -p "redis.host=127.0.0.1" -p "redis.port=6379" >redis-run-workloada.log
测jdbc稍微复杂点,需要做以下三件事:
- 在数据库中创建以下表:
CREATE TABLE usertable (
YCSB_KEY VARCHAR(255) PRIMARY KEY,
FIELD0 TEXT, FIELD1 TEXT,
FIELD2 TEXT, FIELD3 TEXT,
FIELD4 TEXT, FIELD5 TEXT,
FIELD6 TEXT, FIELD7 TEXT,
FIELD8 TEXT, FIELD9 TEXT
);
- 新建一个"db.properties"文件,内容类似于:
db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://127.0.0.1:3306/ycsb
db.user=admin
db.passwd=admin
- 手动指定数据库Driver的位置
最终命令如下所示
bin/ycsb load jdbc -s -P workloads/workloada -P db.properties -cp mysql-connector-java.jar > mysql-load-workloada.log
bin/ycsb run jdbc -s -P workloads/workloada -P db.properties -cp mysql-connector-java.jar > mysql-run-workloada.log
如果本文中方法有问题可能是更新了,可以看官方YCSB-Redis和YCSB-JDBC。