我有大量的顺序整数需要进行查找,即我需要获得一个串行整数id的偏移量。问题是,由于内存限制,我宁愿不将整个表加载到内存中来构建哈希表/字典,那么该怎么办?
一个可能有效的解决方案是使用一个文件,其中存储的第一个整数是使用的最低id,然后你编写一个零整数数组,每个id为最大一个(在需要时附加)并在id中写入正确的位置。例如,如果最低id为1000并且您想要在20000处获取偏移量,则只需检索位置10000 + 20000-1处的整数。
使用内存映射这种技术应该可以很好地执行。有没有人有类似的问题,这是一个很好的解决方案还是有更好的方法?
答案 0 :(得分:0)
您可以使用专为硬盘使用而优化的B-Tree。
B-Trees几乎被所有现代数据库和文件系统使用。
答案 1 :(得分:0)
您可以随时访问数据库。如果您不需要多个应用程序/进程访问数据,则可以使用SQLite。这会自动为您创建索引,并允许您使用SQL查询来检索信息。