【发布时间】:2015-07-07 16:10:02
【问题描述】:
我有大约 200GB 的文本文件。
我将 key - position_in_file 存储在 DB 对中,
并使用fseek 获取数据。
有没有推荐的压缩文件的方法,
并寻求在压缩文件中的定位,
无需从文件开头解压缩。
[我更喜欢使用 C 作为语言]
[无需执行写入。无需超快]
【问题讨论】:
-
可能不会。如果是的话,它不会比解压缩文件并访问那里的内容花费更少的时间。原因:要在压缩文件中找到一个位置,您实际上必须解压缩它而不生成输出,直到到达所需位置。
-
不是压缩整个文件,而是单独压缩单独的数据块,然后你仍然可以像现在一样使用文件中的位置和搜索。
-
每个数据块大约1KB-1MB。你建议
gzip他们每个人分开吗? -
@nv3:当您有千兆字节的压缩数据时,查找压缩数据并进行部分解压缩(如果您的压缩格式支持的话)可以减少 很多 时间.支持查找和部分解压缩的两种格式是
bzip2和连接的gzip块。 -
是的,这是我的建议,但不是通过调用任何外部
gzip二进制当然,使用例如zlib。当然,当需要解压缩特定数据块时,需要权衡更长的延迟,但如果您对未压缩数据进行某种缓存,则可以克服大部分问题。
标签: c compression seek