本文总结工作中使用过的数据压缩方法,主要有zlib,qatzip,igzip等
最后还进行了针对大规模数据多线程解压缩加速的分析
zlib库
zlib是用于数据压缩的函数库,使用deflate算法
deflate...压缩文件是二进制的,由三部分组成
头信息
数据主体
校验
以下为标准格式的简要说明,详细解释可以看参考文档
qatzip库
通过硬件加速的方式进行压缩,即需要插入一张单独的intel的QAT卡;好处显而易见...,这个文件可能很大,几百GB;假如我只想要分析某几个block的数据,传统的压缩方式需要将整个文件全部解压之后才能获取想要的数据,效率很低
而通过自定义压缩block的head信息,使用其中的extra...压缩后,更新extra filed中压缩前后数据长度
解压缩的时候,首先找到第一个block,读入头信息,获取当前block的标识ID,如果是想要的数据,则通过extra field获取数据长度,按照长度直接读取即可...,然后跳到下一个block
因为对于无用的block数据,我们只要解析头信息,并根据长度进行偏移即可,所以遍历速度会很快
然后还可以通过多线程进行解压缩,主线程进行block的遍历,如果遇到目标数据,则从线程池中拿一个线程处理当前