是否存在用于硬盘存储而不是内存的多索引容器?

时间:2010-08-19 11:30:26

标签: c++ boost red-black-tree multi-index hard-drive

对于硬盘存储的情况,我需要一个基于红黑树的muti索引容器(类似boost::multi_index::multi_index_container)。所有数据必须存储在硬盘上而不是存储在内存中。

是否有一个开源容器,以便描述条件成立?

请注意。我使用C++

3 个答案:

答案 0 :(得分:1)

如果您有内存解决方案,则可以使用内存映射文件和自定义分配器来实现持久存储。

答案 1 :(得分:1)

我恐怕不知道。

对于硬盘存储,我只建议查看STXXL,它提出了适用于只能放在磁盘上的数据的STL容器和算法。他们已经实现了很多东西以允许更平滑的操作,主要是通过尽可能地在内存中缓存并尽可能延迟磁盘访问。

现在这不会给你一个多索引,但至少你会有一个STL:)

然后,如果您确定了,您可以移植多索引以使用STXXL提供的功能:它们与容器本身的IO访问/内存缓存相关联。

或者您可以根据符合STL标准的容器简单地编写您需要的内容。

答案 2 :(得分:1)

SQLite怎么样?它可以使用磁盘作为后备存储,并支持多个数据索引,如Boost Multi Index那样。