用于动态压缩和二分搜索的最佳压缩库/格式?
问题描述:
我正在寻找具有以下能力的压缩库/格式:用于动态压缩和二分搜索的最佳压缩库/格式?
- 我写它可以压缩数据。
- 让我有效地二进制搜索文件。
- 让我有效地遍历文件的反向。
语境:我正在写一个C++应用程序,侦听传入的数据,规范化,然后需要坚持标准化输出到磁盘。手动运行gzip文件时,数据已经很好压缩了。但是,传入数据的数量可能很大,我想快速进行压缩。文件中的每个条目都有一个与它关联的时间戳,我可能只对时间X和时间Y之间的数据块感兴趣,所以为了快速找到该块,我希望能够进行二分搜索。如果可能的话,甚至可以反向迭代。做特别好的压缩库/格式是否适合我的项目?我发现满足#1的库,但是#2或#3是否会工作的文档通常是无证的。
答
您可以一次压缩几个块,这样您就可以分别对它们进行解压缩,然后在压缩数据中的每个块块的开始处保留一个(未压缩但很小的)索引。这将允许对块的几乎随机访问,并且仍然通过时间戳保持它们的顺序。对此的限制情况是单独压缩每个块,尽管这可能会损害您的压缩比。
我想你的意思是,没有管理块自己:)?我知道protobuf提供了延迟解码,可以进行高效的搜索,但是您需要自己实际编码二进制数据,所以在压缩时效率可能不会如此高:/ – 2011-02-11 16:03:55