2012-01-06 12 views
2

私たちは単一のjarファイルを使って配布されるプロジェクトに取り組んでいます。埋め込み可能なディスクベースのキー値ストア

  1. 私たちのjarファイルに埋め込み可能なので、追加のインストールは必要ありません。
  2. 数千万のペアを保持することができます。
  3. メモリが効率的です。 、長い、int型、小さなバイト[]
  4. 商用利用のための無料ライセンスは私たちが並行処理を必要としないボーナス
  5. あるACIDか:それは両方のキーと値は単純なタイプである50Mペア
  6. のための100Mよりも少ないことを意味しますそのような高度なもの。
  7. 100マイクロ秒未満の償却された検索時間。

BerkelyDBまたはJDBM2/3以外の提案はありますか?

答えて

0

noSQLの実装を見て、CouchDB、Cassandraなどはかなり良いです。

比較するためにGoogle検索を実行して、あなたが望むものを見つけるでしょう。

私のお気に入りは、MongoDBので、残念ながらそのJavaベースのない

よろしく

+0

解決策が投票された理由はわかりませんが、カッサンドラとそのラムに限定されず、10億行が達成可能です。 Trove(各リリース後にapiを破る==悪い)、&リアルタイム同期の良いluskの代わりに、FastUtilは実際には優れています。しかし、何が交際しても。 – Araejay

+0

埋め込み可能なnoSQLは見つかりませんでした。すべてが別々のインストールが必要です。 – Nikem

+1

http://docs.neo4j.org/chunked/snapshot/tutorials-java-embedded.html、http://nosql-database.org/ – Araejay

3

GNU Troveは、彼らがプリミティブ型を使用しているため、より多くのメモリ効率の高い標準のJavaマップよりもマップの数(例えばTIntIntHashMap)を提供しています。あなたが保存しているものについて何か分かっていない限り、これよりもメモリ効率が大幅に向上するとは思えません。 Troveはmore or less LGPLなので、おそらくあなたが使うのは安全です。私はそれが具体的にあなたの正確な仕様を満たしているかどうかはわかりませんが、あなたがRAMにものを取り入れることができるときにはそれを試す価値があると思います。

ディスクにスワップする必要がある場合は、Ehcacheをお勧めします。一定数のエントリの後にディスク上に値を格納するように指定することができます(バージョン2.5で新しくエントリの正確な数がわからない場合は、一定量のRAMが使用された後で指定できます)。

+0

私はTroveに試してみましょう、ありがとう。 – Nikem

+0

そしてEhCacheは...予期せぬことです:私は先験的に、一般的なキャッシュソリューションはあまりにも多くのオーバーヘッドを課すだろうと考えました。しかし、... "測定、推測ではない"ので、私に思い出させるために感謝:) – Nikem

関連する問題