abbshr / abbshr.github.io

人们往往接受流行,不是因为想要与众不同,而是因为害怕与众不同
http://digitalpie.cf
444 stars 44 forks source link

Biter loggers 2:LevelDB #7

Open abbshr opened 10 years ago

abbshr commented 10 years ago

Log 3:拆Blocks之前

BitCoin Explorer环境配置就绪,下一步就可以利用Blocks做任何想做的了。

insight-api和bitcoinjs都使用Google出品的LevelDB作Transaction持久化。因此有必要了解一下LevelDB。

Key Words:

关键词中描述了LevelDB的主要特性。很明了,这里不再赘述。


作为一个嵌入式数据库,像SQLite和Node embed nosql database一样。没有服务进程一说,这也恰恰凸显embed database目标——轻量级。

虽说是小型的数据库,但从关键词描述中可以看出——其性能仍很强劲。Google的一个benchmarks给出了levelDB和SQLite的性能测试图表。

使用

作为一个开源项目,levelDB自然提供了不同编程语言的Wrapper。这里有两种基本使用方式:

为了尽快了解它,可以先用用它的lib。

编译

过程与其他项目大同小异。

git clone https://code.google.com/p/leveldb/ && cd leveldb

其Makefile将它编译为静态链接库.a,也可以选择编译为动态链接库.so,这就需要修改一下Makefile:_CTRL + F_查找:

LIBRARY = libleveldb.a
$(AR) -rs $@ $(LIBOBJECTS)

分别改为:

LIBRARY = libleveldb.so
gcc -shared -fPIC  -o $@ $(LIBOBJECTS)

开始编译:

make
cp libleveldb.so /usr/local/lib/
cp -r include/leveldb /usr/local/include/
sudo ldconfig

这时就可以在C/C++ 代码中引用libleveldb了:

#include "leveldb/db.h"

Note:g++需要包含-lleveldb-lpthread参数编译程序

g++ -o leveldbtest leveldbtest.cc -lleveldb -lpthread

之后可以写个test练习练习什么的~ example可以参见Quick GuideGoogle官方示例