質問

Javaは、ディスクベースのハッシュマップを持つことができるようにする(または利用可能なライブラリがあります)(または利用可能です)?アトミックなどである必要はありませんが、複数のスレッドからアクセスされ、2つが同じ要素に同時にアクセスしている場合はクラッシュしないでください。

誰かが何かを知っていますか?

役に立ちましたか?

解決

また プロパティファイル また バークレーDB あなたが探しているものかもしれません。 java.util.Properties それ自体が実装します java.util.Map および方法を提供します load から store ファイルへ。バークレーDBは、多くの場合、軽量のキー価値ペアデータストアとして推奨されます。

他のヒント

mapdb

MAPDBは、ディスクストレージまたはオフヒープメモリに裏打ちされた同時のツリーマップとハッシュマップを提供します。高速でスケーラブルで使いやすい組み込みJavaデータベースエンジンです。トランザクション、スペース効率の良いシリアル化、インスタンスキャッシュ、透明な圧縮/暗号化などの機能が詰め込まれています。また、ネイティブの埋め込みDBエンジンによってのみライバルになりました。

http://www.mapdb.org/

JDBM2

埋め込まれたキー値Javaデータベース。

https://code.google.com/p/jdbm2/

軽量のDBに近いものが必要だと思われます。見た/検討したことがありますか Java DB? 単一のインデックス付きテーブルを備えたライトDBは、基本的にディスクベースのスレッドセーフハッシュマップです。

JDBM2 まさにあなたが尋ねているものです。ディスクストレージによってバックアップされたハッシュマップを提供します(他のマップの中でも)。その高速でスレッドセーフとAPIは本当に簡単です。

Project VoldeMort また、非常に高速/スケーラブル/レプリケーション「ハッシュマップ」です。 LinkedInで使用されています。パフォーマンスもかなり良いです。

彼らのサイトからの引用:

これは、「ホット」データセットがパフォーマンスラボの人為的に重い負荷の下でメモリにある単一のサーバーと話している単一のマルチスレッドクライアントから見られるスループットです。

読み取り:19,384 req/sec
書き込み:16,559 req/sec

クロニクルマップ 道具 ConcurrentMap また、メモリをファイルにマッピングすることでディスクにデータを継続します。

Chronicleマップは概念的にMAPDBと非常によく似ています(同様のビルダーAPIを提供し、 Map インターフェイス)、しかしクロニクルマップはです より速い時間 MAPDBよりもはるかに優れた並行性を持っています(Chronicle Mapは高度にストライプのマルチレベルスピンロックを使用します)。

その年は現在2016年です。そして、誰かがこの問題に取り組むことを検討しているなら、私は低レベルの環境APIが Xodus JetbrainsからJetbrainsは同じ目的のために機能し、 computeInTransaction Lambdasを保存します。

確かに、それは純粋なものを持っているほど滑らかではありません Map インスタンスですが、私のユースケースで機能しました。

別の最近のオプションは使用することです H2 MVStore ストレージエンジン これは同じことですが、データベース自体に向けてより調整されていると思います。

乾杯!

2018 最も軽い持続性 key value ストアはです MVStoreを備えたH2データベース:

MVSTOREは、永続的なログ構造化されたキー価値ストアです。 H2の次のストレージサブシステムになることが計画されていますが、JDBCまたはSQLを使用せずにアプリケーション内で直接使用することもできます。

  • MVStoreは「マルチバージョンストア」の略です。

  • 各ストアには、java.util.mapインターフェイスを使用してアクセスできる多数のマップが含まれています。

  • ファイルベースの永続性とメモリ内操作の両方がサポートされています。

  • 速く、使いやすく、小さいことを意図しています。

  • 同時読み取りおよび書き込み操作がサポートされています。

  • トランザクションがサポートされています(同時トランザクションと2フェーズのコミットを含む)。

  • ツールは非常にモジュール式です。プラグ可能なデータ型とシリアル化、プラグ可能なストレージ(ファイルへ、オフヒープメモリへ)、プラグ可能なマップ実装(B-Tree、R-Tree、同時Bツリー)、Blobストレージ、およびファイルシステムの抽象化をサポートします。暗号化されたファイルとzipファイルをサポートします。

H2 の単一のライブラリにも含まれています 1.8 meg

私も見ました:

  • mapdb (13 meg 依存関係)
  • クロニクルマップ (5.5 meg 依存関係 - オプションで高速で配布されます)
  • lmdbjava (2 meg Java依存関係 + lmdb Cライブラリ) - 最速の実装ですが、そうではありません thread safe 箱から出して。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top