4

オフヒープメモリの仕組みに少し混乱しています。32 GB の RAM を搭載したサーバーと、サイズが約 1 TB のキーと値のマッピングのデータ セットがあります。この 1 TB のデータセットに従ってキーを値にマップできる、シンプルで高速な組み込み Java データベースを探しています。これは主にディスクから読み取る必要があります。このデータ セットの各エントリは小さいため (<500 バイト)、ファイル システムを使用するのは効率が悪いと思います。

これにはクロニクル マップを使用したいと思います。オフ ヒープ メモリの使用量が RAM サイズを超える可能性があり、何らかの方法でファイルシステムと対話することを読みましたが、同時に、Chronicle Map はメモリ内データベースとして説明されています。Chronicle Map はサーバーの 1 TB のデータ セットを処理できますか? それとも、32 GB 以下のデータ セットしか使用できないのですか?

4

1 に答える 1

4

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

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

注: Chronicle Map は 25 億エントリまでテストされており、キーの 64 ビット ハッシュを使用するため、良好なパフォーマンスを発揮します。

于 2016-12-31T12:55:09.733 に答える