Download List

Project Description

Javaで実装された分散キーバリューストア(KVS)です

Githubへ移行しました。 https://github.com/kobedigitallabo/okuyama

今後の更新はGithub上にて行います。 こちらにある過去リリース分はそのまま維持します。

System Requirements

System requirement is not defined

Released at 2011-07-03 04:45
okuyama 0.8.8 (1 files Hide)

Release Notes

[New - 新機能追加、不具合対応]
[[リリース Ver 0.8.8 - (2011/07/3)]]

■ストレージ機能にSerializeMapを追加
データ格納時にメモリ空間を有効利用するSerializeMapという機能を追加。
データを格納するMapに登録するKeyとValueを(デ)シリアライザ外部から自由に指定できるように機能追加
詳しくは以下のBlogを参照
http://d.hatena.ne.jp/okuyamaoo/20110616
http://d.hatena.ne.jp/okuyamaoo/20110623

設定はDataNode.propertiesに以下の項目が追加された
"DataSaveMapType"
"SerializerClassName"

"DataSaveMapType"はSerializeMapの利用を指定
"SerializerClassName"は(デ)シリアライザのクラスを指定
SerializerClassNameで指定するクラスはokuyama.imdst.util.serializemap.ISerializerをインプリメンツする
設定なしは、ConcurrentHashMapを利用する。DefaultはConcurrentHashMap

設定方法)
DataSaveMapType=serialize
SerializerClassName=okuyama.imdst.util.serializemap.ObjectStreamSerializer
ObjectStreamSerializerは現在実装済みの(デ)シリアライザクラス。リリース物に同梱。
※上記でSerializeMapを内部で利用

DataSaveMapType=
SerializerClassName=
※上記で通常のConcurrentHashMapを内部で利用



■okuyamaクライアントからも有効期限を設定可能に
OkuyamaClientのsetValue及び、setNewValueにexpireTimeを渡すことで有効期限(単位は秒)を設定可能
上限時間は、Integerの限界値
例)
okuyamaClient.setValue("Key_XXX", "Value_YYY", new Integer(300));
上記の場合有効期限は300秒


■データ取得と同時にそのデータに設定されている有効期限を登録時に設定した期限分延長するメソッドを
okuyamaクライアントに追加。
メソッド名はgetValueAndUpdateExpireTime
※有効期限が設定させていないデータは何も起こらない
例)
okuyamaClient.setValue("Key_XXX", "Value_YYY", new Integer(300));
String[] getResult = okuyamaClient.getValueAndUpdateExpireTime("Key_XXX");
※上記のsetValue時に設定された300秒という有効期限が、getValueAndUpdateExpireTime呼び出し時に再度300秒で
自動的に延長される。


■複数Tagを指定して紐付くKeyとValueを取得する機能を追加
okuyamaクライアントでは、getMultiTagValues

取得方法を複数のTagが全てに紐付いているANDと、どれかにだけ紐付くORを指定できる。
返却される形式はMapとなり、KeyとValueのセットになる。
そのため、複数のTagに紐付いているKeyは束ねられる。
例)
String[] getTags = {"Tag1","Tag2","Tag3"};
Map retAndMap = okuyamaClient.getMultiTagValues(getTags, true) //<=AND指定
Map retOrMap = okuyamaClient.getMultiTagValues(getTags, false) //<=OR指定


■データ一括削除機能を追加
Isolation単位もしくは全てのデータを一括で削除する機能をokuyama.imdst.client.UtilClientに追加
利用方法は以下
利用方法)
java -classpath ./:./classes okuyama.imdst.client.UtilClient truncatedata 192.168.1.1 8888 all
第1引数 = 'truncatedata' <=固定
第2引数 = '192.168.1.1' <=MainMasterNodeのIPアドレス
第3引数 = '8888' <=MainMasterNodeの起動ポート番号
第4引数 = 'all' <=全ての削除を指定する'all'もしくは削除するIsolationPrefix名


■現在のMasterNodeを指定してそのMasterNodeが現在どのような設定情報で稼働しているかを取得する機能をUtilClientに追加
利用方法)
java -classpath ./:./classes okuyama.imdst.client.UtilClient masterconfig 192.168.1.1 8888
第1引数 = 'masterconfig' <=固定
第2引数 = '192.168.1.1' <=MainMasterNodeのIPアドレス
第3引数 = '8888' <=MainMasterNodeの起動ポート番号
※出力例)
998,true,MainMasterNode=[true]- MyInfo=[127.0.0.1:8888]- MainMasterNodeInfo=[127.0.0.1:8888]- AllMasterNodeInfo=[127.0.0.1:8888 127.0.0.1:8889 127.0.0.1:11211]-
CheckMasterNodeTargetInfo=[]- Algorithm [0]:mod [1]:consistenthash=[1]- AllDataNodeInfo=[{third=[localhost:7553 localhost:7554] sub=[localhost:6553 localhost:6554]
main=[localhost:5553 localhost:5554]}]


■いくつかの処理性能向上と不具合の修正
1.Key-Valueの両方もしくはどちらかをメモリに展開する場合にデータを登録し続けるとメモリを使いすぎる現象を改善。
2.MasterNodeの不正な呼び出し番号(プロトコルの先頭)を渡した場合に応答がなくなってしまう問題を解決

Changelog

No Changelogs