浮点数流式数据压缩方法、装置、计算机设备及介质与流程

文档序号:35141466发布日期:2023-08-17 17:12阅读:21来源:国知局
浮点数流式数据压缩方法、装置、计算机设备及介质与流程

本发明涉及数据处理,特别涉及一种浮点数流式数据压缩方法、装置、计算机设备及介质。


背景技术:

1、压缩方法能有效地降低数据的体积,减少空间占用,减少需要io的数据量从而提高数据处理的速度。随着数据处理技术的快速进步,数据流处理越来越普遍。传统的压缩方法,比如zstd(zstandard,无损压缩算法)是面向固定数据的压缩方法,即针对一个固定的文件或一个较大的数据块进行全局搜索而得到较好的压缩效果。流式数据则是不断产生、随时处理的,需要利用数据前后之间的关系进行编码压缩。

2、gorilla算法是facebook公司提出的方法,它利用数据之间二进制形式上相似性,将数据和之前的数据进行异或,然后去掉头尾的零进行编码存储。这种方法在真实的场景中效果并不好,原因是浮点数有特殊的内部表示,十进制的相似性并不意味着二进制也是相似的。

3、类似的,有些系统将浮点数存成字符串,从而得到比较重复的表示,借用一些通用的压缩方法也可以得到较好的压缩比。但这意味着每次数据读取和处理时都要把字符串转成浮点数,开销非常大。

4、victoriametrics公司提供了另一种思路,它对浮点数进行一定的精度舍弃,并转成整型数来存储。这种方法能有效地提高压缩比,但在很多场景中,丢失精度是用户所无法接受的。

5、chimp是另一种对gorilla算法的改进,它研究了大量的开放数据集,对 gorilla算法的位编码方案进行了优化,从而在绝大部分场合下进了比 gorilla算法表现要好。但它也继承了gorilla位编码所引入的较低的解码效率。

6、因此,现有的浮点数流式数据压缩存在着数据读取和处理时开销大、存储精度低以及解码效率低的问题。


技术实现思路

1、有鉴于此,本发明实施例提供了一种浮点数流式数据压缩方法,以解决了现有技术中浮点数流式数据压缩存在着数据读取和处理时开销大、存储精度低以及解码效率低的问题。该方法包括:

2、建立索引表,所述索引表设有n个桶,每个桶有m个槽,n和m均为正整数;

3、基于当前浮点数的二进制表示,确定作为索引的key值;

4、根据所述key值利用哈希查找法在所述n个桶中寻找目标桶;

5、利用线性查找法将当前浮点数分别与所述目标桶内的各个槽中的数据依次进行异或计算得到多个第一值,将零的位数最多的第一值所对应的数据作为当前浮点数编码的基础值,并记录所述基础值在当前窗口的位置;

6、根据当前浮点数与所述基础值进行异或计算得到的第二值的零的位数情况以及所述基础值在当前窗口的位置对当前浮点数进行编码;

7、将编码后的浮点数依据预设的存储格式进行压缩存储。

8、本发明实施例还提供了一种浮点数压缩装置,以解决了现有技术中浮点数流式数据压缩存在着数据读取和处理时开销大、存储精度低以及解码效率低的问题。该装置包括:

9、索引表建立模块,用于建立索引表,所述索引表设有n个桶,每个桶有m个槽,n和m均为正整数;

10、key值确定模块,用于基于当前浮点数的二进制表示,确定作为索引的key值;

11、目标桶寻找模块,用于根据所述key值利用哈希查找法在所述n个桶中寻找目标桶;

12、基础值寻找模块,用于利用线性查找法将当前浮点数分别与所述目标桶内的各个槽中的数据依次进行异或计算得到多个第一值,将零的位数最多的第一值所对应的数据作为当前浮点数编码的基础值,并记录所述基础值在当前窗口的位置;

13、编码模块,用于根据当前浮点数与所述基础值进行异或计算得到的第二值的零的位数情况以及所述基础值在当前窗口的位置对当前浮点数进行编码;

14、存储模块,用于将编码后的浮点数依据预设的存储格式进行压缩存储。

15、本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意的浮点数流式数据压缩方法,以解决了现有技术中浮点数流式数据压缩存在着数据读取和处理时开销大、存储精度低以及解码效率低的问题。

16、本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述任意的浮点数流式数据压缩方法的计算机程序,以解决了现有技术中浮点数流式数据压缩存在着数据读取和处理时开销大、存储精度低以及解码效率低的问题。

17、与现有技术相比,本说明书实施例采用的上述至少一个技术方案能够达到的有益效果至少包括:建立索引表,索引表设有n个桶,每个桶有m个槽,n和m均为正整数;基于当前浮点数的二进制表示,确定作为索引的key值;根据key值利用哈希查找法在n个桶中寻找目标桶;利用线性查找法将当前浮点数分别与目标桶内的各个槽中的数据依次进行异或计算得到多个第一值,将零的位数最多的第一值所对应的数据作为当前浮点数编码的基础值,并记录基础值在当前窗口的位置;根据当前浮点数与基础值进行异或计算得到的第二值的零的位数情况以及基础值在当前窗口的位置对当前浮点数进行编码;将编码后的浮点数依据预设的存储格式进行压缩存储。本申请通过使用异或的方法实现数据的无损压缩,通过利用对历时窗口上的数据高效搜索提高了压缩率,并且采用了简化的数据表示,有利于提高解压速度。



技术特征:

1.一种浮点数流式数据压缩方法,其特征在于,包括:

2.如权利要求1所述浮点数流式数据压缩方法,其特征在于,所述基于当前浮点数的二进制表示,确定作为索引的key值,包括:

3.如权利要求2所述浮点数流式数据压缩方法,其特征在于,所述基于当前浮点数的二进制表示,确定作为索引的key值,还包括:

4.如权利要求1所述浮点数流式数据压缩方法,其特征在于,所述基于当前浮点数的二进制表示,确定作为索引的key值,包括:

5.如权利要求1所述浮点数流式数据压缩方法,其特征在于,所述根据当前浮点数与所述基础值进行异或计算得到的第二值的零的位数情况以及所述基础值在当前窗口的位置对当前浮点数进行编码,包括:

6.如权利要求1-5任一项所述浮点数流式数据压缩方法,其特征在于,在所述利用线性查找法将当前浮点数分别与所述目标桶内的各个槽中的数据依次进行异或计算得到多个第一值,将零的位数最多的第一值所对应的数据作为当前浮点数编码的基础值,并记录所述基础值在当前窗口的位置的步骤之后,还包括:

7.如权利要求1-5任一项所述浮点数流式数据压缩方法,其特征在于,所述预设的存储格式的头部包括:魔数、版本号、数据原始长度、数据压缩长度和编码压缩所用参数;所述头部之后依次记录第一个浮点数的原始值和各个浮点数编码压缩后的值。

8.一种浮点数流式数据压缩装置,其特征在于,包括:

9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的浮点数流式数据压缩方法。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至7中任一项所述的浮点数流式数据压缩方法的计算机程序。


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

技术研发人员:王勇,杨谕黔,于宁,唐鹏洲,王昊,姚延栋,翁岩青
受保护的技术使用者:北京四维纵横数据技术有限公司
技术研发日:
技术公布日:2024/1/14
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1