YCSB 测试 LevelDB 数据库

介绍

YCSB 是一种测试数据库的benchmark
它的使用原理是:

A. 目标数据库(待测试的数据库)作为服务端运行起来,
并提供数据库操作相关的restful api,比如

http://localhost:8080/put    
http://localhost:8080/get   
http://localhost:8080/del

B. YCSB Client 作为客户端,通过restful api调用数据库,
从而测试数据库的性能。

运行LevelDB的服务端

leveldb 是不带有服务端功能的,也就是无法提供 restful api 的。
因此我们需要借助一个工具,simplehttp 和 simpleleveldb

git clone https://github.com/bitly/simplehttp.git
cd simplehttp

simpleleveldb 的作用:

simpleleveldb可以提供一套restful api,然后与leveldb数据库对接起来。
这样的话,ycsb 调用restful api,就会先调用simpleleveldb的相关操作,然后simpleleveldb再调用leveldb的相关操作。 完成一个衔接功能,即一个中间件。

simpleleveldb 的安装

首先进入你的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 试运行

打开终端,输入

simpleleveldb --address=localhost --port=8080 --db-file=test

YCSB 测试 LevelDB 数据库_第1张图片

打开浏览器,地址栏输入
http://localhost:8080/put?key=name&value=Niko
然后会显示一段json,状态码是200
在这里插入图片描述
再输入
http://localhost:8080/get?key=name
会显示一个json,状态码是200,并且返回 Niko
在这里插入图片描述

由此,LevelDB的服务端就运行成功了

修改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客户端

下载并编译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

你可能感兴趣的:(YCSB 测试 LevelDB 数据库)