数据压缩方法和装置制造方法及图纸

技术编号:37569331 阅读:14 留言:0更新日期:2023-05-15 07:48
本申请提供了一种数据压缩方法和用于该数据压缩方法的装置,该数据压缩方法包括:基于不同的预设范围从待压缩数据对象中获取多个待压缩数据;分别基于多个待压缩数据生成多个哈希值;查找每个哈希值对应的哈希表,获取哈希值对应的已压缩数据的位置信息,其中,哈希表用于存储已压缩数据和待压缩数据在待压缩数据对象中的位置信息,位置信息对应于哈希节点;基于待压缩数据和已压缩数据获取与哈希节点对应的数据的匹配长度;基于哈希节点和匹配长度对待压缩数据对象中的数据进行压缩。该数据压缩方法可以提高数据压缩率。数据压缩方法可以提高数据压缩率。数据压缩方法可以提高数据压缩率。

【技术实现步骤摘要】
数据压缩方法和装置


[0001]本说明书涉及数据压缩
,具体地,涉及一种数据压缩方法和用于该数据压缩方法的装置。

技术介绍

[0002]在大数据技术的应用中,大量的数据一般是在大量的服务器上并行处理的,该些服务器之间会存在大量的信息传输,该些信息需要通过压缩和加密进行传输和保存。数据压缩的硬件实现方式可以减少服务器的任务量,以提高数据的压缩速度。
[0003]然而,当前的数据压缩的硬件实现方式,难以在硬件资源有限的情况下,达到与软件实现同样的压缩率。

技术实现思路

