【问题标题】:Ways of Efficiently Seeking in Custom File Formats有效寻找自定义文件格式的方法
【发布时间】:2010-06-24 19:45:23
【问题描述】:

我一直想知道在不同的文件格式中实现了什么样的搜索方式,以及构建具有大量数据以实现高效搜索的文件的好方法。我考虑过的一些方法是拥有相同大小的数据包,这允许快速跳过,因为您知道每个数据块是什么样的,而且在加载文件时进行预索引也是一个想法。

【问题讨论】:

  • 您将不得不为此提供更多信息。什么类型的格式?二进制?文本?该文件是否代表您必须解析才能从中获取信息的数据结构?
  • 我问的是一般性的,关于搜索中使用的技术。

标签: performance file-format seek


【解决方案1】:

这完全取决于数据的类型以及您要寻找的内容。

如果您尝试通过记录索引查找,那么可以肯定:固定大小的字段让生活更轻松,但会浪费空间。如果您尝试通过其他任何方式进行搜索,则保留 key:location 的索引效果很好。如果您希望能够按顺序构建文件,您可以将索引放在末尾,但保留文件的前四个字节(在幻数或其他之后)来表示索引本身的位置(假设您可以重写前四个字节)。

如果您希望能够对可变长度块执行某种二进制切割,那么采用一种相当有效的方法来检测块的开始会有所帮助 - 正如 Alexander 所提到的那样,拥有下一个/上一个指针也是如此。

实际上,这都是关于元数据的——但正确的元数据类型将取决于数据的类型,以及首先要寻找的用例。

【讨论】:

    【解决方案2】:

    嗯,给每个块一个大小偏移到下一个块是很常见的,并且允许快速跳过未知数据。另一种方法是在文件开头的索引块,存储文件中所有块的表及其偏移量。程序只需将索引块读入内存即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-09
      • 2013-02-09
      • 2017-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多