我正在寻找有关具有 C++ 接口或用 C++ 编写的内存中键值存储引擎或库的建议。
我正在寻找可以毫无问题地扩展到大约 100mill 键值对并且在 linux 和 win32/64 上兼容/可编译的解决方案
怎么样std::map
?
http://cplusplus.com/reference/stl/map/
如果您确实需要在内存中存储如此多的对,请考虑使用此Sparse Hash。它具有针对低内存消耗进行优化的特殊实现。
std::map 很好,因为键和值的大小很小并且可用内存很大(大约 1 亿对)。如果不是这种情况,并且您想在键值对上运行程序,请考虑使用标准 MapReduce API。Map Reduce 专门用于分布式系统和处理大数据,特别是键值对。Map Reduce 也有很好的 C++ API。 http://en.wikipedia.org/wiki/MapReduce
试试 Tokyo Cabinet,它支持哈希表和 B+树:
试试FastDB,尽管你得到的可能比你要求的要多。东京内阁似乎也支持内存数据库。(或者,由 mmap 映射的文件支持。在现代操作系统中,“in-ram”数据库和 mmap 数据库之间没有太大区别,因为操作系统缓存也使后者非常有效)。
哈希映射(也称为无序映射)是这么多对的最佳选择。您可以在 Boost 和 TR1 中找到实现。
编辑:有些人质疑它的大小——如果他有一台 64 位服务器,那么就有足够的空间容纳 1 亿千伏对。
Oracle Berkeley_db 是您所需要的。