基于文件的查找表

时间:2010-11-17 00:53:40

标签: .net io nosql

我有大量的顺序整数需要进行查找,即我需要获得一个串行整数id的偏移量。问题是,由于内存限制,我宁愿不将整个表加载到内存中来构建哈希表/字典,那么该怎么办?

一个可能有效的解决方案是使用一个文件,其中存储的第一个整数是使用的最低id,然后你编写一个零整数数组,每个id为最大一个(在需要时附加)并在id中写入正确的位置。例如,如果最低id为1000并且您想要在20000处获取偏移量,则只需检索位置10000 + 20000-1处的整数。

使用内存映射这种技术应该可以很好地执行。有没有人有类似的问题,这是一个很好的解决方案还是有更好的方法?

2 个答案:

答案 0 :(得分:0)

您可以使用专为硬盘使用而优化的B-Tree

B-Trees几乎被所有现代数据库和文件系统使用。

答案 1 :(得分:0)

您可以随时访问数据库。如果您不需要多个应用程序/进程访问数据,则可以使用SQLite。这会自动为您创建索引,并允许您使用SQL查询来检索信息。