YCSB 测试 LevelDB 数据库

本文介绍了如何使用YCSB(Yahoo! Cloud Serving Benchmark)来测试LevelDB数据库的性能。由于LevelDB本身不提供服务端接口,文章详细阐述了如何结合simpleleveldb中间件,设置和运行LevelDB服务端,以及YCSB客户端的配置和执行测试。
部署运行你感兴趣的模型镜像

介绍

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 <json/json.h> 为 #include <json-c/json.h>
打开 simplehttp/simpleleveldb/simpleleveldb.c修改 
#include <json/json.h> 为 #include <json-c/json.h>

由于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

在这里插入图片描述

打开浏览器,地址栏输入
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

您可能感兴趣的与本文相关的镜像

LobeChat

LobeChat

AI应用

LobeChat 是一个开源、高性能的聊天机器人框架。支持语音合成、多模态和可扩展插件系统。支持一键式免费部署私人ChatGPT/LLM 网络应用程序。

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值