浮点数流式数据压缩方法、装置、计算机设备及介质制造方法及图纸

技术编号:38542851 阅读:45 留言:0更新日期:2023-08-19 17:10
本发明专利技术实施例提供了一种浮点数流式数据压缩方法、装置、计算机设备及介质,涉及数据处理技术领域,该方法包括:建立索引表,索引表设有N个桶,每个桶有M个槽;基于当前浮点数的二进制表示,确定key值;根据key值在N个桶中寻找目标桶;利用线性查找法将当前浮点数分别与目标桶内的各个槽中的数据依次进行异或计算得到多个第一值,将零的位数最多的第一值所对应的数据作为基础值,并记录基础值在当前窗口的位置;根据当前浮点数与基础值进行异或计算得到的第二值的零的位数情况及基础值在当前窗口的位置进行编码;依据预设的存储格式进行压缩存储。通过该方案,实现了无损压缩,提高了压缩率和解压速度。缩率和解压速度。缩率和解压速度。

【技术实现步骤摘要】
浮点数流式数据压缩方法、装置、计算机设备及介质


[0001]本专利技术涉及数据处理
,特别涉及一种浮点数流式数据压缩方法、装置、计算机设备及介质。

技术介绍

[0002]压缩方法能有效地降低数据的体积,减少空间占用,减少需要IO的数据量从而提高数据处理的速度。随着数据处理技术的快速进步,数据流处理越来越普遍。传统的压缩方法,比如zstd(Zstandard,无损压缩算法)是面向固定数据的压缩方法,即针对一个固定的文件或一个较大的数据块进行全局搜索而得到较好的压缩效果。流式数据则是不断产生、随时处理的,需要利用数据前后之间的关系进行编码压缩。
[0003]Gorilla算法是facebook公司提出的方法,它利用数据之间二进制形式上相似性,将数据和之前的数据进行异或,然后去掉头尾的零进行编码存储。这种方法在真实的场景中效果并不好,原因是浮点数有特殊的内部表示,十进制的相似性并不意味着二进制也是相似的。
[0004]类似的,有些系统将浮点数存成字符串,从而得到比较重复的表示,借用一些通用的压缩方法也可以得到较好的压缩比。但这意本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种浮点数流式数据压缩方法,其特征在于,包括:建立索引表,所述索引表设有N个桶,每个桶有M个槽,N和M均为正整数;基于当前浮点数的二进制表示,确定作为索引的key值;根据所述key值利用哈希查找法在所述N个桶中寻找目标桶;利用线性查找法将当前浮点数分别与所述目标桶内的各个槽中的数据依次进行异或计算得到多个第一值,将零的位数最多的第一值所对应的数据作为当前浮点数编码的基础值,并记录所述基础值在当前窗口的位置;根据当前浮点数与所述基础值进行异或计算得到的第二值的零的位数情况以及所述基础值在当前窗口的位置对当前浮点数进行编码;将编码后的浮点数依据预设的存储格式进行压缩存储。2.如权利要求1所述浮点数流式数据压缩方法,其特征在于,所述基于当前浮点数的二进制表示,确定作为索引的key值,包括:基于当前浮点数的二进制的尾部若干位作为索引的第一key值。3.如权利要求2所述浮点数流式数据压缩方法,其特征在于,所述基于当前浮点数的二进制表示,确定作为索引的key值,还包括:基于当前浮点数的二进制的头部若干位作为索引的第二key值,当浮点数为64位时,用符号位加上高第6位到高第12位作为索引的第二key值,当浮点数为32位时,用符号位加上高第6位到高第12位作为索引的第二key值。4.如权利要求1所述浮点数流式数据压缩方法,其特征在于,所述基于当前浮点数的二进制表示,确定作为索引的key值,包括:当浮点数为64位时,基于当前浮点数的二进制的符号位、高第7位和低6位作为索引的第三key值;当浮点数为32为时,基于当前浮点数的二进制的符号位、高第5位和低6位作为索引的第三key值。5.如权利要求1所述浮点数流式数据压缩方法,其特征在于,所述根据当前浮点数与所述基础值进行异或计算得到的第二值的零的位数情况以及所述基础值在当前窗口的位置对当前浮点数进行编码,包括:所述基础值在当前窗口的位置表示为offset,offset取值为0~(2
M
‑1‑
1),当前浮点数与所述基础值进行异或计算得到的第二值表示为Xorj= Xj^Xi,Xj为当前浮点数,Xi为基础值;当Xorj的各位均为零时,则编码时只记录offset;当Xorj至少有一位不为零时,计算Xorj尾部的零长度L1和Xorj头部的零长度L2,L1和L2均为按字节取整,则Xorj首尾总的零长度L=L1+L2,其中,所述零长度为连续的零的位数;如果L大于等于1,则编码时记...

【专利技术属性】
技术研发人员:王勇杨谕黔于宁唐鹏洲王昊姚延栋翁岩青
申请(专利权)人:北京四维纵横数据技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1