riak-java-clientを使う

RiakにJavaからアクセスするためのライブラリ https://github.com/basho/riak-java-client
をちょっと触ったのでメモ。
LowレベルとHighレベルの2種類のAPIがあるけど、今回は手軽に試せるHighレベルの方で。

つっこむデータの定義

アノテーションで色々指定できる。
IDはアノテーションでなくても指定するインタフェースがあるけど、とりあえずお試しなので。
デフォだとJSON形式で保存されて、マッピングなどは勝手にやってくれる。
基本的な型だったりネストとかしても、とりあえず大丈夫。

public class User {
    @RiakKey // Key
    public String id;
    
    @RiakIndex(name = "age") // Secondary Index
    public long age;
    
    @RiakLinks // Link
    public Collection<RiakLink> links;
}

処理

色々とはしょってるけど、まぁイメージってことで。

IRiakClient client = null;
try {
    client = RiakFactory.pbcClient("host", port);
    Bucket bucket = client.fetchBucket("test").execute();
    
    User user = new User();
    // ・・・略
    bucket.store(user).execute();
    
    // 1件取得
    User fetchUser = bucket.fetch("1000", User.class).execute();
    // 複数件取得
    List<MultiFetchFuture<User>> list = bucket.multiFetch(Arrays.asList(new String[]{"1000", "1001"}), User.class).execute();
    // indexで取得
    List<String> ids = bucket.fetchIndex(IntIndex.named("age_int")).from(30).to(50).execute();
} catch (Exception e) {
    e.printStackTrace();
} finally {
    client.shutdown();
}

というわけで

  • けっこう簡単に使えていい感じ。マッピングとか勝手にやってくれて素敵。
  • IRiakClientは内部でPoolを持ってたりして設定などでPool数などを変更できる。