Ubuntu Linux 12.04で実行されるアプリケーションがあり、多数の大きなシリアル化されたオブジェクトを保存および取得する必要があります。現在、ストアは、シリアル化されたストリームをファイルとして保存するだけで実装されています。ファイル名は、シリアル化されたオブジェクトのmd5ハッシュと同じです。ただし、ファイルストアを、最近読み取り/書き込みされたオブジェクトのメモリ内キャッシュを実行し、できればハッシュを実行するファイルストアに置き換える速度を上げたいと思います。
私のアプリケーションの設計はこれ以上複雑になることはありません。したがって、キー値データベースとキャッシングを抽象化された効率的な方法で管理するストアバックエンドが望ましいでしょう。私はそこにあるすべてのキー/バリューストアに少し迷っています、そしてトピック/情報の多くは時代遅れのようです。私は当初memcached+membaseのようなものを見ていましたが、もっと良い解決策があるかもしれません。redis、mongodb、couchdbを調べましたが、それらが私のニーズに合っているかどうかはわかりません。
私の最も重要な要件:
- 最近書き込まれた/読み取られたオブジェクトをメモリに自動的にキャッシュすることですぐに利用できるように、永続ストアに透過的に保存します。
- ストアは再起動後も存続する必要があります。したがって、メモリ内のオブジェクトはできるだけ早くディスクに保存する必要があります。
- 現在、md5を手動で計算しています。バックエンドが私のためにこれを行うと、実際にはもっと良いでしょう。したがって、オブジェクトが格納されているときにハッシュキーを取得し、後でハッシュキーを使用してオブジェクトを取得できるようにします。
- 大きなプラスは、Ubuntu 12.04で利用可能なパッケージがある場合、ユニバースまたはランチパッドなどを介して利用できることです。
- これ以外に、ソフトウェアは必要以上に複雑ではなく、軽量であることが望ましいです(分散マップリデュースジョブなどは必要ありません)
アドバイスありがとうございます!