Javaで実装された分散キーバリューストア(KVS)です
Githubへ移行しました。 https://github.com/kobedigitallabo/okuyama
今後の更新はGithub上にて行います。 こちらにある過去リリース分はそのまま維持します。
[New - 新機能追加、不具合対応]
[[リリース Ver 0.8.9 - (2011/08/31)]]
■OkuyamaClientにsetObjectValueとgetObjectValueメソッドを追加
JavaでクラスでSerializableをimplementsしているクラスのオブジェクトをそのまま登録、
取得出来るメソッドを追加
メソッドは以下
・Setメソッド
boolean setObjectValue(String keyStr, Object objValue)
boolean setObjectValue(String keyStr, String[] tagStrs, Object objValue)
boolean setObjectValue(String keyStr, Object objValue, Integer expireTime)
boolean setObjectValue(String keyStr, String[] tagStrs, Object objValue, Integer expireTime)
返却値のbooleanはtrueの場合は登録成功、falseの場合は登録失敗
・Getメソッド
Object[] getObjectValue(String keyStr)
返却値のObject配列の要素は
Object[0] = 要素1 データ有無(String型) : "true"=データ有 or "false"=データ無
Object[1] = 要素2 取得データ(Object型) : データ有無が"false"の場合のみエラーメッセージ文字列(String型固定))それ以外は、登録したObject
■トランザクションログ(WALログ)のディスクへのfsyncの頻度を調整可能に
トランザクションログのディスクへのfsyncは従来OS任せだったが、頻度を調整可能に変更
ImdstDefine.transactionLogFsyncTypeの値を変更するか、DataNodeの起動引数に"tlft"付加し係数を
指定することで変更可能。係数の説明は以下
0=OS任せ
1=fsync頻度小
2=fsync頻度中
3=fsync頻度高
4=トランザクションログ書き込み毎にfsync(データへの変更毎に)
DataNode起動例)
java -cp ./classes;./lib/log4j-1.2.14.jar;./lib/javamail-1.4.1.jar;./lib/commons-codec-1.4.jar -Xmx128m -Xms128m okuyama.base.JavaMain /Main.properties /DataNode.properties -tlft 4
■memcachedでいうところのflush_allに対応
UtilClientによりデータの全削除を行うことができたが、これをmemcachedクライアントのflush_allへ紐付け
memcahcedクライアントが接続しているMasterNodeの担当するIsolationのデータを全削除できる。
Isolationを持っていないMasterNodeの場合は失敗する
■Dataファイルへのアクセスを効率化。
既存データのUpdateに対する効率化を実施
■いくつかの処理性能向上と不具合の修正
・内部コード見直しによる処理速度向上
・memcachedモードでMasterNodeを起動した場合にdeleteメソッドで特定のクライアントがkey以外にパラメータを
転送してくるため、その際エラーになっていたため修正
・ノード動的追加時にMainMasterNode以外でMasterNodeで発生するデータが取得出来ない不具合に対応
・全文検索時に、Isolation利用したMasterNodeに対して、2文字などの短い文字列で検索Indexを作成した場合に
検索対象にならない不具合に対応