5

我正在寻找有关具有 C++ 接口或用 C++ 编写的内存中键值存储引擎或库的建议。

我正在寻找可以毫无问题地扩展到大约 100mill 键值对并且在 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

std::map 很好,因为键和值的大小很小并且可用内存很大(大约 1 亿对)。如果不是这种情况,并且您想在键值对上运行程序,请考虑使用标准 MapReduce API。Map Reduce 专门用于分布式系统和处理大数据,特别是键值对。Map Reduce 也有很好的 C++ API。 http://en.wikipedia.org/wiki/MapReduce

于 2010-06-26T07:17:28.373 回答
2

试试 Tokyo Cabinet,它支持哈希表和 B+树:

http://1978th.net/tokyocabinet/

于 2010-06-26T15:05:06.153 回答
1

试试FastDB,尽管你得到的可能比你要求的要多。东京内阁似乎也支持内存数据库。(或者,由 mmap 映射的文件支持。在现代操作系统中,“in-ram”数据库和 mmap 数据库之间没有太大区别,因为操作系统缓存也使后者非常有效)。

于 2010-06-26T11:34:22.583 回答
1

哈希映射(也称为无序映射)是这么多对的最佳选择。您可以在 Boost 和 TR1 中找到实现。

编辑:有些人质疑它的大小——如果他有一台 64 位服务器,那么就有足够的空间容纳 1 亿千伏对。

于 2010-06-26T15:06:02.800 回答
0

Oracle Berkeley_db 是您所需要的。

于 2010-06-27T09:35:01.520 回答