CN104348571A - 数据分块方法及装置 - Google Patents

数据分块方法及装置 Download PDF

Info

Publication number
CN104348571A
CN104348571A CN201310312216.7A CN201310312216A CN104348571A CN 104348571 A CN104348571 A CN 104348571A CN 201310312216 A CN201310312216 A CN 201310312216A CN 104348571 A CN104348571 A CN 104348571A
Authority
CN
China
Prior art keywords
data block
current data
fingerprint
value
layer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310312216.7A
Other languages
English (en)
Other versions
CN104348571B (zh
Inventor
吴俊�
张亮
郭凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Changzhou Hengtang Technology Industry Co ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310312216.7A priority Critical patent/CN104348571B/zh
Priority to PCT/CN2014/082237 priority patent/WO2015010555A1/zh
Publication of CN104348571A publication Critical patent/CN104348571A/zh
Application granted granted Critical
Publication of CN104348571B publication Critical patent/CN104348571B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0078Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
    • H04L1/0083Formatting with frames or packets; Protocol or part of protocol for error control

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Collating Specific Patterns (AREA)

Abstract

本发明实施例提供一种数据分块方法及装置。该方法包括:采用所述滑动窗口的指纹值,分别对第1个模值至第N个模值进行取模,如果对一个模值取模后的值为零;将原数据流中从第n层的上一个数据块的结束位置开始到滑动窗口的结束位置之间的数据作为当前数据块;在指纹字典中没有存储当前数据块的指纹值时,n大于1,在新数据流占用的空间中写入当前数据块,以覆盖在新数据流中当前数据块包括的所有第n-1层的数据块,否则将当前数据块顺序写入新数据流;否则,在新数据流中写入当前数据块的指纹值,以覆盖新数据流中当前数据块包括的所有第n-1层的数据块的指纹值,否则将当前数据块的指纹值顺序写入新数据流占用的空间。

Description

数据分块方法及装置
技术领域
本发明实施例涉及通信技术,尤其涉及一种数据分块方法及装置。
背景技术
重复传输相同或相似的数据会浪费网络资源。采用冗余流量删除(Redundant Traffic Elimination,简称RTE)技术,可以实现协议无关的冗余消除,使数据通信变得更有效率。现有RTE技术通常采用基于模块化指数(Modular Exponential,MODP)的分块方法,根据文件内容对数据流进行分块。基于MODP的分块方法通过一个滑动窗口来实现,对一个给定的模值p(例如,10010),当滑动窗口的指纹值(例如,1111 0111 0010)对模值p取模后的值为0,则该滑动窗口末尾到上一个数据分块结束的位置之间的数据内容被划分为一个数据分块。当滑动窗口的指纹值(例如,1111 0111 0010)对模值p取模后的值不为0,滑动窗口向后移动一个字节或者自定义的一个长度。得到数据分块后,计算分块的指纹值,并在指纹字典中与已存储的数据分块的指纹值进行比较,如果检测到相同的指纹值,表示找到冗余的数据内容,则在新数据流中用一个标识符来替换该数据分块,以达到压缩流量的目的。如果没有检测到相同的指纹值,存储该数据分块及其指纹,以用于其后分块的冗余检测。用于替换数据分块的标识符的长度是固定的,如果对应的数据分块长度越大,则传输时节省的带宽也越大。但是,大的数据分块意味着去冗是粗粒度的,相同的数据分块难以重复出现,从而去冗率较低。
目前,提出了一种分层的分块方案,可同时实现粗粒度和细粒度的冗余消除,以提高去冗率。发送端采用基于MODP的分块方法对原始数据流进行分块,得到数据分块序列101:分块SA、SB、SC、SD、SE和SF,并替换为相应分块的标识符,例如,分块SA替换为标识符R1 1,得到标识符序列102(称为1层标识符):R1 1、R1 2、R1 3、R1 4、R1 5和R1 6。将标识符序列102视为一般的数据流,再次使用基于MODP的分块方法对标识符序列102进行分块,得到了标识符数据的两个数据分块,同样将其替换为2层的标识符序列103:R2 1和R2 2。例如,内容是标识符R1 1和、R1 2的分块替换为第2层标识符R2 1,内容是标识符R1 3、R1 4、R1 5和R1 6替换为2层标识符R2 2。从数据内容看,第2层标识符R2 1代表了数据分块SA和SB,R2 2代表了分块SC、SD、SE和SF。在发送端向接收端发送的新数据流中,尽可能用高层的标识符来替换数据分块,以节省带宽。
然而,上述层次式分块方案中,第2层标识符是对第1层标识符进行分块后产生的,必须在第2层标识符中增加指示位,用于指示该标识符是分块的标识符,还是标识符的标识符。否则,接收端无法还原出原始数据。因此,上述层次式分块方案,增加了标识符的开销,降低了去冗率。
发明内容
本发明实施例提供一种数据分块方法及装置,用以提高数据分块的去冗率。
第一方面,本发明实施例提供一种数据分块方法,包括:
11.获取原数据流上滑动窗口的指纹值,所述滑动窗口的初始起始位置与所述原数据流的起始位置相同,所述滑动窗口的长度为预设长度;
12.采用所述滑动窗口的指纹值,分别对第1个模值至第N个模值进行取模,对于每个模值,如果取值后的值为零均执行步骤13和14,其中,将第i个模值向左扩展预设位数后得到第i+1个模值,所述i为大于等于1并且小于所述N的任一个自然数,所述N为模值的总个数;
13.将所述原数据流中从第n层的上一个数据块的结束位置开始到所述滑动窗口的结束位置之间的数据作为当前数据块,所述当前数据块为第n层数据块;其中,所述n为大于等于1并且小于等于所述N的任一个自然数:
在指纹字典中没有存储所述当前数据块的指纹值时,将所述当前数据块存储到分块字典中,将所述当前数据块的指纹值和所述当前数据块在所述分块字典中的索引信息存储到所述指纹字典中,当所述n大于1时,在新数据流占用的空间中写入所述当前数据块,以覆盖在所述新数据流中所述当前数据块包括的所有第n-1层的数据块,当所述n等于1时,将所述当前数据块顺序写入所述新数据流占用的空间;
在所述指纹字典中存储有所述当前数据块的指纹值时并且当n大于1时,在所述新数据流占用的空间中写入所述当前数据块的指纹值,以覆盖所述新数据流中所述当前数据块包括的所有第n-1层的数据块的指纹值,在所述指纹字典中存储有所述当前数据块的指纹值时并且当n等于1时,将所述当前数据块的指纹值顺序写入所述新数据流占用的空间;
14.将所述滑动窗口在所述原数据流上朝结束位置滑动所述预设长度,获取原数据流上滑动窗口的指纹值,重复执行步骤12-14,直至所述滑动窗口的起始位置滑动至所述原数据流的结束位置。
结合第一方面,第一种可能的实现方式中,将所述当前数据块存储到分块字典中,将所述当前数据块的指纹值和所述当前数据块在所述分块字典中的索引信息存储到所述指纹字典中,包括:
当所述当前数据块包括第n-1层的数据块时,将所述当前数据块的指纹值和所述当前数据块在所述分块字典中的索引信息存储到所述指纹字典中,其中,所述当前数据块在所述分块字典中的索引信息,根据所述当前数据块包括的第n-1层的数据块的索引信息确定;
当所述当前数据块不包括第n-1层的数据块时,将所述当前数据块存储到所述分块字典中,将所述当前数据块的指纹值和所述当前数据块在所述分块字典中的索引信息存储到所述指纹字典中。
结合第一方面,或结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在新数据流的占用空间中写入所述当前数据块之前,和/或在所述新数据流的占用空间中写入所述当前数据块的指纹值之前,还包括:
查找所述当前数据块包括的第n-1层的数据块在所述新数据流中的位置。
结合第一方面,或结合第一方面的第一种和第二种可能的实现方式,在第三种可能的实现方式中,在所述将所述原数据流中从第n层的上一个数据块的结束位置开始到所述滑动窗口的结束位置之间的数据作为当前数据块之后,还包括:
记录所述当前数据块的序号,与所述当前数据块所在的层次、所述当前数据块在所述原数据流的位置和所述当前数据块在所述新数据流的位置之间的对应关系,并保存在位置记录表中;
查找所述当前数据块包括的第n-1层的数据块在所述新数据流中的位置,包括:
根据所述当前数据块在所述原数据流中的位置和第n-1层数据块在所述原数据流中的位置,在所述位置记录表中,定位所述原数据流中所述当前数据块包括的第n-1层数据块的记录;
从定位到的第n-1层数据块的记录中,获取所述当前数据块包括的第n-1层数据块在所述新数据流中的位置。
结合第一方面,或结合第一方面的第一种至第三种可能的实现方式,在第四种可能的实现方式中,上述方法还包括:
将所述新数据流解析为所述原数据流的过程中,当在所述新数据流查找到指纹值时,在所述指纹字典中查找所述指纹值对应的数据块在所述分块字典中的索引信息;
根据所述索引信息,在所述分块字典中查找所述指纹值对应的数据块,在所述指纹值在所述新数据流占用的空间中,将所述指纹值替换为查找到的数据块。
第二方面,本发明实施例还提供一种数据分块装置,包括:
获取模块:用于获取原数据流上滑动窗口的指纹值,所述滑动窗口的初始起始位置与所述原数据流的起始位置相同,所述滑动窗口的长度为预设长度;
取模模块,用于采用所述滑动窗口的指纹值,分别对第1个模值至第N个模值进行取模,其中,将第i个模值向左扩展预设位数后得到第i+1个模值,所述i为大于等于1并且小于所述N的任一个自然数,所述N为模值的总个数;
分块模块,用于对于每个模值,如果所述取模模块取模后的值为零,将所述原数据流中从第n层的上一个数据块的结束位置开始到所述滑动窗口的结束位置之间的数据作为当前数据块,所述当前数据块为第n层数据块;其中,所述n为大于等于1并且小于等于所述N的任一个自然数:
写模块,用于在所述指纹字典中没有存储所述分块模块产生的当前数据块的指纹值时,将所述当前数据块存储到分块字典中,将所述当前数据块的指纹值和所述当前数据块在所述分块字典中的索引信息存储到所述指纹字典中,当所述n大于1时,在新数据流占用的空间中写入所述当前数据块,以覆盖在所述新数据流中所述当前数据块包括的所有第n-1层的数据块,当所述n等于1时,将所述当前数据块顺序写入所述新数据流占用的空间;
所述写模块,还用于在所述指纹字典中存储有所述当前数据块的指纹值时并且所述n大于1时,在所述新数据流占用的空间中写入所述当前数据块的指纹值,以覆盖所述新数据流中所述当前数据块包括的所有第n-1层的数据块的指纹值,在所述指纹字典中存储有所述当前数据块的指纹值时并且当所述n等于1时,将所述当前数据块的指纹值顺序写入所述新数据流占用的空间;
滑动模块,用于在所述写模块将所述分块模块产生的所述当前数据块或所述当前数据块的指纹值写入所述新数据流占用的空间后,将所述滑动窗口在所述原数据流上朝结束位置滑动所述预设长度,获取原数据流上滑动窗口的指纹值,使所述取模模块、所述写模块和所述滑动模块重复执行操作,直至所述滑动窗口的起始位置滑动至所述原数据流的结束位置。
结合第二方面,在第一种可能的实现方式中,当所述当前数据块包括第n-1层的数据块时,所述当前数据块在所述分块字典中的索引信息,根据所述当前数据块包括的第n-1层的数据块的索引信息确定。
结合第二方面,或结合第一方面的第一种可能的实现方式中,在第二种可能的实现方式中,所述装置还包括:
定位模块,用于在所述写模块在新数据流的占用空间中写入所述当前数据块之前,和/或在所述写模块在所述新数据流的占用空间中写入所述当前数据块的指纹值之前,查找所述当前数据块包括的第n-1层的数据块在所述新数据流中的位置。
结合第二方面,或结合第一方面的第一种和第二种可能的实现方式中,在第三种可能的实现方式中,所述装置还包括:
记录模块,用于在所述分块模块将所述原数据流中从第n层的上一个数据块的结束位置开始到所述滑动窗口的结束位置之间的数据作为当前数据块之后,记录所述当前数据块的序号,与所述当前数据块所在的层次、所述当前数据块在所述原数据流的位置和所述当前数据块在所述新数据流的位置之间的对应关系,并保存在位置记录表中;
所述定位模块,用于根据所述当前数据块在所述原数据流中的位置和第n-1层数据块在所述原数据流中的位置,在所述位置记录表中,定位所述原数据流中所述当前数据块包括的第n-1层数据块的记录;从定位到的第n-1层数据块的记录中,获取所述当前数据块包括的第n-1层数据块在所述新数据流中的位置。
结合第二方面,或结合第一方面的第一种至第三种可能的实现方式中,在第四种可能的实现方式中,所述装置还包括:
还原模块,用于将所述新数据流解析为所述原数据流的过程中,当在所述新数据流查找到指纹值时,在所述指纹字典中查找所述指纹值对应的数据块在所述分块字典中的索引信息;
所述还原模块,还用于根据所述索引信息,在所述分块字典中查找所述指纹值对应的数据块,在所述指纹值在所述新数据流占用的空间中,将所述指纹值替换为查找到的数据块。
本发明实施例提供的数据分块方法及装置,在原数据流上同一个滑动窗口的指纹值分别对一组模值,即第1个模值至第N个模值进行取模,根据不同模值的取模结果对原数据流进行不同层次的分块,因此,对于同一个滑动窗口的指纹值,可以对原数据流同时进行粗粒度和细粒度的分块。对于产生的数据块,如果指纹字典中存在该数据块的指纹值,根据该数据块所在的层次,确定是将该数据块的指纹值顺序写入新数据流占用的空间还是替换该数据块包括的下一层数据块的指纹值;如果指纹字典中不存在该数据块的指纹值,根据该数据块所在的层次,确定是将该数据块顺序写入新数据流占用的空间还是替换该数据块包括的下一层数据块,从而,避免了与原数据流相比在新数据流中出现多余的数据块和多余的数据块的指纹值的现象,实现了采用不同粒度的数据块生成新数据流,并且在新数据流中采用大数据块替换已有的小数据块的目的,提高了新数据流的去冗率。本实施例中每层数据块均是在原数据流上直接产生的分块,每个指纹值均是数据块的指纹值,不需要在指纹值中增加指示位,指示该指纹值是数据块的指纹值还是指纹值的指纹值,减少了数据块的指纹值的开销,提高了新数据流的去冗率。另外,由于不同的模值产生不同层次的数据块,每层数据块的产生不依赖于其它层的数据块,因此,对于同一个滑动窗口的指纹值,可以并发产生不同层次的数据块。
附图说明
图1A为本发明实施例提供的一种数据分块方法流程图;
图1B为本发明实施例提供的滑动窗口示意图;
图2为本发明实施例提供的一种三层次式分块示意图;
图3为本发明实施例提供的分块字典和指纹字典的一种结构示意图;
图4为本发明实施例提供的分块字典和指纹字典的另一种结构示意图;
图5为本发明实施例提供的一种数据分块装置结构示意图;
图6为本发明实施例提供的另一种数据分块装置结构示意图。
具体实施方式
本发明实施例可以适用于发送端向接收端发送数据流之前,发送端对原数据流进行分块,将产生的数据块组成新数据流,向接收端发送新数据流,从而节省传输带宽,提高传输效率。
图1A为本发明实施例提供的一种数据分块方法流程图。本实施例通过一组模值:第1个模值至第N个模值,对原数据流进行多层次的分块。其中,N为模值的总数,N为预设值,N为大于1的自然数。
如图1A所示,本实施例提供的方法包括:
步骤11:将滑动窗口从原数据流的起始位置朝原数据流的结束位置滑动预设长度,滑动窗口的初始起始位置与原数据流的起始位置相同。所述滑动窗口的长度为预设长度。
步骤12:获取原数据流上滑动窗口的指纹值,采用滑动窗口的指纹值,分别对第1个模值至第N个模值进行取模,对于每个模值,如果取值后的值为零均执行步骤13,然后执行步骤14。
第1个模值至第N个模值之间的关系如下:第1个模值p1为预设值,第1个模值向左扩展预设位数后得到第2个模值p2,第2个模值向左扩展预设位数后得到第3个模值p3…将第i个模值向左扩展预设位数后得到第i+1个模值,以此类推,得到一组不同位数的模值p1,p2,…,pN,其中i为大于等于1小于N的任一个自然数,N为模值的总个数。举例来说,将模值p1=1100,向左扩展2位,得到模值p2=011100,将模值p2再向左扩展1位,得到模值p3=1011100。采用同样的方法可得到p4,……,pN。
步骤14:将滑动窗口在原数据流上朝结束位置滑动预设长度,获取原数据流上滑动窗口的指纹值,重复执行步骤12至步骤14,直至滑动窗口的起始位置滑动至原数据流的结束位置。
如图1B所示,将滑动窗口从原数据流的起始位置朝原数据流的结束位置滑动预设长度。采用当前滑动窗口的指纹值分别对第1个模值至第N个模值进行取模,并执行步骤13后,将滑动窗口朝原数据流的结束位置方向滑动预设长度,继续采用下一个滑动窗口的指纹值分别对第1个模值至第N个模值进行取模,并执行步骤13,直至滑动窗口的起始位置滑动至原数据流的结束位置。其中,原数据流在滑动窗口中的数据的指纹值称为滑动窗口的指纹值。数据的指纹值可以是数据的标识符,用于标识数据,不同数据的指纹值不相同。
采用滑动窗口的指纹值,分别对第1个模值至第N个模值进行取模,并执行步骤13时,可以按照从第1个模值至第N个模值的顺序,依次对每个模值进行取模,在取模后的值为零时执行步骤13;也可以先同时对N个模值进行取模,然后再按照从第1个模值至第N个模值的顺序,在取模后的值为零时执行步骤13。
如果滑动窗口的指纹值对第n个模值取模后的值为零,执行步骤13。在步骤13中产生数据块,并确定是将数据块还是数据块的指纹值写入新数据流占用空间中。步骤13包括以下操作。
步骤13包括:将原数据流中从第n层的上一个数据块的结束位置开始到滑动窗口的结束位置之间的数据作为当前数据块,当前数据块为第n层数据块;其中,n为大于等于1并且小于等于N的任一个自然数。
换言之,在上述步骤12中,如果滑动窗口的指纹值对第n个模值取模后的值为零,则从原数据流中产生一个数据块,当前数据块的起始位置为原数据流中第n层的上一个数据块的结束位置,当前数据块的结束位置为滑动窗口的结束位置。对于第n个模值产生的数据块,称为第n层的数据块。模值扩展的位数可以自定义,对当前模值扩展的位数影响下一层数据块的长度。
步骤13还包括:在指纹字典中没有存储当前数据块的指纹值时,将当前数据块存储到分块字典中,将当前数据块的指纹值和当前数据块在分块字典中的索引信息存储到指纹字典中;若n大于1,在新数据流占用的空间中写入当前数据块,以覆盖在新数据流中当前数据块包括的所有第n-1层的数据块,否则将当前数据块顺序写入新数据流占用的空间。
分块字典用于存储原数据流上产生的数据块,指纹字典用于存储分块字典中保存的数据块的指纹值和数据块在分块字典中的索引信息。举例来说,数据块在分块字典中的索引信息可以包括数据块的长度和数据块在分块字典中的位置信息。
从原数据流中产生一个数据块后,判断指纹字典中是否存储有当前数据块的指纹值。如果指纹字典中没有存储当前数据块的指纹值,可确定新数据流和分块字典中没有存储当前数据块,需要在新数据流和分块字典中写入当前数据块;如果指纹字典中存储有当前数据块的指纹值,可确定新数据流和分块字典中已存储有当前数据块,不需要在新数据流和分块字典中写入当前数据块。
第n个模值由第n-1个模值向左扩展固定位数后得到。对同一个滑动窗口的指纹值来说,如果滑动窗口的指纹值对第n个模值取模后的值为零,则滑动窗口的指纹值对第n-1个模值取模后的值也为零。而滑动窗口的指纹值对第n-1个模值取模后的值为零,滑动窗口的指纹值对第n个模值取模后的值不一定为零。对于同一个滑动窗口的指纹值,产生第n-1层的数据块后,并不一定会产生第n层的数据块,但产生了第n层数据块时,第n-1层的数据块一定已经产生。因此,从原数据流起始位置向结束位置移动滑动窗口时,与第n-1层的数据块的起始位置相比,第n层的数据块的起始位置会更接近于原数据流的起始位置,而不会比第n-1层的数据块的起始位置远,因而。第n层的数据块的长度大于等于第n-1层的数据块的长度,第n层的数据块会包括有一个或多个第n-1层的数据块。
在指纹字典中没有存储当前数据块的指纹值的情况下,如果当前数据块所在的层次n大于1,当前数据块包括有一个或多个第n-1层的数据块,为了避免新数据流中出现多余的数据块和多余的数据块的指纹值,将当前数据块写入新数据流占用的空间中,以在新数据流中覆盖当前数据块包括的所有第n-1层的数据块。其中,在写入当前数据块之前,新数据流中当前数据块所在的位置存储的是当前数据块包括的所有第n-1层的数据块;在写入当前数据块之后,当前数据块覆盖了新数据流中当前数据块包括的所有第n-1层的数据块,因此,新数据流中当前数据块所在的位置存储的是当前数据块。
如果当前数据块所在的层次n等于1,由于当前数据块是第1层的数据块,其范围内不包括其它层的数据块,因此,直接将当前数据块写入新数据流的末尾。
当前数据块所在的层次n大于1时,可以在新数据流的占用空间中写入所述当前数据块之前,查找所述当前数据块包括的第n-1层的数据块在所述新数据流中的位置,以便在新数据流的占用空间中确定写入当前数据块的位置。可以通过以下方法在新数据流中定位第n层的当前数据块包括的第n-1层的数据块。
首先,产生一个数据块后,记录该数据块的序号、该数据块所在的层次和在原数据流的位置三者之间的对应关系。上述对应关系可以记录在位置记录表中。例如,第3个数据块产生后,因为第3个数据块是第2层的数据块,为第3个数据块记录的对应关系是(序号3,层次2,在原数据流中的位置)。其中,数据块的序号表示数据块产生的先后顺序,序号越小表示产生的时间越早。在新数据流中写入该数据块/该数据块的指纹值后,在上述对应关系中增加该数据块/该数据块的指纹值在新数据流中的位置。例如,在新数据流中写入第3个数据块/第3个数据块的指纹值后,在为第3个数据块记录的对应关系中增加第3个数据块/第3个数据块的指纹值在新数据流中的位置。此时,为第3个数据块记录的对应关系是(序号3,层次2,在原数据流中的位置、在新数据流中的位置)。其中,数据块/数据块的指纹值在数据流中的位置,可以用数据块/数据块的指纹值在数据流中的起始位置和数据块的长度来表示,也可以是数据块/数据块的指纹值在数据流中的起始位置和结束位置来表示。通过记录的数据块/数据块的指纹值在数据流中的位置,可以在数据流中查找到该数据块/该数据块的指纹值。
当指纹字典中没有存储当前数据块的指纹值且当前数据块所在的层次n大于1时,根据当前数据块在原数据流中的位置和第n-1层的数据块在原数据流中的位置,在位置记录表中定位原数据流中当前数据块包括的第n-1层的数据块的记录。从定位到的第n-1层数据块的记录中,获取所述当前数据块包括的第n-1层数据块在所述新数据流中的位置。
当前数据块包括的第n-1层的数据块称为第n-1层的待替换数据块。在原数据流中产生一个数据块后,在新数据流中有可能写入的是该数据块,也可能写入的是该数据块的指纹值。因此,在位置记录表中,记录的第n-1层的待替换数据块在新数据流的位置,有可能是第n-1层的待替换数据块在新数据流中的位置,也可能是第n-1层的待替换数据块的指纹值在新数据流中的位置。从定位到的第n-1层的待替换数据块的记录中,可获取到第n-1层的待替换数据块/第n-1层的待替换数据块的指纹值在新数据流中的位置。获取第n-1层的待替换数据块/第n-1层的待替换数据块的指纹值在新数据流中的位置之后,根据获取到的位置,在新数据流中用第n层的当前数据块替换第n-1层的待替换数据块/第n-1层的待替换数据块的指纹值,同时在位置记录表中删除第n-1层的待替换数据块的记录。
步骤13还包括:在指纹字典中存储有所述当前数据块的指纹值时,若n大于1,在新数据流占用的空间中写入所述当前数据块的指纹值,以覆盖新数据流中当前数据块包括的所有第n-1层的数据块的指纹值,否则将当前数据块的指纹值顺序写入所述新数据流占用的空间。
如果指纹字典中存在当前数据块的指纹值,可以确定分块字典和新数据流中已存储有当前数据块。如果指纹字典中存在当前数据块的指纹值,且当前数据块是第1层数据块,则直接在新数据流的最后一个数据块的结尾处写入当前数据块的指纹值。
在当前数据块所在的层次n大于1的情况下,当前数据块范围内包括有一个或多个第n-1层数据块。因而,产生当前数据块时,如果当前数据块的指纹值已存储在指纹字典中,则当前数据块范围内的所有第n-1层数据块的指纹值也已经写入新数据流中。为了避免新数据流中出现多余的数据块和多余的数据块的指纹值,在新数据流占用的空间中写入当前数据块的指纹值,以覆盖在新数据流中当前数据块包括的所有第n-1层的数据块的指纹值,从而节省了新数据流的传输带宽。其中,在写入当前数据块的指纹值之前,新数据流中当前数据块所在的位置存储的是当前数据块包括的所有第n-1层的数据块的指纹值;在写入当前数据块的指纹值之后,当前数据块的指纹值覆盖了新数据流中当前数据块包括的所有第n-1层的数据块的指纹值,新数据流中当前数据块所在的位置存储的是当前数据块的指纹值。
当前数据块所在的层次n大于1时,可以在新数据流的占用空间中写入所述当前数据块的指纹值之前,查找当前数据块包括的第n-1层的数据块在所述新数据流中的位置,以便在新数据流的占用空间中确定写入当前数据块的指纹值的位置。可以通过以下方法在新数据流中定位到第n层的当前数据块范围内的第n-1层的数据块的指纹值。根据当前数据块在原数据流中的位置和第n-1层数据块在原数据流中的位置,在上述位置记录表中,定位原数据流中当前数据块包括的第n-1层的数据块的记录。从定位到的第n-1层数据块的记录中,获取所述当前数据块包括的第n-1层数据块在所述新数据流中的位置。当前数据块包括的第n-1层的数据块称为第n-1层的待替换数据块。在定位到的第n-1层的待替换数据块的记录中,获取第n-1层的待替换数据块的指纹值在新数据流中的位置。获取到第n-1层的待替换数据块的指纹值在新数据流中的位置后,根据获取到的位置,在新数据流中用当前数据块的指纹值替换第n-1层的待替换数据块的指纹值,同时在位置记录表中删除第n-1层的待替换数据块的记录。
滑动窗口的起始位置滑动至原数据流的结束位置时,结束对原数据流的分块,此时的新数据流为原数据流的替代数据流。接收端可以结合分块字典和指纹字典对发送端发送的新数据流进行解析,获得原数据流。将新数据流解析为原数据流的过程中,若在新数据流查找到指纹值,在指纹字典中查找指纹值对应的数据块在分块字典中的索引信息。根据索引信息,在分块字典中查找所述指纹值对应的数据块,在指纹值在所述新数据流占用的空间中,将指纹值替换为查找到的数据块。
本实施例提供的数据分块方法,在原数据流上同一个滑动窗口的指纹值分别对一组模值,即第1个模值至第N个模值进行取模,根据不同模值的取模结果对原数据流进行不同层次的分块,因此,对于同一个滑动窗口的指纹值,可以对原数据流同时进行粗粒度和细粒度的分块。对于产生的数据块,如果指纹字典中存在该数据块的指纹值,根据该数据块所在的层次,确定是将该数据块的指纹值顺序写入新数据流占用的空间还是在替换该数据块包括的下一层数据块的指纹值;如果指纹字典中不存在该数据块的指纹值,根据该数据块所在的层次,确定是将该数据块顺序写入新数据流占用的空间还是替换该数据块包括的下一层数据块,从而,避免了与原数据流相比,在新数据流中出现多余的数据块和多余的数据块的指纹值的现象,实现了采用不同粒度的数据块生成新数据流,并且在新数据流中采用大数据块替换已有的小数据块的目的,提高了新数据流的去冗率。本实施例中每层数据块均是在原数据流上直接产生的分块,每个指纹值均是数据块的指纹值,不需要在指纹值中增加指示位,指示该指纹值是数据块的指纹值还是指纹值的指纹值,减少了数据块的指纹值的开销,提高了新数据流的去冗率。另外,由于不同的模值产生不同层次的数据块,每层数据块的产生不依赖于其它层的数据块,因此,对于同一个滑动窗口的指纹值,可以并发产生不同层次的数据块。
进一步,为节省分块字典的存储空间,在分块字典中没有存储当前数据块的指纹值时,通过判断当前数据块是否包括第n-1层的数据块,确定是否在分块字典中写入当前数据块。若所述当前数据块包括第n-1层的数据块,将所述当前数据块的指纹值和所述当前数据块在所述分块字典中的索引信息存储到所述指纹字典中,其中,所述当前数据块在所述分块字典中的索引信息,根据所述当前数据块包括的第n-1层的数据块的索引信息确定。若所述当前数据块不包括第n-1层的数据块,将所述当前数据块存储到分块字典中,将所述当前数据块的指纹值和所述当前数据块在所述分块字典中的索引信息存储到所述指纹字典中。
如图2所示的三层次式分块示意图。图2中的分块采用的模值为p1,p2和p3。p1=10,将p1向左扩展1位,得到p2=110。将p1向左扩展两位,得到p3=01110。
滑动窗口在原数据流上从左向右滑动,滑动窗口内的指纹值为111010时。该滑动窗口的指纹值对p1取模后的值为0,产生一个第1层的分块,记为分块1。此时,该滑动窗口的指纹值对p2和p3取模后的值均不为0。在指纹字典中没有存储分块1的指纹,如图3所示,在分块字典中存储分块1,并在指纹字典中保存分块1的指纹值和分块1在分块字典中的索引信息。分块在分块字典中的索引信息包括在分块字典中的地址、偏移量和长度。然后,将分块1写入新数据流中。举例来说,分块1在分块字典中的地址为分块字典中存储分块1数据的条目的位置。
滑动窗口在原数据流上继续向右滑动,滑动窗口的指纹值为010110。该滑动窗口的指纹值对p1取模后的值为0,产生一个第1层的分块,记为分块2。该滑动窗口的指纹值对p2取模后的值也为0,产生一个第2层的分块,记为分块3。该滑动窗口的指纹值对p3取模后的值不为0。在指纹字典中没有存储分块2的指纹,如图3所示,在分块字典中存储分块2,并在指纹字典中保存分块2的指纹值和分块2在分块字典中的2起始地址、偏移量和长度,然后,将分块2与入新数据流中最后一个分块即分块1的末尾。产生分块3后,在指纹字典中没有存储分块3的指纹,在分块字典中存储分块3,并在指纹字典中保存分块3的指纹值和分块3在分块字典中的地址、偏移量和长度,然后,在新数据流中用第2层的分块3替换第1层的分块1和分块2。
滑动窗口在原数据流上继续向右滑动,滑动窗口的指纹值为001110。该滑动窗口的指纹值对p1、p2和p3均为0,先后产生了第1层的分块4、第2层的分块4和第3层的分块5。第1层的分块4和第2层的分块4是同一个分块,因此,只保存第1层的分块,记为分块4。产生分块4后,分块4的指纹值还没有存储在指纹字典中,如图3所示,在分块字典中存储分块4,并在指纹字典中保存分块4的指纹值和分块4在分块字典中的起始地址、偏移量和长度,然后,将分块4写入新数据流中最后一个分块即分块1的末尾。产生分块5后,分块5的指纹值还没有存储在指纹字典中,则在分块字典中存储分块5,
在指纹字典中保存分块5的指纹值和分块5在分块字典中的起始地址、偏移量和长度,然后,在新数据流中用第3层的分块5替换第2层的分块3和分块4。
滑动窗口在原数据流上继续向右滑动,如果产生的是分块3,确定分块3的指纹值已存储在指纹字典且分块3是第2层的分块,可以确定在新数据流中,当前分块3占据的范围内包括的第1层的数据块已替换为指纹值,用分块3的指纹值替换原数据流中分块3范围内的第1层的分块1和分块2。如果产生的是分块5,确定分块5的指纹值已存储在指纹字典且分块3是第2层的分块,可以确定在新数据流中,当前分块5占据的范围内包括的第2层的数据块已替换为指纹值,用分块5的指纹值替换原数据流中分块5范围内的第2层的分块3和分块4。如果产生的是第1层的分块1或2,由于分块1或分块2的指纹值已存储在指纹字典中,且分块1或分块2是第1层的分块,直接将分块1或分块2的指纹值写入新数据流的最后一个分块的末尾处。
进一步,为节省分块字典的存储空间,如果产生的是分块3,由图2可知,第2层的分块3由第1层的分块1和分块2组成,分块字典中已存储了分块3,可以不在分块字典中重复存储分块3。如图4所示,分块1的偏移量为0,分块2存放在分块1之后,分块2的偏移量为分块1的长度。对于第2层的分块3,分块3的地址与分块1的地址相同,也与分块2的地址相同,分块3的偏移量为分块1的偏移量。分块3的长度为分块1的长度与分块2的长度之和。同样,第3层的分块5由第2层的分块3和分块4组成,分块字典中已存储了分块5,可以不在分块字典中重复存储分块5。分块5的偏移量为分块3的偏移量。分块5的地址与分块3的地址相同,分块5的长度为分块3的长度与分块4的长度之和。
图5本发明实施例提供的一种数据分块装置结构示意图。如图5所示,本实施例提供的装置包括:获取模块56、取模模块51、分块模块52和写模块53以及滑动模块50。
获取模块56,用于获取原数据流上滑动窗口的指纹值,所述滑动窗口的初始起始位置与所述原数据流的起始位置相同,所述滑动窗口的长度为预设长度。
取模模块51,用于采用所述滑动窗口的指纹值,分别对第1个模值至第N个模值进行取模,其中,将第i个模值向左扩展预设位数后得到第i+1个模值,所述i为大于等于1并且小于所述N的任一个自然数,所述N为模值的总个数。
分块模块52,用于对于每个模值,如果所述取模模块取模后的值为零,将所述原数据流中从第n层的上一个数据块的结束位置开始到所述滑动窗口的结束位置之间的数据作为当前数据块,所述当前数据块为第n层数据块;其中,所述n为大于等于1并且小于等于所述N的任一个自然数:
写模块53,用于在指纹字典中没有存储所述分块模块产生的当前数据块的指纹值时,将所述当前数据块存储到分块字典中,将所述当前数据块的指纹值和所述当前数据块在所述分块字典中的索引信息存储到所述指纹字典中;若所述n大于1,在新数据流占用的空间中写入所述当前数据块,以覆盖在所述新数据流中所述当前数据块包括的所有第n-1层的数据块,否则将所述当前数据块顺序写入所述新数据流占用的空间;
所述写模块53,还用于在所述指纹字典中存储有所述当前数据块的指纹值时,若n大于1,在所述新数据流占用的空间中写入所述当前数据块的指纹值,以覆盖所述新数据流中所述当前数据块包括的所有第n-1层的数据块的指纹值,否则将所述当前数据块的指纹值顺序写入所述新数据流占用的空间;
滑动模块50,用于在所述写模块将所述分块模块产生的所述当前数据块或所述当前数据块的指纹值写入所述新数据流占用的空间后,将所述滑动窗口在所述原数据流上朝结束位置滑动所述预设长度,获取原数据流上滑动窗口的指纹值,使所述取模模块51、所述写模块53和所述滑动模块50重复执行操作,直至所述滑动窗口的起始位置滑动至所述原数据流的结束位置。
可选地,所述写模块53,还用于若所述当前数据块包括第n-1层的数据块,将所述当前数据块的指纹值和所述当前数据块在所述分块字典中的索引信息存储到所述指纹字典中,其中,所述当前数据块在所述分块字典中的索引信息,根据所述当前数据块包括的第n-1层的数据块的索引信息确定。
可选地,所述写模块53,还用于若所述当前数据块不包括第n-1层的数据块,将所述当前数据块存储到所述分块字典中,将所述当前数据块的指纹值和所述当前数据块在所述分块字典中的索引信息存储到所述指纹字典中。
本实施例提供的数据分块装置,取模模块在原数据流上同一个滑动窗口的指纹值分别对一组模值第1个模值至第N个模值进行取模,分块模块根据不同模值的取模结果对原数据流进行不同层次的分块,因此,对于同一个滑动窗口的指纹值,可以对原数据流同时进行粗粒度和细粒度的分块。对于产生的数据块,如果指纹字典中存在该数据块的指纹值,写模块根据该数据块所在的层次,确定是将该数据块的指纹值顺序写入新数据流占用的空间还是替换该数据块包括的下一层数据块的指纹值;如果指纹字典中不存在该数据块的指纹值,写模块根据该数据块所在的层次,确定是将该数据块顺序写入新数据流占用的空间还是替换该数据块包括的下一层数据块,从而,避免了与原数据流相比在新数据流中出现多余的数据块和多余的数据块的指纹值的现象,实现了采用不同粒度的数据块生成新数据流,并且在新数据流中采用大数据块替换已有的小数据块的目的,提高了新数据流的去冗率。本实施例中每层数据块均是在原数据流上直接产生的分块,每个指纹值均是数据块的指纹值,不需要在指纹值中增加指示位,指示该指纹值是数据块的指纹值还是指纹值的指纹值,减少了数据块的指纹值的开销,提高了新数据流的去冗率。另外,由于,不同的模值产生不同层次的数据块,每层数据块的产生不依赖于其它层的数据块,因国此,对于同一个滑动窗口的指纹值,可以并发产生不同层次的数据块。
如图6所示,图5中装置还可包括:定位模块54和记录模块55。
记录模块55,用于在所述分块模块52将所述原数据流中从第n层的上一个数据块的结束位置开始到所述滑动窗口的结束位置之间的数据作为当前数据块之后,记录所述当前数据块的序号,与所述当前数据块所在的层次、所述当前数据块在所述原数据流的位置和所述当前数据块在所述新数据流的位置之间的对应关系,并保存在位置记录表中;
定位模块54,用于在所述写模块53在新数据流的占用空间中写入所述当前数据块之前,和/或所述写模块53在所述新数据流的占用空间中写入所述当前数据块的指纹值之前,查找所述当前数据块包括的第n-1层的数据块在所述新数据流中的位置。
进一步,所述定位模块54,具体用于根据所述当前数据块在所述原数据流中的位置和第n-1层数据块在所述原数据流中的位置,在所述位置记录表中,定位所述原数据流中所述当前数据块包括的第n-1层数据块的记录;从定位到的第n-1层数据块的记录中,获取所述当前数据块包括的第n-1层数据块在所述新数据流中的位置。
为了根据新数据流还原出原数据流,图5和图6中所示的装置还可包括:还原模块。
还原模块,用于将所述新数据流解析为所述原数据流的过程中,若在所述新数据流查找到指纹值,在所述指纹字典中查找所述指纹值对应的数据块在所述分块字典中的索引信息;
所述还原模块,还用于根据所述索引信息,在所述分块字典中查找所述指纹值对应的数据块,在所述指纹值在所述新数据流占用的空间中,将所述指纹值替换为查找到的数据块。
图5和图6所示的各个模块可以用处理器(processor)来实现。可选地,图5和图6所示的装置还可以包括存储模块,用于存储所述分块字典和所述指纹字典。可选地,所述存储模块可以用存储器来实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种数据分块方法,其特征在于,包括:
11.获取原数据流上滑动窗口的指纹值,所述滑动窗口的初始起始位置与所述原数据流的起始位置相同,所述滑动窗口的长度为预设长度;
12.采用所述滑动窗口的指纹值,分别对第1个模值至第N个模值进行取模,对于每个模值,如果取值后的值为零均执行步骤13和14,其中,将第i个模值向左扩展预设位数后得到第i+1个模值,所述i为大于等于1并且小于所述N的任一个自然数,所述N为模值的总个数;
13.将所述原数据流中从第n层的上一个数据块的结束位置开始到所述滑动窗口的结束位置之间的数据作为当前数据块,所述当前数据块为第n层数据块;其中,所述n为大于等于1并且小于等于所述N的任一个自然数:
在指纹字典中没有存储所述当前数据块的指纹值时,将所述当前数据块存储到分块字典中,将所述当前数据块的指纹值和所述当前数据块在所述分块字典中的索引信息存储到所述指纹字典中,当所述n大于1时,在新数据流占用的空间中写入所述当前数据块,以覆盖在所述新数据流中所述当前数据块包括的所有第n-1层的数据块,当所述n等于1时,将所述当前数据块顺序写入所述新数据流占用的空间;
在所述指纹字典中存储有所述当前数据块的指纹值时并且当n大于1时,在所述新数据流占用的空间中写入所述当前数据块的指纹值,以覆盖所述新数据流中所述当前数据块包括的所有第n-1层的数据块的指纹值,在所述指纹字典中存储有所述当前数据块的指纹值时并且当n等于1时,将所述当前数据块的指纹值顺序写入所述新数据流占用的空间;
14.将所述滑动窗口在所述原数据流上朝结束位置滑动所述预设长度,获取原数据流上滑动窗口的指纹值,重复执行步骤12-14,直至所述滑动窗口的起始位置滑动至所述原数据流的结束位置。
2.根据权利要求1所述的方法,其特征在于,将所述当前数据块存储到分块字典中,将所述当前数据块的指纹值和所述当前数据块在所述分块字典中的索引信息存储到所述指纹字典中,包括:
当所述当前数据块包括第n-1层的数据块时,将所述当前数据块的指纹值和所述当前数据块在所述分块字典中的索引信息存储到所述指纹字典中,其中,所述当前数据块在所述分块字典中的索引信息,根据所述当前数据块包括的第n-1层的数据块的索引信息确定;
当所述当前数据块不包括第n-1层的数据块时,将所述当前数据块存储到所述分块字典中,将所述当前数据块的指纹值和所述当前数据块在所述分块字典中的索引信息存储到所述指纹字典中。
3.根据权利要求1或2所述的方法,其特征在于,在新数据流的占用空间中写入所述当前数据块之前,和/或在所述新数据流的占用空间中写入所述当前数据块的指纹值之前,还包括:
查找所述当前数据块包括的第n-1层的数据块在所述新数据流中的位置。
4.根据权利要求3所述的方法,其特征在于:
在所述将所述原数据流中从第n层的上一个数据块的结束位置开始到所述滑动窗口的结束位置之间的数据作为当前数据块之后,还包括:
记录所述当前数据块的序号,与所述当前数据块所在的层次、所述当前数据块在所述原数据流的位置和所述当前数据块在所述新数据流的位置之间的对应关系,并保存在位置记录表中;
查找所述当前数据块包括的第n-1层的数据块在所述新数据流中的位置,包括:
根据所述当前数据块在所述原数据流中的位置和第n-1层数据块在所述原数据流中的位置,在所述位置记录表中,定位所述原数据流中所述当前数据块包括的第n-1层数据块的记录;
从定位到的第n-1层数据块的记录中,获取所述当前数据块包括的第n-1层数据块在所述新数据流中的位置。
5.根据权利要求1或2所述的方法,其特征在于,还包括:
将所述新数据流解析为所述原数据流的过程中,当在所述新数据流查找到指纹值时,在所述指纹字典中查找所述指纹值对应的数据块在所述分块字典中的索引信息;
根据所述索引信息,在所述分块字典中查找所述指纹值对应的数据块,在所述指纹值在所述新数据流占用的空间中,将所述指纹值替换为查找到的数据块。
6.一种数据分块装置,其特征在于,包括:
获取模块:用于获取原数据流上滑动窗口的指纹值,所述滑动窗口的初始起始位置与所述原数据流的起始位置相同,所述滑动窗口的长度为预设长度;
取模模块,用于采用所述滑动窗口的指纹值,分别对第1个模值至第N个模值进行取模,其中,将第i个模值向左扩展预设位数后得到第i+1个模值,所述i为大于等于1并且小于所述N的任一个自然数,所述N为模值的总个数;
分块模块,用于对于每个模值,如果所述取模模块取模后的值为零,将所述原数据流中从第n层的上一个数据块的结束位置开始到所述滑动窗口的结束位置之间的数据作为当前数据块,所述当前数据块为第n层数据块;其中,所述n为大于等于1并且小于等于所述N的任一个自然数:
写模块,用于在所述指纹字典中没有存储所述分块模块产生的当前数据块的指纹值时,将所述当前数据块存储到分块字典中,将所述当前数据块的指纹值和所述当前数据块在所述分块字典中的索引信息存储到所述指纹字典中,当所述n大于1时,在新数据流占用的空间中写入所述当前数据块,以覆盖在所述新数据流中所述当前数据块包括的所有第n-1层的数据块,当所述n等于1时,将所述当前数据块顺序写入所述新数据流占用的空间;
所述写模块,还用于在所述指纹字典中存储有所述当前数据块的指纹值时并且所述n大于1时,在所述新数据流占用的空间中写入所述当前数据块的指纹值,以覆盖所述新数据流中所述当前数据块包括的所有第n-1层的数据块的指纹值,在所述指纹字典中存储有所述当前数据块的指纹值时并且当所述n等于1时,将所述当前数据块的指纹值顺序写入所述新数据流占用的空间;
滑动模块,用于在所述写模块将所述分块模块产生的所述当前数据块或所述当前数据块的指纹值写入所述新数据流占用的空间后,将所述滑动窗口在所述原数据流上朝结束位置滑动所述预设长度,获取原数据流上滑动窗口的指纹值,使所述取模模块、所述写模块和所述滑动模块重复执行操作,直至所述滑动窗口的起始位置滑动至所述原数据流的结束位置。
7.根据权利要求6所述的装置,其特征在于:当所述当前数据块包括第n-1层的数据块时,所述当前数据块在所述分块字典中的索引信息,根据所述当前数据块包括的第n-1层的数据块的索引信息确定。
8.根据权利要求6或7所述的装置,其特征在于,还包括:
定位模块,用于在所述写模块在新数据流的占用空间中写入所述当前数据块之前,和/或在所述写模块在所述新数据流的占用空间中写入所述当前数据块的指纹值之前,查找所述当前数据块包括的第n-1层的数据块在所述新数据流中的位置。
9.根据权利要求8所述的装置,其特征在于,还包括:
记录模块,用于在所述分块模块将所述原数据流中从第n层的上一个数据块的结束位置开始到所述滑动窗口的结束位置之间的数据作为当前数据块之后,记录所述当前数据块的序号,与所述当前数据块所在的层次、所述当前数据块在所述原数据流的位置和所述当前数据块在所述新数据流的位置之间的对应关系,并保存在位置记录表中;
所述定位模块,具体用于根据所述当前数据块在所述原数据流中的位置和第n-1层数据块在所述原数据流中的位置,在所述位置记录表中,定位所述原数据流中所述当前数据块包括的第n-1层数据块的记录;从定位到的第n-1层数据块的记录中,获取所述当前数据块包括的第n-1层数据块在所述新数据流中的位置。
10.根据权利要求6或7所述的装置,其特征在于,还包括:
还原模块,用于将所述新数据流解析为所述原数据流的过程中,当在所述新数据流查找到指纹值时,在所述指纹字典中查找所述指纹值对应的数据块在所述分块字典中的索引信息;
所述还原模块,还用于根据所述索引信息,在所述分块字典中查找所述指纹值对应的数据块,在所述指纹值在所述新数据流占用的空间中,将所述指纹值替换为查找到的数据块。
CN201310312216.7A 2013-07-23 2013-07-23 数据分块方法及装置 Active CN104348571B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201310312216.7A CN104348571B (zh) 2013-07-23 2013-07-23 数据分块方法及装置
PCT/CN2014/082237 WO2015010555A1 (zh) 2013-07-23 2014-07-15 数据分块方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310312216.7A CN104348571B (zh) 2013-07-23 2013-07-23 数据分块方法及装置

Publications (2)

Publication Number Publication Date
CN104348571A true CN104348571A (zh) 2015-02-11
CN104348571B CN104348571B (zh) 2018-02-06

Family

ID=52392700

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310312216.7A Active CN104348571B (zh) 2013-07-23 2013-07-23 数据分块方法及装置

Country Status (2)

Country Link
CN (1) CN104348571B (zh)
WO (1) WO2015010555A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105787107A (zh) * 2016-03-22 2016-07-20 南京工程学院 一种大数据冗余检测方法
CN108256352A (zh) * 2018-01-15 2018-07-06 北京安博通科技股份有限公司 一种web防护特征库自动打包的方法、装置及终端
CN108958572A (zh) * 2017-05-25 2018-12-07 腾讯科技(深圳)有限公司 消息数据处理方法、装置、存储介质和计算机设备
CN111722787A (zh) * 2019-03-22 2020-09-29 华为技术有限公司 一种分块方法及其装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101706825A (zh) * 2009-12-10 2010-05-12 华中科技大学 一种基于文件内容类型的重复数据删除方法
CN101968796A (zh) * 2010-09-09 2011-02-09 北京邮电大学 一种双向并发执行的文件级可变长数据分块方法
US20120136842A1 (en) * 2010-11-30 2012-05-31 Inventec Corporation Partitioning method of data blocks

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7055008B2 (en) * 2003-01-22 2006-05-30 Falconstor Software, Inc. System and method for backing up data
CN103019887B (zh) * 2012-12-12 2016-01-06 华为技术有限公司 数据备份方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101706825A (zh) * 2009-12-10 2010-05-12 华中科技大学 一种基于文件内容类型的重复数据删除方法
CN101968796A (zh) * 2010-09-09 2011-02-09 北京邮电大学 一种双向并发执行的文件级可变长数据分块方法
US20120136842A1 (en) * 2010-11-30 2012-05-31 Inventec Corporation Partitioning method of data blocks

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105787107A (zh) * 2016-03-22 2016-07-20 南京工程学院 一种大数据冗余检测方法
CN105787107B (zh) * 2016-03-22 2018-10-30 南京工程学院 一种大数据冗余检测方法
CN108958572A (zh) * 2017-05-25 2018-12-07 腾讯科技(深圳)有限公司 消息数据处理方法、装置、存储介质和计算机设备
CN108958572B (zh) * 2017-05-25 2022-12-16 腾讯科技(深圳)有限公司 消息数据处理方法、装置、存储介质和计算机设备
CN108256352A (zh) * 2018-01-15 2018-07-06 北京安博通科技股份有限公司 一种web防护特征库自动打包的方法、装置及终端
CN111722787A (zh) * 2019-03-22 2020-09-29 华为技术有限公司 一种分块方法及其装置
CN111722787B (zh) * 2019-03-22 2021-12-03 华为技术有限公司 一种分块方法及其装置
US11755540B2 (en) 2019-03-22 2023-09-12 Huawei Technologies Co., Ltd. Chunking method and apparatus

Also Published As

Publication number Publication date
CN104348571B (zh) 2018-02-06
WO2015010555A1 (zh) 2015-01-29

Similar Documents

Publication Publication Date Title
CN101446921B (zh) 一种Flash存储器的动态存储方法
EP2209074A1 (en) Data storage processing method, data searching method and devices thereof
CN103019884B (zh) 基于虚拟机快照的内存页去重方法及装置
CN104461390A (zh) 将数据写入叠瓦状磁记录smr硬盘的方法及装置
CN106201778B (zh) 信息处理方法及存储设备
JP6823734B2 (ja) ソリッドステートディスクアクセス
CN104348571A (zh) 数据分块方法及装置
KR20110093035A (ko) 플래시 주소 변환 장치 및 그 방법
CN103778120B (zh) 全局文件标识生成方法、生成装置及相应的分布式文件系统
CN101452422B (zh) 一种芯片的数据读写方法、相应装置和系统
CN104503703A (zh) 缓存的处理方法和装置
EP1701358A1 (en) Data write-in method for flash memory
CN107506311B (zh) 一种固态硬盘的ftl表的刷写方法及装置
US20070100852A1 (en) File system management for integrated NOR and NAND flash memory
CN103544124B (zh) Nand Flash存储器的访问方法
CN104050057A (zh) 一种历史感知的数据去重碎片消除方法与系统
CN106775481B (zh) 数据读取方法及设备
CN102426601B (zh) 数据删除方法和装置
CN101676872A (zh) 一种固态硬盘的结构及其加速初始化的方法
CN111541617B (zh) 一种用于高速大规模并发数据流的数据流表处理方法及装置
CN105446652B (zh) 进行摄像数据存储的方法及装置
CN101667458B (zh) 一种固态硬盘全盘擦除的方法和相应的设备
CN112463055A (zh) 一种优化并使用固态硬盘l2p表的方法、系统、设备及介质
CN109086001B (zh) 一种NAND Flash垃圾回收方法及系统
CN101655819B (zh) 对半导体存储介质进行空块回收的方法、系统及设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20201103

Address after: 625, room 269, Connaught platinum Plaza, No. 518101, Qianjin Road, Xin'an street, Shenzhen, Guangdong, Baoan District

Patentee after: SHENZHEN SHANGGE INTELLECTUAL PROPERTY SERVICE Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20201203

Address after: 213000 No. 11 Qingyang North Road, Tianning District, Changzhou, Jiangsu

Patentee after: Changzhou Hong quantity Electronic Technology Co.,Ltd.

Address before: 625, room 269, Connaught platinum Plaza, No. 518101, Qianjin Road, Xin'an street, Shenzhen, Guangdong, Baoan District

Patentee before: SHENZHEN SHANGGE INTELLECTUAL PROPERTY SERVICE Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220906

Address after: Tianning District Hehai road 213000 Jiangsu city of Changzhou province No. 9

Patentee after: Changzhou Tianning Communication Technology Industrial Park Co.,Ltd.

Address before: 213000 No. 11 Qingyang North Road, Tianning District, Changzhou City, Jiangsu Province

Patentee before: Changzhou Hong quantity Electronic Technology Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230112

Address after: Tianning District Hehai road 213000 Jiangsu city of Changzhou province No. 9

Patentee after: Changzhou Hengtang Technology Industry Co.,Ltd.

Address before: Tianning District Hehai road 213000 Jiangsu city of Changzhou province No. 9

Patentee before: Changzhou Tianning Communication Technology Industrial Park Co.,Ltd.