[OSS-tools vol.1] 組み込みKVS、LevelDBで遊ぶ
何となく気になっていたけど今まで使ったことのなかったOSSのツールやライブラリで遊んでみようと思っています。このコーナーは表題にOSS-toolsとつけようと思います。基本的に軽めです。
● LevelDB
記念すべき第一回はLevelDBです。URLはこちら。
https://code.google.com/p/leveldb/
LevelDBとは組み込みKVSの一種で高速な動作が売りだそうです。なんかすごそう。それでは試してみましょう。
●インストール
上記サイトよりソースコードをダウンロードして適当な場所に展開しましょう。私が試したのはver 1.15.0でした。
インストールは、ソースコードを展開したディレクトリに移動して、make。簡単です。その場にsoファイルなどができます。インストール先を指定したかったけど、makefileをいじらないといけないのでしょうか。
●使ってみよう
マニュアルを見つついじってみましょう。
http://leveldb.googlecode.com/svn/trunk/doc/index.html
上記のマニュアルの"Reads And Writes"までの内容を動くコードにすると以下のようになりました。(マニュアル記載の断片を繋げて多少アレンジしただけです。)
#include <iostream>
#include "leveldb/db.h"
int main(){
leveldb::DB *db;
leveldb::Options options;
options.create_if_missing = true;
leveldb::Status status = leveldb::DB::Open(options, "test.db", &db);
if(!status.ok()){
std::cerr << "DB open error." << std::endl;
std::cerr << status.ToString() << std::endl;
}
std::string key;
std::string value1;
key = "abc";
value1 = "def";
status = db->Put(leveldb::WriteOptions(), key, value1);
std::string value2;
status = db->Get(leveldb::ReadOptions(), key, &value2);
std::cerr << "key=" << key << " value=" << value2 << std::endl;
delete db;
}
test.cppというファイル名で保存してビルドします。
$ g++ -I/path/to/leveldb/include -lpthread test.cpp /path/to/leveldb/libleveldb.a -o test
動かします。
$ ./test
key=abc value=def
動いた!
実行後、カレントディレクトリにtest.dbというディレクトリができていました。プログラム中で指定したパスはファイル名だと思っていましたがディレクトリ名のようです。
$ ls test.db/
000005.ldb 000006.log CURRENT LOCK LOG LOG.old MANIFEST-000004
なるほど。
この記事が気に入ったらサポートをしてみませんか?