RiakのLink機能をJavaクライアントで操作する

RiakにはLinkという機能があるようです。

http://docs.basho.com/riak/latest/tutorials/fast-track/Links-and-Link-Walking/

どんなものか、Javaのクライアントから操作してみようと思います。

Javaクライアントの導入はこちら。
RiakにJavaで接続する(riak-java-client使用)




サンプルプログラム



Javaでリンクを設定するプログラムはこんな感じになりました。


  1. package com.fc2.blog68.symfoware;
  2. import com.basho.riak.client.IRiakClient;
  3. import com.basho.riak.client.IRiakObject;
  4. import com.basho.riak.client.RiakFactory;
  5. import com.basho.riak.client.RiakLink;
  6. import com.basho.riak.client.bucket.Bucket;
  7. import com.basho.riak.client.builders.RiakObjectBuilder;
  8. public class RiakLinkSample {
  9.     
  10.     public static void main(String[] args) throws Exception {
  11.         
  12.         // Riakサーバーに接続
  13.         IRiakClient riakClient = RiakFactory.pbcClient("192.168.1.5", 8087);
  14.         // バケットを作成
  15.         Bucket myBucket = riakClient.createBucket("myBucket").execute();
  16.         
  17.         //キーとなる情報を作成
  18.         myBucket.store("anko", "Ⅳ号戦車D型").execute();
  19.         myBucket.store("class2", "高校二年生").execute();
  20.         
  21.         //データを登録
  22.         RiakObjectBuilder ob = RiakObjectBuilder.newBuilder("myBucket", "nishizumi");
  23.         ob.withValue("西住 みほ");
  24.         ob.addLink("myBucket", "anko", "tank");
  25.         ob.addLink("myBucket", "class2", "class");
  26.         myBucket.store(ob.build()).execute();
  27.         
  28.         // 登録したデータを検索
  29.         IRiakObject obj = myBucket.fetch("nishizumi").execute();
  30.         System.out.println( obj.getValueAsString());
  31.         
  32.         // リンク情報を表示
  33.         for(RiakLink objLink : obj.getLinks()) {
  34.             System.out.println("--------------");
  35.             System.out.println(objLink.getBucket());
  36.             System.out.println(objLink.getKey());
  37.             System.out.println(objLink.getTag());
  38.             
  39.             // 取得したリンク情報を元に、データを取得
  40.             Bucket linkBucket = riakClient.createBucket(objLink.getBucket()).execute();
  41.             String tankName = linkBucket.fetch(objLink.getKey()).execute().getValueAsString();
  42.             System.out.println(tankName);
  43.             
  44.         }
  45.         
  46.         // サーバーとの接続終了
  47.         riakClient.shutdown();
  48.     }
  49. }




実行してみると、こんな結果が表示されると思います。


西住 みほ
--------------
myBucket
anko
tank
Ⅳ号戦車D型
--------------
myBucket
class2
class
高校二年生





リンクが設定されていると、自動的にリンク先の情報も取得してくれると思っていましたが、
どうやらどうじゃないみたいです。
関連記事

コメント

非公開コメント

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
Symfoware まとめ

PR




検索フォーム

月別アーカイブ