以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-RedisYCSB-JDBC


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM