5

C++ インターフェイスを備えているか、C++ で記述されているメモリ内のキー値ストア エンジンまたはライブラリに関する提案を探しています。

約 1 億のキーと値のペアに問題なくスケーリングでき、Linux および win32/64 で互換性/コンパイル可能なソリューションを探しています

4

7 に答える 7

11

どうstd::mapですか?
http://cplusplus.com/reference/stl/map/

于 2010-06-26T06:45:43.217 に答える
5

そのような量のペアをメモリに保存する必要がある場合は、このSparse Hashを検討してください。低メモリ消費に最適化された特別な実装があります。

于 2010-06-26T12:07:08.253 に答える
3

キーと値のサイズが小さく、使用可能なメモリが大きい場合 (約 1 億ペアの場合)、 std::map は問題ありません。そうではなく、キーと値のペアに対してプログラムを実行したい場合は、標準の MapReduce API の使用を検討してください。Map Reduce は、特に分散システムで使用され、特にキーと値のペアで大きなデータを処理することを意図しています。また、Map Reduce 用の優れた C++ API もあります。 http://en.wikipedia.org/wiki/MapReduce

于 2010-06-26T07:17:28.373 に答える
2

ハッシュテーブルと B+tree をサポートする Tokyo Cabinet を試してみてください:

http://1978th.net/tokyocabinet/

于 2010-06-26T15:05:06.153 に答える
1

FastDBを試してみてください。ただし、期待以上の結果が得られる場合があります。東京内閣もインメモリデータベースに対応しているようです。(または、mmap によってマップされたファイルによってバックアップされます。最新のオペレーティング システムでは、「in-ram」データベースと mmap 化されたものの間に大きな違いはありません。OS キャッシングが後者を非常に効率的にするためです)。

于 2010-06-26T11:34:22.583 に答える
1

ハッシュ マップ (順序付けされていないマップとも呼ばれます) は、その多くのペアに最適です。Boost と TR1 で実装を見つけることができます。

編集: 一部の人々はサイズに疑問を呈しています.64ビットサーバーを使用している場合、1億kvペア用の十分なスペースがあります.

于 2010-06-26T15:06:02.800 に答える
0

Oracle Berkeley_db が必要です。

于 2010-06-27T09:35:01.520 に答える