[0004]本说明书第一方面提供一种数据压缩方法,该数据压缩方法包括:基于不同的预设范围从待压缩数据对象中获取多个待压缩数据;分别基于多个待压缩数据生成多个哈希值;查找每个哈希值对应的哈希表,获取哈希值对应的已压缩数据的位置信息,其中,哈希表用于存储已压缩数据和待压缩数据在待压缩数据对象中的位置信息,位置信息对应于哈希节点;基于待压缩数据和已压缩数据获取与哈希节点对应的数据的匹配长度;基于哈希节点和匹配长度对待压缩数据对象中的数据进行压缩。
[0005]在上述方案中,通过设置多个哈希表,以使得用于对待压缩数据对象进行压缩的哈希节点可以基于该多个哈希表进行选择,可以降低哈希冲突对压缩率的影响,而且可以使得在后续计算数据的匹配长度的进程中,能够选出使得匹配长度相对更大的哈希节点以对待压缩数据对象的数据进行压缩,以提高压缩速度,并提高数据压缩率。
[0006]在本说明书第一方面的一实施方式中,关于基于不同的预设范围从待压缩数据对象中获取多个待压缩数据的步骤,可以包括:基于不同的预设范围从待压缩数据对象中获取至少两个待压缩数据,且至少两个待压缩数据的预设范围的长度相同且初始位置不同;和/或,基于不同的预设范围从待压缩数据对象中获取至少两个待压缩数据,且至少两个待压缩数据的预设范围的长度不同且初始位置相同。
[0007]在本说明书第一方面的一实施方式中,关于基于不同的预设范围从待压缩数据对象中获取至少两个待压缩数据的步骤,可以包括:基于两个不同的预设范围从待压缩数据对象中获取四个待压缩数据。在该实施方式中,两个待压缩数据分别为奇数位置数据块和偶数位置数据块,奇数位置数据块的起始位置对应的字节在待压缩数据对象中的序号为奇数,偶数位置数据块的起始位置对应的字节在待压缩数据对象中的序号为偶数,且奇数位置数据块和偶数位置数据块的起始位置相邻。
[0008]在上述方案中,在整个待压缩数据对象中,可以同时对奇数位置和偶数位置起始的待压缩数据进行哈希计算,以提高从哈希表中查找到对应的哈希值的几率;此外,与单独对奇数位置或者偶数位置起始的待压缩数据进行哈希计算相比,该方式选择哈希节点可以
降低哈希冲突对压缩率的影响,而且该方式选择的哈希节点可能会对应更长的可匹配字符串,以使得在进行数据的匹配长度的进程中,有更大的几率可以选出使得匹配长度相对更大的哈希节点以对待压缩数据对象的数据进行压缩。
[0009]在本说明书第一方面的一实施方式中,关于基于不同的预设范围从待压缩数据对象中获取至少两个待压缩数据的步骤,还可以包括:基于四个不同的预设范围从待压缩数据对象中获取四个待压缩数据。在该实施方式中,四个待压缩数据分别为奇数位置短数据块、奇数位置长数据块、偶数位置短数据块和偶数位置长数据块,奇数位置短数据块和奇数位置长数据块的起始位置对应的字节在待压缩数据对象中的序号为奇数,偶数位置短数据块和偶数位置长数据块的起始位置对应的字节在待压缩数据对象中的序号为偶数,奇数位置短数据块和偶数位置短数据块的长度相同,奇数位置长数据块和偶数位置长数据块的长度相同,奇数位置短数据块和奇数位置长数据块的起始位置相同,偶数位置短数据块和偶数位置长数据块的起始位置相同,奇数位置短数据块和偶数位置短数据块的起始位置相邻。
[0010]在本说明书第一方面的一实施方式中,关于基于哈希节点和匹配长度对待压缩数据对象中的数据进行压缩的步骤,可以包括:判断哈希节点对应的待压缩数据是否位于待压缩数据对象的终止位置;如果是,对压缩后的数据进行封装并结束压缩流程;如果否,在待压缩数据对象中,将每个预设范围所限定的窗口后移,并将窗口覆盖的数据作为后续的待压缩数据。在该实施方式中,所有的预设范围所限定的窗口每次移动的距离相同。
[0011]在本说明书第一方面的一实施方式中,窗口每次移动的距离为两个字节所占的长度。
[0012]在本说明书第一方面的一实施方式中,数据压缩方法还可以包括:在至少两个哈希表中查到对应的哈希值的情况下,基于预设的节点选择规则,从获得的所有哈希节点中筛选出目标节点。在该实施方式中,关于基于待压缩数据和已压缩数据获取与哈希节点对应的数据的匹配长度的步骤,可以包括:基于待压缩数据和已压缩数据获取与目标节点对应的数据的匹配长度。
[0013]在上述方案中,从哈希表中查找到的多个哈希节点中选择出一个作为目标节点,之后再进行后续的数据的匹配长度的计算,使得后续的数据的匹配长度的计算量减小,以减少压缩延时。
[0014]在本说明书第一方面的一实施方式中,节点选择规则可以包括:对于从哈希表中查到哈希值的哈希节点的位置信息,与前一个选择的哈希节点的位置信息进行对比,将与前一个选择的哈希节点的位置信息不一致的哈希节点作为目标节点。
[0015]在上述方案中,在进行数据的匹配长度的进程中,可以避免基于前后两个哈希节点获取的待压缩数据重复或者有较多的重复而造成压缩率损失。
[0016]在本说明书第一方面的一实施方式中,哈希节点对应的数据格式的信息包括位置信息和有效标记位,有效标记位的可选标记包括第一标记和第二标记,第一标记用于指示哈希节点无效,第二标记用于指示哈希节点有效。此外,关于分别基于多个待压缩数据生成多个哈希值的步骤,可以包括:如果从哈希表中查找的哈希节点对应的有效标记位为第一标记,以待压缩数据生成哈希节点;如果从哈希表中查找的哈希节点对应的有效标记位为第二标记,将待压缩数据对应的哈希节点作为预选目标节点的哈希节点,其中,如果从至少
两个哈希表中查找的哈希节点对应的有效标记位为第二标记,通过节点选择规则筛选出目标节点,如果只有一个哈希表中查找的哈希节点对应的有效标记位为第二标记,以查找到的哈希节点作为目标节点。
[0017]在本说明书第一方面的一实施方式中,关于基于不同的预设范围从待压缩数据对象中获取多个待压缩数据的步骤,可以包括:初始化哈希表对应的哈希节点,以使得哈希节点对应的数据格式中的有效标记位写为第一标记。
[0018]在上述方案中,可以避免压缩之前进程的待压缩数据对象时更新的哈希表,对当前的待压缩数据对象的压缩进程造成影响。
[0019]在本说明书第一方面的一实施方式中,关于查找每个哈希值对应的哈希表,获取哈希值对应的已压缩数据的位置信息的步骤,可以包括:将每个哈希节点对应的第一标记位写为第二标记,并基于每个哈希节点对应的哈希值,将每个哈希节点对应的数据格式中的信息更新至哈希表中。...

【技术保护点】

