1

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

4

2 回答 2

1

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

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

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

基本上它都是关于元数据的,真的 - 但正确的元数据类型将取决于数据的类型,以及首先寻找的用例。

于 2010-06-24T19:50:30.827 回答
0

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

于 2010-06-24T19:50:12.043 回答