YCSB 是一种测试数据库的benchmark
它的使用原理是:
A. 目标数据库(待测试的数据库)作为服务端运行起来,
并提供数据库操作相关的restful api,比如
http://localhost:8080/put
http://localhost:8080/get
http://localhost:8080/del
B. YCSB Client 作为客户端,通过restful api调用数据库,
从而测试数据库的性能。
leveldb 是不带有服务端功能的,也就是无法提供 restful api 的。
因此我们需要借助一个工具,simplehttp 和 simpleleveldb
git clone https://github.com/bitly/simplehttp.git
cd simplehttp
simpleleveldb可以提供一套restful api,然后与leveldb数据库对接起来。
这样的话,ycsb 调用restful api,就会先调用simpleleveldb的相关操作,然后simpleleveldb再调用leveldb的相关操作。 完成一个衔接功能,即一个中间件。
首先进入你的leveldb数据库的源码文件夹,编译并拷贝至shared libraries folder
cd leveldb
make
sudo cp libleveldb.a /usr/local/lib/
其次安装依赖库 JSON :
sudo apt install libjson-c-dev
由于源码中,include的路径有误,因此我们需要修改源码,
打开 simplehttp/simpleleveldb/str_list_set.c修改
#include 为 #include
打开 simplehttp/simpleleveldb/simpleleveldb.c修改
#include 为 #include
由于makefile中,对json库的引用也是错误的,-ljson应改为-ljson-c
打开 makefile
将
LIBS = -L. -L$(LIBSIMPLEHTTP_LIB) -L$(LIBEVENT)/lib -L/usr/local/lib -L$(LIBLEVELDB)/lib -levent -ljson -lsimplehttp -lleveldb -lm -lstdc++ -lsnappy -lpthread
更改为
LIBS = -L. -L$(LIBSIMPLEHTTP_LIB) -L$(LIBEVENT)/lib -L/usr/local/lib -L$(LIBLEVELDB)/lib -levent -ljson-c -lsimplehttp -lleveldb -lm -lstdc++ -lsnappy -lpthread
安装依赖库Snappy :
sudo apt install libsnappy-dev
安装依赖库Event :
根据github的issure : https://github.com/bitly/simplehttp/issues/14
发现simpleleveldb 的依赖库libevent 必须是1.4版本。。千万别装了旧版本,也千万别装了新版本。。
进入网页下载 http://libevent.org/ libevent 1.4.14b版本
cd libevent-1.4.14b-stable
./configure && make
sudo make install
sudo ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2 (非必须,若出错可加)
安装依赖库simplehttp (进入到 simplehttp/simplehttp):
cd simplehttp
make
sudo make install
安装 simpleleveldb
cd simpleleveldb
env LIBLEVELDB=/usr/local make
sudo make install
打开终端,输入
simpleleveldb --address=localhost --port=8080 --db-file=test
打开浏览器,地址栏输入
http://localhost:8080/put?key=name&value=Niko
然后会显示一段json,状态码是200
再输入
http://localhost:8080/get?key=name
会显示一个json,状态码是200,并且返回 Niko
由此,LevelDB的服务端就运行成功了
拷贝leveldb库
cd leveldb
make
sudo cp libleveldb.a /usr/local/lib/
安装 simpleleveldb
cd simpleleveldb
make clean
env LIBLEVELDB=/usr/local make
sudo make install
下载并编译YCSB客户端:
git clone https://github.com/jtsui/ycsb-leveldb.git
cd ycsb-leveldb
mvn -pl com.yahoo.ycsb:leveldb-binding -am clean package
运行YCSB客户端测试数据库
注意,应先启动LevelDB服务端
./ycsb load leveldb -P workloads/workloada
./ycsb run leveldb -P workloads/workloada