2013年4月3日水曜日

GroovyからKyoto Cabinetを使用する

いわゆるKVS(キーバリューストア)の実装のひとつであるKyoto CabinetをGroovyから使用する手順は、以下の通り。

前提

  • lib/kyotocabinet.jar(Kyoto CabinetのJavaバインディング)をクラスパスに含める
  • Groovyスクリプト(下記参照)の実行ディレクトリにjkyotocabinet.dll(Kyoto CabinetのDLL)が存在する

手順

下記のGroovyスクリプトを用意する。なお、このスクリプトは、Kyoto CabinetのJavaDocにあるサンプルをGroovyスクリプトにしただけのもの。

import kyotocabinet.*;
// create the object
DB db = new DB();
// open the database
if (!db.open("casket.kch", DB.OWRITER | DB.OCREATE)){
System.err.println("open error: " + db.error());
}
// store records
if (!db.set("foo", "hop") ||
!db.set("bar", "step") ||
!db.set("baz", "jump")){
System.err.println("set error: " + db.error());
}
// retrieve records
String value = db.get("foo");
if (value != null){
System.out.println(value);
} else {
System.err.println("set error: " + db.error());
}
// traverse records
Cursor cur = db.cursor();
cur.jump();
String[] rec;
while ((rec = cur.get_str(true)) != null) {
System.out.println(rec[0] + ":" + rec[1]);
}
cur.disable();
if(!db.close()){
System.err.println("close error: " + db.error());
}
view raw KCSample.groovy hosted with ❤ by GitHub

Gradleから下記のGroovyスクリプトを実行するには、下記のbuild.gradleを使用する。
apply plugin: 'groovy'
apply plugin: 'eclipse'
repositories {
flatDir(dirs: file("lib"))
}
dependencies {
groovy localGroovy()
compile ":kyotocabinet:@jar"
}
task execJava (type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath
main = "KCSample"
}
view raw build.gradle hosted with ❤ by GitHub

execJavaタスクを実行すると、上記のGroovyスクリプトが実行される。


 

感想

別途アプリケーションをインストールすることなくKVSを手軽に利用できるのがよい。ただし、作成されるDBのファイルサイズは小さくない(上記サンプルで6MB程度)。

0 件のコメント:

コメントを投稿