【技术特征摘要】
1.一种数据压缩方法,其特征在于,包括:基于不同的预设范围从待压缩数据对象中获取多个待压缩数据;分别基于所述多个待压缩数据生成多个哈希值;查找每个哈希值对应的哈希表,获取所述哈希值对应的已压缩数据的位置信息,其中,所述哈希表用于存储所述已压缩数据和所述待压缩数据在所述待压缩数据对象中的位置信息,所述位置信息对应于哈希节点;基于所述待压缩数据和所述已压缩数据获取与所述哈希节点对应的数据的匹配长度;基于所述哈希节点和所述匹配长度对所述待压缩数据对象中的数据进行压缩。2.根据权利要求1所述的数据压缩方法,其特征在于,所述基于不同的预设范围从待压缩数据对象中获取多个待压缩数据,包括:基于不同的所述预设范围从所述待压缩数据对象中获取至少两个所述待压缩数据,且至少两个所述待压缩数据的所述预设范围的长度相同且初始位置不同;和/或基于不同的所述预设范围从所述待压缩数据对象中获取至少两个所述待压缩数据,且至少两个所述待压缩数据的所述预设范围的长度不同且初始位置相同。3.根据权利要求2所述的数据压缩方法,其特征在于,所述基于不同的所述预设范围从所述待压缩数据对象中获取至少两个所述待压缩数据,包括:基于两个不同的所述预设范围从所述待压缩数据对象中获取四个所述待压缩数据;其中,两个所述待压缩数据分别为奇数位置数据块和偶数位置数据块,所述奇数位置数据块的起始位置对应的字节在所述待压缩数据对象中的序号为奇数,所述偶数位置数据块的起始位置对应的字节在所述待压缩数据对象中的序号为偶数,且所述奇数位置数据块和所述偶数位置数据块的起始位置相邻。4.根据权利要求2所述的数据压缩方法,其特征在于,所述基于不同的所述预设范围从所述待压缩数据对象中获取至少两个所述待压缩数据,包括:基于四个不同的所述预设范围从所述待压缩数据对象中获取四个所述待压缩数据;其中,四个所述待压缩数据分别为奇数位置短数据块、奇数位置长数据块、偶数位置短数据块和偶数位置长数据块,所述奇数位置短数据块和所述奇数位置长数据块的起始位置对应的字节在所述待压缩数据对象中的序号为奇数,所述偶数位置短数据块和所述偶数位置长数据块的起始位置对应的字节在所述待压缩数据对象中的序号为偶数,所述奇数位置短数据块和所述偶数位置短数据块的长度相同,所述奇数位置长数据块和所述偶数位置长数据块的长度相同,以及所述奇数位置短数据块和所述奇数位置长数据块的起始位置相同,所述偶数位置短数据块和所述偶数位置长数据块的起始位置相同,所述奇数位置短数据块和所述偶数位置短数据块的起始位置相邻。5.根据权利要求2所述的数据压缩方法,其特征在于,所述基于所述哈希节点和所述匹配长度对所述待压缩数据对象中的数据进行压缩,包括:判断所述哈希节点对应的所述待压缩数据是否位于所述待压缩数据对象的终止位置;如果是,对压缩后的数据进行封装并结束压缩流程;如果否,在所述待压缩数据对象中,将每个所述预设范围所限定的窗口后移,并将所述窗口覆盖的数据作为后续的待压缩数据;
其中,所有的所述预设范围所限定的窗口每次移动的距离相同。6.根据权利要求5所述的数据压缩方法,其特征在于,所述窗口每次移动的距离为两个字节所占的长度。7.根据权利要求1~6中任一项所述的数据压缩方法,其特征在于,还包括:在至少两个所述哈希表中查到对应的所述哈希值的情况下,基于预设的节点选择规则,从获得的所有所述哈希节点中筛选出目标节点;其中,所述基于所述待压缩数据和所述已压缩数据获取与所述哈希节点对应的数据的匹配长度,包括:基于所述待压缩数据和所述已压缩数据获取与所述目标节点对应的数据的匹配长度。8.根据权利要求7所述的数据压缩方法,其特征在于,所述节点选择规则包括:对于从所述哈希表中查到所述哈希值的所述哈希节点的位置信息,与前一个选择的所述哈希节点的所述位置信息进行对比,将与前一个选择的所述哈希节点的所述位置信息不一致的所述哈希节点作为所述目标节点。9.根据权利要求7所述的数据压缩方法,其特征在于,所述哈希节点对应的数据格式的信息包括所述位置信息和有效标记位,所述有效标记位的可选标记包括第一标记和第二标记,所述第一标记用于指示所述哈希节点无效,所述第二标记用于指示所述哈希节点有效,其中,所述分别基于所述多个待压缩数据生成多个哈希值,包括:如果从所述哈希表中查找的所述哈希节点对应的所述有效标记位为所述第一标记,以所...

【专利技术属性】
技术研发人员:刘泽华袁信蒋东华杨倩李哲任麒斌曾鸣许浩
申请(专利权)人:阿里巴巴中国有限公司
类型:发明
国别省市:

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

1