C++ インターフェイスを備えているか、C++ で記述されているメモリ内のキー値ストア エンジンまたはライブラリに関する提案を探しています。
約 1 億のキーと値のペアに問題なくスケーリングでき、Linux および win32/64 で互換性/コンパイル可能なソリューションを探しています
どうstd::map
ですか?
http://cplusplus.com/reference/stl/map/
そのような量のペアをメモリに保存する必要がある場合は、このSparse Hashを検討してください。低メモリ消費に最適化された特別な実装があります。
キーと値のサイズが小さく、使用可能なメモリが大きい場合 (約 1 億ペアの場合)、 std::map は問題ありません。そうではなく、キーと値のペアに対してプログラムを実行したい場合は、標準の MapReduce API の使用を検討してください。Map Reduce は、特に分散システムで使用され、特にキーと値のペアで大きなデータを処理することを意図しています。また、Map Reduce 用の優れた C++ API もあります。 http://en.wikipedia.org/wiki/MapReduce
ハッシュテーブルと B+tree をサポートする Tokyo Cabinet を試してみてください:
FastDBを試してみてください。ただし、期待以上の結果が得られる場合があります。東京内閣もインメモリデータベースに対応しているようです。(または、mmap によってマップされたファイルによってバックアップされます。最新のオペレーティング システムでは、「in-ram」データベースと mmap 化されたものの間に大きな違いはありません。OS キャッシングが後者を非常に効率的にするためです)。
ハッシュ マップ (順序付けされていないマップとも呼ばれます) は、その多くのペアに最適です。Boost と TR1 で実装を見つけることができます。
編集: 一部の人々はサイズに疑問を呈しています.64ビットサーバーを使用している場合、1億kvペア用の十分なスペースがあります.
Oracle Berkeley_db が必要です。