LevelDBとKyotoTycoon連携させて試したときのことを書く。

GoogleのLeveldbを動かしてみたときのことを書く。

ソースはgitからとってくる。


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

configureがないのでMakefileをいじる。
いじるのはCFLAGSだけ。
イカのように。


CFLAGS = -c -I. -I./include $(PORT_CFLAGS) $(PLATFORM_CFLAGS) $(OPT) $(SNAPPY_CFLAGS) -fPIC

make
make check

で、普通にmakeできたのでlibleveldb.aを適当なlibディレクトリにコピーして、include/leveldbを適当なincludeディレクトリにコピー。

そのままだとネットワーク越しに使えないので、京都の大君のDBプラグインで使えるようにする。
参考URL:http://fallabs.com/blog-ja/promenade.cgi?id=130
kcとktは別途インストール済みである。


cd kyototycoon-0.9.53/lab/leveldb

プラグインのmakeにkcとktのヘッダ及びライブラリがいるが、これもconfigureがないのでこれもMakefileをいじる。
CPPFLAGSとLDFLAGSにそれぞれkcとktのincludeとlibのパスを指定するだけ。
※独自のインストール先にいれてるので。
んで

make

通ったので、ktplugdblevel.soをktのlibexecディレクトリにコピー。
んで作ったプラグインを指定してとりあえず起動。


ktserver -pldb /usr/local/hoge/kt/libexec/ktplugdblevel.so -host 192.168.0.x -port 19xx -dmn leveldb.ldb

起動した。
ので別のVMから接続テスト。


ktremotemgr set -host 192.168.0.x -port 19xx hoge fuga

setできた。


ktremotemgr get -host 192.168.0.x -port 19xx hoge

fugaとされた。

かんぺこです。

次はクライアントライブラリです。
http://fallabs.com/kyototycoon/spex.html#protocol
↑のプロトコル仕様をみつつ適当に実装するべし。
めんどくさい。
ので、とりあえず京都の大君のmemcachedプラグインでmemcachedプロトコルでleveldbを操作する。
serverプラグイン?なので、起動オプションは

-plsv /usr/local/hoge/kt/libexec/ktplugservmemc.so

dbプラグインは-pldbなので混同しないよう。