2016-12-31 15 views
1

ヒープメモリの使い方がちょっと混乱しています。私は32GBのRAMと約1TBのサイズのキー値マッピングのデータセットを持つサーバーを持っています。私は、この1TBデータセットに従った値にキーをマップすることができる、シンプルで高速な組み込みJavaデータベースを探しています。このデータセットは、主にディスクから読み込む必要があります。このデータセットの各エントリは小さい(< 500バイト)ので、ファイルシステムを使用すると効率が悪くなると思います。クロニクルマップはメモリよりも大きなデータを扱うことができますか?

私はこのためにクロニクルマップを使用したいと思います。ヒープメモリの使用量がRAMのサイズを超え、ファイルシステムと何らかの形でやりとりすることを読んだのですが、同時にChronicle Mapはメモリ内のデータベースとして記述されています。私のサーバーの1TBデータセットをクロニクルマップで処理できますか、または32GB以下のデータセットしか使用できませんか?

答えて

3

答えはお使いのオペレーティングシステムによって異なります。 Windowsでは、クロニクルマップはメインメモリ内に収まる必要がありますが、LinuxとMacOSXではメインメモリには修正がありません(違いは、これらのOSでメモリマッピングがどのように実装されるかです)。注意:Linuxでは、あなたのディスク容量(MacOSXとWindowsはありません)

Linuxでは、32 GBのメモリを搭載したマシンに1 TBまたは100 TBをマッピングできます。アクセスパターンとドライブの選択は、パフォーマンスにとって重要であることを覚えておくことが重要です。ほとんどの場合、同じデータにほとんどアクセスしてSSDがある場合、これはうまくいくでしょう。回転ディスクとランダムアクセスパターンがある場合は、ドライブの速度によって制限されます。

注:クロニクルマップは25億件のエントリでテストされていますが、64ビットのハッシュキーを使用しています。

+0

25億のエントリを持つマップの 'ChronicleMap.size()'は何を返しますか?最大21.5億円のint値で切り捨てられますか? –

関連する問題