考虑到数据量,我无法将所有数据存储在内存中。但由于仅需要按其数字(64位整数)对数据进行索引和访问,因此我不想要完整的数据库程序开销。理想情况下,我希望将其视为具有其数据存储在磁盘上的std::map
。
是否有已经编写好的库可以做到我想要的事情,还是我需要自己编写呢?
编辑:经过一些思考,我意识到Rob Walker的答案有一个有效的观点:从一个自制类中得到与真正数据库相同的数据完整性是非常困难的。
尽管BerkeleyDB(如RHM建议的那样)看起来能够完全满足我们的需求,但双重许可证是我们不想处理的麻烦事。当我们完成代码并能够证明BerkeleyDB会显著受益时(它可能会),我们将重新审查这个问题。
我确实看了Ferruccio关于stxxl的建议,但我无法确定它如何处理程序被中断和重新启动(可能带有更改)。有了这么多数据,如果可以保存一些数据,每次都要从头开始,那就太浪费了。
因此,我们决定至少在最初开发阶段使用SQLite数据库。感谢所有回答或投票的人。