数据压缩中数据分段方法及设备的制作方法

文档序号:7752901阅读:120来源:国知局
专利名称:数据压缩中数据分段方法及设备的制作方法
技术领域
本发明涉及网络通信技术,尤其涉及一种数据压缩中数据分段方法及设备。
背景技术
数据压缩是在数据的存储和传输中被广泛应用的一种技术。对于传输的数据而 言,由于存在大量的冗余数据,发送端的网络设备对数据进行压缩之后再传输,可以有效地 减少网络上传输的数据量,并降低传输时延。相应地,在接收端的网络设备首先需要进行解 压缩。目前数据传输的压缩技术可以分为两大类,一种是基于LZ(Lempel-Ziv)类算法 的压缩技术,另一种称为冗余数据消除技术。其中,LZ压缩技术通常是发送端在数据块内 部通过滑动窗口进行匹配,生成压缩字典并进行压缩,接收端生成相应的压缩字典并进行 解压缩。冗余数据消除技术是利用数据传输过程中的存在大块的重复数据,由网络设备保 存经过的大数据块,将其作为字典条目,在后续发送过程中,发现重复的数据块就使用字典 中的短的编码索引进行替换。接收端根据收到的编码索引及所存储的字典条目将原始数据 恢复出来。如果把网络中传输的数据看作字节流,那么网络设备需要对经过的字节流进行适 当的分段,把这些数据分段作为字典条目,以实现压缩。数据分段的长度对字典的使用效率 及压缩比有影响,过大会降低字典的使用效率,过小会降低压缩比。如果采用固定字节的分段方法,那么当某个分段的数据改变后,其后的数据分段 的边界均将改变,使得根据后续数据分段建立的字典条目不能被有效利用。为了解决固定 分段产生的问题,现有技术可以采用内容指纹(Fingerprint)的方式,采用大小为W的滑 动窗口,在待处理数据流中滑动,其中可以是逐字节或者逐双字节的滑动,在每次滑动过程 中,计算窗口中的数据块的内容指纹,当该内容指纹符合预定的规则时,将该窗口的滑动方 向上的边界点作为分段点,否则继续滑动窗口继续计算内容指纹直到确定出分段点。在实现本发明过程中,发明人发现现有技术至少存在如下问题采用上述分段方 法可能会造成数据分段的长度过大,过大的数据分段会导致匹配概率的下降,降低了字典 的使用效率。

发明内容
本发明实施例是提供一种数据压缩中数据分段方法及设备,用以解决现有技术中 存在的数据分段的长度多大的问题。本发明实施例提供了一种数据压缩中数据分段方法,包括根据待压缩的数据流中当前未分段数据流的长度,获取与所述当前未分段数据流 的长度对应的分段规则,其中,随着未分段数据流的长度的增加,对应的分段规则得到满足 的概率单调递增,且,第一长度对应的分段规则得到满足时,第二长度对应的分段规则一定 也得到满足,第一长度和第二长度为未分段数据流的长度,且第一长度小于第二长度;
采用所述分段规则对所述待压缩的数据流进行数据分段。本发明实施例提供一种数据压缩中数据分段设备,包括获取模块,用于根据待压缩的数据流中当前未分段数据流的长度,获取与所述当 前未分段数据流的长度对应的分段规则,其中,随着未分段数据流的长度的增加,对应的分 段规则得到满足的概率单调递增,且,第一长度对应的分段规则得到满足时,第二长度对应 的分段规则一定也得到满足,第一长度和第二长度为未分段数据流的长度,且第一长度小 于第二长度;分段模块,用于采用所述分段规则对所述待压缩的数据流进行数据分段。由上述技术方案可知,本发明实施例通过获取与未分段数据流的长度对应的分段 规则,并且当分段规则满足上述条件时,可以使得当该长度越大时,分段规则发生的概率越 大,因此,更容易被分段,所以可以有效地控制数据分段的长度,提高了匹配概率及字典的 使用效率。


