代码之家  ›  专栏  ›  技术社区  ›  Homde

基于文件的查找表

  •  0
  • Homde  · 技术社区  · 15 年前

    我有大量的序列整数需要查找,也就是说我需要得到序列整数I d的偏移量。问题是,由于内存限制,我不想将整个表加载到内存中来构建哈希表/字典,所以该怎么办?

    一个可行的解决方案是让文件中存储的第一个整数是使用的最低id,然后将一个零整数数组(每个id一个)写入最大id(需要时追加),并在正确的位置写入id。例如,如果最低的id是1000,并且您希望在20000处获取偏移量,那么您只需在位置10000+20000-1处检索整数。

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

    2 回复  |  直到 15 年前
        1
  •  0
  •   SLaks    15 年前

    你可以用 B-Tree ,这是专门为在硬盘上使用而优化的。

    几乎所有现代数据库和文件系统都使用B树。

        2
  •  0
  •   Pieter van Ginkel    15 年前

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

    推荐文章