okuyama-0.8.4リリース、0.8.5のことも。そして次の何か。。

また大分さぼってしまった。。

ということで、okuyama-0.8.4をリリースしました。
0.8.4のことの前にここには、0.8.0以降のことを何も記していなので、
追加した機能をチョット軽く整理すると、




■0.8.1
    ・トランザクションログファイルを一定サイズで自動的にローテーションするように変更
    ・JavaScriptでデータ更新も行えるように変更
    ・Valueがファイルモード時にファイルから一度読み出しValueの一定量をメモリにキャッシュするように機能追加
      (LRUアルゴリズムで使用しないものからパージされます)
    ・データノードのメモリ活用方法を効率化し、従来よりも大量のデータをメモリ保持できるように修正
      データノード内でのKey値探索方式に工夫を行い、取得効率を向上


■0.8.2
    ・ant用のbuild.xmlを作成してantから起動できるようにした
    ・不具合対応全般


■0.8.3
    ・ストレージモードに完全ディスクモードを追加
    ・パッケージ構造は大幅に変更
    ・TagからKeyを取得する際にすでに削除されたKey値を返さないOption引数を追加
    ・Tag登録時のロックアルゴリズムを見直しによる処理性能の向上
    ・不具合対応全般




上記が0.8.1から0.8.3の流れです。
大きくはデータストレージ周りと、処理性能の向上にフォーカスしてやっていた感じです。
そしてこの期間中に
「NoSQL afternoon in Japan(http://atnd.org/events/8460)」への登壇や
Java Cloud Meeting in Kansai」への登壇などを経験させていただきました。
色々情報収集できてかなり有意義な時間を過ごせました。


そして0.8.4なんですが、以下の機能を追加しました。
■0.8.4
    ・データ有効期限を設定できる機能を追加
      memcachedでいうところのexpireTimeです。memcachedと同じ挙動になります。
    ・排他的更新機能を追加(gets & cas)
      memcachedでいうところのgetsとcasへの対応です。これもmemcachedと同じ挙動になります。
    ・VirtualMemory機能の実装
      これはokuyamaが稼動中にメモリが足りなくなったさいに従来はOutOfMemoryが発生していたいのですが、
      自動的にディスクにKey-Valueの一部を書き出して、OutOfMemoryが発生しないように対応したというものです。
    ・Valueをディスクに保持するモード時のディスク使用率を効率化
      これは従来Valueをファイルに保存するモードを選択した際は、1Valueは必ず固定長でファイルに書き出されていたのですが、
      これではディスクの使用効率が悪いので、1Valueの一定長までは全Value共有のファイルに、それ以上は個別の1Value単位での
      専用ファイルに保存するようにしました。これで一定長以内のValueは共有ファイルに保存されるので、一部の大きなValue
      対応するためにファイルを無駄な固定長で埋め尽くさずにすむようになります。
    ・完全ディスクモード時にディスクへの書く込み処理を非同期に変更
      完全ディスクモードはディスクの容量一杯までデータを保存できますが、やはり書き込みが遅いので、非同期書き込みを
      実装しました。正しこれはKeyファイルとValueファイルだけのことで、データの永続性を実現している
      トランザクションファイルへの書き込みは完了してからClientへ応答するので、永続性は保障されます。
    ・ネットワーク越しに停止できるように変更
      ネットワーク経由で停止コマンドを送信できるように機能追加
    ・不具合対応全般


一番大きな機能追加はcasへの対応でしょうか。
これは「第3回クラウド勉強会「〜NoSQL(KVS)大集合〜」」への登壇が決まっていたため、
その前に絶対実装しておきたかったので、必達目標でした。
出来てよかった〜。。。


後はやはりストレージ周りが大きいですね。
仮想メモリとかディスク使用量の効率化などです。




そして、0.8.5ですが、まずはexpireTimeで有効期限切れになったデータを自動的に
物理削除するようにします。
okuyamaは永続性を前面に押し出していることもあり、メモリ使用量やディスク使用量が
あふれそうな場合に自動でパージする機能は無かったのですが、今回の有効期限の
対応に合わせて実装しました。後は、Tag周りの処理性能向上は行う予定です。






そして次の何かなんですが、以下のプロジェクトを立ち上げました。
「分散ストレージ GalleryEs」http://sourceforge.jp/projects/galleryes/
分散ストレージに取り掛かることにしました。okuyamaというメタサーバもできたので、
本格的に進めようか思います。


まあまだ何にもないですが。。。。




年末頑張るかなー。