2009年5月10日日曜日

Tokyo CabinetをUbuntuにインストール

Tokyo Cabinet
Tokyo CabinetはHirabayashi Mikio 氏により新しく実装された高速なDBMです。

DBMというのは、Database Managerの略で、非常にシンプルなキー:バリュー型の
データベースです。プログラミングでいうところのハッシュマップや連想配列、辞書と同じような機能を、ファイル上に永続化して使用できるというようなものです。
Berkeley DBなどが有名です。

Tokyo Cabinetは、とても新しく実装されたDBMで、
高速な処理や非常に大きいデータベースファイルを扱えるなどのすぐれた
特徴を持ち、Java,Perl,Ruby,Lua用のAPIが公式に用意されています。

ClojureでオレオレDBMSを実装するためのバックエンドとして使いたいと思っているので、
今回はまず、UbuntuにTokyo CabinetとJava APIをインストールします。

sudo apt-get update
wget http://tokyocabinet.sourceforge.net/tokyocabinet-1.4.20.tar.gz
sudo apt-get install build-essential
sudo apt-get install zlib1g-dev
sudo apt-get install libbz2-dev

wget http://tokyocabinet.sourceforge.net/tokyocabinet-1.4.20.tar.gz
tar xzvf tokyocabinet-1.4.20.tar.gz
cd tokyocabinet-1.4.20
export CPPFLAGS="-I/usr/lib/jvm/java-6-openjdk/include/"
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
export PATH=$JAVA_HOME/bin:$PATH

./configure
make

ここで前回インストールしたPacoを使用して
sudo make install

のかわりに、
sudo paco -D make install

としてインストールしてみた。
つぎにJava用APIをインストール。

wget http://tokyocabinet.sourceforge.net/javapkg/tokyocabinet-java-1.18.tar.gz
tar xzvf tokyocabinet-java-1.18.tar.gz
cd tokyocabinet-java-1.18
./configure
make
make check
sudo paco -D make install


http://tokyocabinet.sourceforge.net/javadoc/
にあるサンプルを実行。

import tokyocabinet.*;
% cat TCHDBEX.java
import tokyocabinet.*;

public class TCHDBEX {
public static void main(String[] args){
HDB hdb = new HDB();
if(!hdb.open("casket.tch", HDB.OWRITER | HDB.OCREAT)){
int ecode = hdb.ecode();
System.err.println("open error: " + hdb.errmsg(ecode));
}
if(!hdb.put("foo", "hop") ||
!hdb.put("bar", "step") ||
!hdb.put("baz", "jump")){
int ecode = hdb.ecode();
System.err.println("put error: " + hdb.errmsg(ecode));
}
String value = hdb.get("foo");
if(value != null){
System.out.println(value);
} else {
int ecode = hdb.ecode();
System.err.println("get error: " + hdb.errmsg(ecode));
}
hdb.iterinit();
String key;
while((key = hdb.iternext2()) != null){
value = hdb.get(key);
if(value != null){
System.out.println(key + ":" + value);
}
}
if(!hdb.close()){
int ecode = hdb.ecode();
System.err.println("close error: " + hdb.errmsg(ecode));
}

}
}

% javac TCHDBEX.java
% ls
TCHDBEX.class TCHDBEX.java% java TCHDBEX
hop
foo:hop
bar:step
baz:jump

% ls
TCHDBEX.class TCHDBEX.java casket.tch


インストールは成功した模様。

0 件のコメント:

コメントを投稿