为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本 领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他 的附图。图1为本发明第一实施例的方法流程示意图;图2为本发明第二实施例的方法流程示意图;图3为本发明第三实施例的方法流程示意图;图4为本发明实施例中第一数据流的数据分段示意图;图5为本发明实施例中在第一数据流的基础上增加数据后的一种数据分段示意 图;图6a为本发明实施例中在第一数据流的基础上增加数据后的另一种数据分段示 意图;图6b为本发明实施例中在第一数据流的基础上增加数据后的再一种数据分段示 意图;图7为本发明实施例中第一数据分段示意图;图8为本发明实施例中在第一数据分段增加数据后的示意图;图9为本发明实施例中将第一数据分段再次分段后的示意图;图10为本发明实施例中在第一数据分段再次分段后增加数据后的示意图;图11为本发明第四实施例的设备结构示意图;图12为本发明第五实施例的设备结构示意图。
具体实施例方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1为本发明第一实施例的方法流程示意图,包括步骤11 根据待压缩的数据流中当前未分段的数据流的长度,获取与所述当前未 分段数据流的长度对应的分段规则,其中,随着未分段数据流的长度的增加,对应的分段规 则得到满足的概率单调递增,且,第一长度对应的分段规则得到满足时,第二长度对应的分 段规则一定也得到满足,第一长度和第二长度为未分段数据流的长度,且第一长度小于第
二长度。其中,可以在接收到待压缩的数据流后,缓存该待压缩的数据流,在未分段之前, 记录缓存的数据流的长度,因此可以得到未分段的数据流的长度。其中,可以预先设置未分段数据流的长度与分段规则的对应关系,根据该对应关 系获取对应的分段规则;或者,也可以是设置一个关系式作为分段规则。上述两种分段规则的实现可以分别参见下述的第二实施例和第三实施例。步骤12 采用所述分段规则对所述待压缩的数据流进行数据分段。其中,本发明实施例是通过匹配内容指纹与分段规则来确定分段点。具体为,该内 容指纹为当前滑动窗内的数据内容的内容指纹,当该内容指纹满足对应的分段规则时,则 将该当前滑动窗的第一端点作为分段点,该第一端点为与滑动方向相同的该当前滑动窗的 端点。例如,当滑动窗由序号小的数据端向序号大的数据端滑动时,第一端点为序号大的数 据对应的端点。本实施例获取与未分段数据流的长度对应的分段规则,当该长度越大时,分段规 则被满足的概率单调递增,因此,更容易被分段;并且,当较小的长度对应的分段规则得到 满足时,较大的长度对应的分段规则一定也得到满足,与采用与未分段数据流的长度无关 的固定分段规则相比,可以使得采用固定分段规则得到的分段点依旧是分段点。通过增大 分段的发生概率及保证原来的分段点依旧是分段点,可以有效地控制数据分段的长度,提 高了匹配概率及字典的使用效率。图2为本发明第二实施例的方法流程示意图,本实施例以预先设置对应关系为 例。参见图2,包括步骤21 获取待压缩的数据流中当前未分段数据流的长度k。步骤22 获取预先设置的未分段数据流的长度与分段规则的对应关系。其中,该对应关系可以如表1所示
未分段数 据流的长 度(字节)
(512,1024](1024, 1536](1536, 2048]其他分段规则RF(SK)的 低 7bit = 0RF(SK)的 低 6bit = 0RF(SK)的 低 4bit = 0RF(SK)的 低 3bit = 0RF(SK)的 低 Ibit = 0表1其中,SK为当前滑动窗内的数据内容,RF(SK)为当前滑动窗内的数据内容的内容指纹,例如,该内容指纹可以为该数据内容的散列(Hash)函数,或者,采用Rabin Fingerprint 函数、循环冗余校验(Cyclic Redundancy Check, CRC)算法、MD5 (Message Digest 5)等算法得到。在表1中,若k为512,则分段规则为RF (SK)的低7位(bit) = 0,若RF (SK)满足 这一分段规则,即RF(SK)的低7位全为0,则RF(SK)的低6位、低4bit、低3bit、低Ibit也 都是0,因此RF(SK)也满足k为513,514...等所有大于512的数时,k对应的分段规则。 并且,随着k的增加,分段规则得到满足的概率增加,例如,如表1所示的呈单调递增。可以 理解的是,表1所示的对应关系只是示例,该对应关系并不限于表1,但是,需要满足的是, 如果当前滑动窗内的数据内容的内容指纹可以满足k较小时对应的分段规则时,则该内容 指纹一定满足k较大时对应的分段规则。例如,将上述低N位全为0改为低N位全为1。步骤23 查找该对应关系获取与当前未分段数据流的长度对应的分段规则。例如,k位于W,512]范围内时,分段规则为RF(SK)的低7位均为0 ;k位于(512, 1024]范围内时,分段规则为RF(SK)的低6位均为0 ;后续依次类推。步骤M 计算所述当前未分段数据流内的当前滑动窗内的数据内容的内容指纹 RF(SK)。步骤25 判断该内容指纹是否符合该分段规则,若是,执行步骤沈,否则,执行步 马聚27 ο具体地,计算出RF(SK)后,可以与步骤23得到的分段规则比较,以便判断RF(SK) 是否符合分段规则。步骤沈将该当前滑动窗的第一端点作为分段点,该第一端点为与滑动方向相同 的端点。例如,从序号小的数据端向序号大的数据端滑动时,将当前滑动窗的对应序号大 的数据端作为分段点。步骤27 将滑动窗继续滑动。例如,将滑动窗向右滑动一个字节或双字节。之后,可以重复执行步骤21直至找到分段点。本实施例通过预先设置对应关系,该对应关系中,当内容指纹可以满足k较小时 对应的分段规则时,一定满足k较大时对应的分段规则,可以使得数据流在增加数据后原 来的分段点依旧是分段点。且随着k的增加,其对应的分段规则发生的概率增加,所以可以 使得k较大时被分段的概率增加,避免出现较大的数据分段,进而提高字典的使用效率。图3为本发明第三实施例的方法流程示意图,本实施例以分段规则为与k有关的 关系式为例。参见图3,本实施例包括步骤31 获取待压缩的数据流中当前未分段数据流的长度k。步骤32 计算所述当前未分段数据流内的当前滑动窗内的数据内容的内容指纹 RF(SK)。RFO是内容指纹函数,该内容指纹函数可以为该数据内容的散列(Hash)函数,或 者,采用 Rabin Fingerprint 函数、循环冗余校验(Cyclic Redundancy Check, CRC)算法、 MD5 (Message Digest 5)等算法得到。步骤33:判断该内容指纹是否符合如下关系式,若是,执行步骤34,否则,执行步 马聚35 ο
该关系式如下RF(SK)MOD2[i^] = cMOD2K^)]其中,SK为当前滑动窗内的数据内容,RF(SK)为当前滑动窗内的数据内容的内 容指纹,c为预先设定的常量,M为预先设定的最大分段长度,k为未分段数据流的长度, MODW为取模运算,[*]表示向下取整运算。该关系式并不是唯一的,但是该关系式必然具 有以下特征,当k较小时能使该关系式得到满足的RF(SK),必然满足当k较大时的该关系式。步骤34 将该当前滑动窗的第一端点作为分段点,该第一端点为与滑动方向相同 的端点。例如,从序号小的数据端向序号大的数据端滑动时,将当前滑动窗的对应序号大 的数据端作为分段点。步骤35 将滑动窗继续滑动。例如,将滑动窗向右滑动一个字节或双字节。之后,可以重复执行步骤31直至找到分段点。本实施例通过预先设置关系式,k越大,该关系式越容易满足,并且,当k较小时能 使该关系式得到满足的内容指纹,必然满足当k较大时的该关系式,可以使得数据流在增 加数据后原来的分段点依旧是分段点,并且k较大时被分段的概率增加,避免出现较大的 数据分段,进而提高字典的使用效率。下面对有效控制数据分段的长度及提高字典使用效率进行分析当kl小于k2时kl对应的分段规则得到满足时,k2对应的分段规则一定得到满 足,且,随着k的增加,分段规则得到满足的概率增加。由于随着k的增加对应的分段规则 得到满足的概率增加,则k越大时,越容易被分段,可以有效控制数据分段长度;由于kl对 应的分段规则得到满足时,k2对应的分段规则一定得到满足,则可以使得具有相同内容的 数据块具有相同的分段点,使得在数据增加后原来的分段点依旧是分段点,可以提高字典 的使用效率。例如,图4为本发明实施例中第一数据流的数据分段示意图;图5为本发明实施例 中在第一数据流的基础上增加数据后的一种数据分段示意图;图6a为本发明实施例中在 第一数据流的基础上增加数据后的另一种数据分段示意图;图6b为本发明实施例中在第 一数据流的基础上增加数据后的再一种数据分段示意图。其中,F1、F2、F3表示滑动窗口。 其中Fl,F3满足内容指纹的低7位全为0,F2满足内容指纹的低4位全为0但不满足低7 位全为0。可见与采用与未分段数据流的长度无关的固定分段规则,即无论未分段数据流的 长度只有内容指纹的低7位全为0才可以分段相比,本发明实施例的方案可以使得采用固 定分段规则得到的分段点依旧是分段点,并且可以增加分段数量。在第一数据流的基础上增加数据后可能会存在如下情况情况一,由于本发明实施例中,k较小时对应的分段规则得到满足时,k较大对应 的分段规则一定得到满足,则可以使得相同数据内容具有相同的分段点,即第一数据流的 分段点,依旧是第二数据流的分段点。例如,参见图5,数据分段 2在增加数据后,其对应 的分段点是不变的(滑动窗F2的右端点)。相对于采用固定分段规则的分段方式,数据分 段 3依旧可以被再次利用,提高了字典的使用效率。
情况二,由于本发明实施例中,由于新插入的数据,使得计算窗口指纹的过程中, 在包含插入数据的窗口中可能会满足匹配的规则,从而产生一个新的分段点。例如,参见图 6a,数据分段 2在增加数据后,可能在数据分段 2的内部再产生一个新的分段点(滑动 窗F21的右端点)。新的分段点与F2之间未分段数据流的长度小于Fl的右端点与F2之间 数据流的长度。如果新的分段点与F2之间未分段数据流的长度与Fl的右端点与F2之间 数据流的长度仍在对应于同一分段规则的长度范围中,即满足内容指纹的低4位全为0,此 时F2的分段点仍然与以前相同。如果其长度范围不属于同一分段规则,而且此时F2的内 容指纹也不能满足该较小的未分段数据流的长度对应的分段规则,则分段点可能会发生变 化。参见图6b,分段点可能从F2变为F2’,也可能直到F3才找到分段点。由于F2的内容 指纹不满足固定分段规则,即内容指纹的低7位全为0,所以该情形下使用固定分段规则也 不会产生分段的。所以说相对于采用固定分段规则的分段方式,字典的使用效率至少没有 更低。而如果F2的内容指纹可以满足该较小的未分段数据流的长度对应的分段规则(如 图6a),则相对于采用固定分段规则的分段方式,数据分段 3依旧可以被再次利用,提高 了字典的使用效率。其中,图6a和图6b中,“新增数据”对应的区域和“F21”对应的区域存 在重叠。从上述分析可以看出,由于要求满足较小k时对应的分段规则则一定满足较大k 时对应的分段规则,并且,随着k的增加,对应的分段规则得到满足的概率增加。可以使得 原始的分段点依旧是分段点,还可能在原始分段内产生新的分段点。所以,可以有效地抑制 未分段数据的长度。由于长度被减少,则字典的使用效率也会随之增加。例如,图7为本发明实施例中第一数据分段示意图,图8为本发明实施例中在第一 数据分段增加数据后的示意图,图9为本发明实施例中将第一数据分段再次分段后的示意 图,图10为本发明实施例中在第一数据分段再次分段后增加数据后的示意图。参见图7,假设第一数据分段为一个较大的数据分段 N ;参见图8,在数据分段 N中增加了数据后得到数据分段 N’ ;由于增加数据后,该数据分段有所改变,那么数据分 段 N不能被再次利用。对应地,参见图9,通过本发明实施例的方法,可以有效控制数据分 段的长度,因此采用本发明实施例的方法后,较大的数据分段会被分为较小的数据分段,假 设数据分段 N分为了数据分段 m和数据分段 N2,若增加的数据在数据分段 Ni,参 见图10,增加数据后分别为数据分段 ΝΓ和数据分段 N2,那么不能再次利用的只是数 据分段 附,而数据分段 N2依旧可以被再次利用。所以降低数据分段的长度后可以提高 字典的使用效率。另一方面,如果直接采用被满足的概率较高的且与未分段数据流的长度 无关的分段规则,虽然也可以提高字典的使用效率,但由于数据分段长度小时会降低压缩 效率,所以实际使用效力也不如本发明实施例提供的可以有效地控制数据分段的长度的方 案。图11为本发明第四实施例的设备结构示意图,包括获取模块111和分段模块112 ; 获取模块111用于根据待压缩的数据流中当前未分段数据流的长度,获取与所述当前未分 段数据流的长度对应的分段规则,其中,随着未分段数据流的长度的增加,对应的分段规则 得到满足的概率单调递增,且,第一长度对应的分段规则得到满足时,第二长度对应的分段 规则一定也得到满足,第一长度和第二长度为未分段数据流的长度,且第一长度小于第二长度;分段模块112用于采用所述分段规则对所述待压缩的数据流进行数据分段。其中,所 述分段规则可以为如下关系式
权利要求
1.一种数据压缩中数据分段方法,其特征在于,包括根据待压缩的数据流中当前未分段数据流的长度,获取与所述当前未分段数据流的长 度对应的分段规则,其中,随着未分段数据流的长度的增加,对应的分段规则得到满足的概 率单调递增,且,第一长度对应的分段规则得到满足时,第二长度对应的分段规则一定也得 到满足,第一长度和第二长度为未分段数据流的长度,且第一长度小于第二长度;采用所述分段规则对所述待压缩的数据流进行数据分段。
2.根据权利要求1所述的方法,其特征在于,所述采用所述分段规则对所述待压缩的 数据流进行数据分段,包括计算所述当前未分段数据流内的当前滑动窗内的数据内容的内容指纹;判断所述内容指纹是否符合所述对应的分段规则;当所述内容指纹符合所述对应的分段规则时,将所述当前滑动窗的第一端点作为分段 点,所述第一端点为所述当前滑动窗的与滑动方向相同的端点。
3.根据权利要求2所述的方法,其特征在于,所述获取与所述当前未分段数据流的长 度对应的分段规则,包括获取预先设置的未分段数据流的长度与分段规则的对应关系;查找所述对应关系获取与所述当前未分段数据流的长度对应的分段规则。
4.根据权利要求2所述的方法,其特征在于,所述分段规则为如下关系式RF(SK)MOD2 k = cMODl k ;其中,SK为当前滑动窗内的数据内容,RF(SK)为当前滑动窗内的数据内容的内容指 纹,c为预先设定的常量,M为预先设定的最大分段长度,k为未分段数据流的长度,MOD表 示取模运算;[*]表示向下取整运算。
5.根据权利要求2所述的方法,其特征在于,所述与所述当前未分段数据流的长度对 应的分段规则,包括内容指纹的低N位全为1 ;或者,内容指纹的低N位全为0 ;其中,SK为当前滑动窗内的数据内容,RF(SK)为当前滑动窗内的数据内容的内容指 纹,且随着当前未分段数据流的长度的增加,N单调递减。
6.一种数据压缩中数据分段设备,其特征在于,包括获取模块,用于根据待压缩的数据流中当前未分段数据流的长度,获取与所述当前未 分段数据流的长度对应的分段规则,其中,随着未分段数据流的长度的增加,对应的分段规 则得到满足的概率单调递增,且,第一长度对应的分段规则得到满足时,第二长度对应的分 段规则一定也得到满足,第一长度和第二长度为未分段数据流的长度,且第一长度小于第 二长度;分段模块,用于采用所述分段规则对所述待压缩的数据流进行数据分段。
7.根据权利要求6所述的设备,其特征在于,所述分段模块包括第一单元,用于计算所述当前未分段数据流内的当前滑动窗内的数据内容的内容指第二单元,用于判断所述内容指纹是否符合所述对应的分段规则; 第三单元,用于当所述内容指纹符合所述对应的分段规则时,将所述当前滑动窗的第 一端点作为分段点,所述第一端点为所述当前滑动窗的与滑动方向相同的端点。
8.根据权利要求7所述的设备,其特征在于,所述获取模块包括第四单元,用于获取预先设置的未分段数据流的长度与分段规则的对应关系; 第五单元,用于查找所述对应关系获取与所述当前未分段数据流的长度对应的分段规则。
9.根据权利要求7所述的设备,其特征在于,所述获取模块获取的分段规则为如下关 系式RF(SK)MOD2 k = cMOD2 k ;其中,SK为当前滑动窗内的数据内容,RF(SK)为当前滑动窗内的数据内容的内容指 纹,c为预先设定的常量,M为预先设定的最大分段长度,k为未分段数据流的长度,MOD表 示取模运算;[*]表示向下取整运算。
10.根据权利要求7所述的设备,其特征在于,所述第二单元具体用于当所述对应的分段规则是内容指纹的低N位是否为1时,判断 RF(SK)的低N位是否全为1 ; 或者,所述第二单元具体用于当所述对应的分段规则是内容指纹的低N位是否为0时,判断 RF(SK)的低N位是否全为0;其中,SK为当前滑动窗内的数据内容,RF(SK)为当前滑动窗内的数据内容的内容指 纹,且随着当前未分段数据流的长度的增加,N单调递减。
全文摘要
本发明提供了一种数据压缩中数据分段方法及设备。该方法包括根据待压缩的数据流中当前未分段数据流的长度,获取与所述当前未分段数据流的长度对应的分段规则,其中,随着未分段数据流的长度的增加,对应的分段规则得到满足的概率单调递增,且,第一长度对应的分段规则得到满足时,第二长度对应的分段规则一定也得到满足,第一长度和第二长度为未分段数据流的长度,且第一长度小于第二长度;采用所述分段规则对所述待压缩的数据流进行数据分段。本发明实施例可以有效控制数据分段的长度,提高字典使用效率。
文档编号H04L29/08GK102143039SQ201010213950
公开日2011年8月3日 申请日期2010年6月29日 优先权日2010年6月29日
发明者李峰, 李春强, 郑宇 , 黄志钢 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1