CN111722787A - 一种分块方法及其装置 - Google Patents
一种分块方法及其装置 Download PDFInfo
- Publication number
- CN111722787A CN111722787A CN201910221512.3A CN201910221512A CN111722787A CN 111722787 A CN111722787 A CN 111722787A CN 201910221512 A CN201910221512 A CN 201910221512A CN 111722787 A CN111722787 A CN 111722787A
- Authority
- CN
- China
- Prior art keywords
- character
- data segment
- data
- length
- determining
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
- G06F16/1752—De-duplication implemented within the file system, e.g. based on file segments based on file chunks
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3091—Data deduplication
- H03M7/3095—Data deduplication using variable length segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
- G06F16/152—File search processing using file content signatures, e.g. hash values
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请实施例公开了一种分块方法以及实现该方法的装置。本申请实施例提出的方法可以从待分块数据流的头部开始,确定出第一长度的第一数据段,并根据第一数据段中每个字符的字符值,确定第一数据段的数据分布特征,进而针对不同数据分布特征采用不同方法确定分块位置,通过这种方式,可以更好地对数据流进行分块,从而有利于增强去重效果。
Description
技术领域
本申请涉及数据处理领域,尤其涉及一种分块方法及其装置。
背景技术
随着网络的高速发展,数据总量呈爆炸式增长,这对数据存储和数据传输提出了新的挑战。数据去重作为一种能够有效地消除冗余数据的技术,成为了研究热点。
一般来说,数据去重可以分为四个环节:数据分块、指纹计算、指纹索引和存储。数据流在数据分块阶段被分割成较小的数据块,在指纹计算阶段对分割得到的各个数据块计算指纹,然后在指纹索引阶段通过匹配数据块的指纹辨识出重复的数据块,最后将不重复的数据块进行存储,而重复的数据块不重复存储。
目前,数据分块技术主要包括定长分块算法,定长分块算法是设定一个预先定义的块大小,对所有数据流均按照这个预先定义的块大小进行划分,定长分块算法会受到边界偏移问题的影响。边界偏移即数据的插入或删除等操作导致的数据块的边界发生偏移,进而使得本来重复的数据块被检测为不重复。例如,在原文件的最前面插入一个字符,采用定长分块算法,那么编辑后的文件的所有数据块的边界与原文件的数据块相比都会相差一个字符的长度,因此没有任何一个数据块会被检测出是重复的。可见,定长分块算法的分块效果较差,从而影响去重效果。
发明内容
本申请实施例提供了一种分块方法及其装置,可以更好地对数据流进行分块,从而有利于增强去重效果。
第一方面,本申请实施例提供了一种分块方法,该方法包括:从待分块数据流的头部开始,确定出第一长度的第一数据段,第一数据段包括多个字符,第一数据段包括的多个字符的字符长度为第一长度;根据第一数据段中每个字符的字符值,确定第一数据段的数据分布特征;根据第一数据段的数据分布特征,确定待分块数据流的分块位置;将第一数据段中的第一个字符的起始位置与分块位置之间的字符作为数据块。
在该技术方案中,根据第一数据段中每个字符的字符值,确定第一数据段的数据分布特征,进而针对不同数据分布特征采用不同方法确定分块位置,通过这种方式,使得本申请实施例提出的分块方法可以更好地适应属于不同数据分布特征的待分块数据流,这样可以更好地对待分块数据流进行分块,从而有利于增强去重效果。
在一种实现方式中,根据第一数据段的中字符的字符值,确定第一数据段的数据分布特征的具体实施方式可以为:若第一数据段中的第一个字符的字符值为第一数据段中的字符的字符值中的最大值,且第一数据段中的第一个字符的字符值与第一数据段中的最后一个字符的字符值相等,则将第一数据段的数据分布特征确定为平原分布。
在该技术方案中,第一数据段中的第一个字符的字符值为第一数据段中的所有字符的字符值中的最大字符值,且第一数据段中的第一个字符的字符值与第一数据段中的最后一个字符的字符值相等时,表明第一数据段中的第一个字符与最后一个字符之间的各个字符的字符值均小于或等于最大字符值,那么可以认为第一数据段中的每个字符的字符值均相等且均为最大字符值的概率较高,因此,可以将第一数据段的数据分布特征确定为平原分布。另一方面,由于确定第一数据段中的每个字符的字符值是否均相同的具体实施方式可以为:首先确定第一数据段中的所有字符的字符值中的最大字符值,然后依次判断第一数据段中的每个字符的字符值是否均等于该最大字符值,若是,则确定第一数据段中的每个字符的字符值均相同。相较于确定第一数据段中的每个字符的字符值是否均相同,本技术方案仅需确定第一数据段中的所有字符的字符值中的最大字符值,然后比较第一数据段中的第一个字符的字符值和最后一个字符的字符值是否均等于最大字符值即可确定第一数据段的数据分布特征是否为平原分布,可见,采用本技术方案可以更快速地确定第一数据段的数据分布特征,从而有利于提高待分块数据流的分块效率。
在一种实现方式中,当第一数据段的数据分布特征为平原分布时,根据期望分块长度确定待分块数据流的分块位置的具体实施方式可以为:从第一数据段的最后一个字符之后的字符中,确定第一目标字符,第一目标字符满足分块条件,分块条件包括第一目标字符的字符值与第一数据段中的第一个字符的字符值不同,且以第一数据段中的第一个字符作为起始字符,以第一目标字符的前一个字符作为结束字符的数据段的字符长度大于或等于期望分块长度;将第一目标字符的起始位置确定为待分块数据流的分块位置。
在该技术方案中,当第一数据段的数据分布特征为平原分布时,通过将满足两个分块条件的第一目标字符的起始位置确定为分块位置,一方面,可以使得根据分块位置确定出的数据块的长度大于或等于期望分块长度,避免第一数据段的数据分布特征为平原分布时,采用不对称极值算法输出的数据块长度小于期望分块长度的情况,这样可以有效降低计算数据块的哈希值的功耗;另一方面,可以尽可能地将字符值相同的更多字符划分到同一个数据块中,从而有利于提高去重率并增强去重效果。
在一种实现方式中,当第一数据段的数据分布特征为平原分布时,根据期望分块长度确定待分块数据流的分块位置的具体实施方式可以为:将与第一数据段的第一个字符的起始位置之间的字符长度为期望分块长度的位置确定为待分块数据流的分块位置。
在该技术方案中,在确定第一数据段的数据分布特征为平原分布的情况下,第一数据段(字符长度为w1)之后的且相邻的一段数据段(如字符长度为E-w1的一段数据段)的数据分布特征也为平原分布的概率较高。因此,将与第一数据段的第一个字符的起始位置之间的字符长度为期望分块长度E的位置确定为待分块数据流的分块位置,一方面,可以将同属于平原分布的第一数据段和第一数据段之后的且相邻的字符长度为E-w1的数据段划分为同一个数据块,这样可以尽可能地将字符值相同的更多字符划分到同一个数据块中,从而有利于提高去重率并增强去重效果;另一方面,可以不用计算前述字符长度为E-w1的数据段中的每个字符的字符值,这样可以提高分块效率,从而有利于提高去重系统的吞吐量。
在一种实现方式中,当第一数据段的数据分布特征为非平原分布时,根据第二长度确定待分块数据流的分块位置的具体实施方式可以为:从待分块数据流中确定第二数据段,第二数据段的第一个字符与第一数据段的最后一个字符相邻,第二目标字符的结束位置与第二数据段的最后一个字符的结束位置之间的字符长度为第二长度;若第二数据段中的每个字符的字符值均小于第二目标字符的字符值,则将第二数据段的最后一个字符的结束位置确定为待分块数据流的分块位置。
在该技术方案中,在确定第一数据段的数据分布特征为非平原分布之后,还可以从待分块数据流中确定第二数据段,并根据第二数据段中的每个字符的字符值进一步判断第一数据段的数据分布特征为高原分布还是均匀分布,当第一数据段的数据分布特征为高原分布时,相较于不对称极值算法在发现极大值之后,将极大值对应的字符后的第w个字符的结束位置确定为待分块数据流的分块位置,本申请实施例公开的分块方法可以将第二目标字符(即极大值对应的字符)后的第w2个字符的结束位置确定为待分块数据流的分块位置。又由于w2<w,因此,采用本申请实施例公开的分块方法,当第一数据段的数据分布特征为高原分布时,输出的数据块的字符长度小于采用不对称极值算法输出的数据块的字符长度,这样可以尽快进入下一个分块周期,从而有效减弱高原分布的出现对分块位置的搜索过程造成的影响。
第二方面,本申请实施例提供了一种分块装置,该装置具有实现第一方面所提供的分块方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第三方面,本申请实施例提供一种计算机可读存储介质,用于储存为第二方面所述的分块装置所用的计算机程序指令,其包含用于执行上述第一方面所涉及的程序。
第四方面,本申请实施例提供一种服务设备,该服务设备包括存储器和处理器,存储器中存储有程序指令,处理器通过总线与存储器连接,处理器调用存储器中存储的程序指令以使服务设备执行第一方面所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,该程序产品包括程序,所述程序被执行时实现上述第一方面所述的方法。
第六方面,本申请实施例还提供一种处理器,该处理器包括至少一个电路,用于从待分块数据流的头部开始,确定出第一长度的第一数据段,并根据第一数据段中的字符的字符值,确定第一数据段的数据分布特征,并根据第一数据段的数据分布特征,确定待分块数据流的分块位置,该处理器还包括至少一个电路,用于将第一数据段中的第一个字符的起始位置与分块位置之间的字符作为数据块。上述处理器可以为芯片,可以执行用于实现前述第一方面所涉及的方法的指令或程序。
第七方面,本申请实施例还提供了一种芯片系统,该芯片系统包括处理器,例如,应用于服务设备中,用于实现上述第一方面中所涉及的功能或方法。在一种可行的实现方式中,所述芯片系统还包括存储器,所述存储器,用于保存实现上述第一方面所述方法的功能必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
附图说明
图1a是现有的不对称极值算法的工作原理示意图;
图1b是本申请实施例公开的一种数据流中的某一数据段的数据分布特征为平原分布的示意图;
图1c是本申请实施例公开的一种数据流中的某一数据段的数据分布特征为高原分布的示意图;
图1d是本申请实施例公开的一种网络架构示意图;
图2是本申请实施例公开的一种分块方法的流程示意图;
图3a是本申请实施例公开的另一种分块方法的流程示意图;
图3b是本申请实施例公开的一种根据期望分块长度确定待分块数据流的分块位置的场景示意图;
图4a是本申请实施例公开的又一种分块方法的流程示意图;
图4b是本申请实施例公开的一种在第一数据段的数据分布特征为平原分布的情况下,确定待分块数据流的分块位置的场景示意图;
图5a是本申请实施例公开的又一种分块方法的流程示意图;
图5b是本申请实施例公开的一种确定第二目标字符的场景示意图;
图5c是本申请实施例公开的一种确定X字符的场景示意图;
图5d是本申请实施例公开的一种在第一数据段的数据分布特征为高原分布的情况下,确定待分块数据流的分块位置的场景示意图;
图6是本申请实施例公开的又一种分块方法的流程示意图;
图7a是本申请实施例公开的又一种分块方法的流程示意图;
图7b是本申请实施例公开的一种分块方法的工作原理示意图;
图8是本申请实施例公开的一种分块装置的结构示意图;
图9是本申请实施例公开的一种服务设备的结构示意图。
具体实施方式
下面将对本申请实施例涉及的词语进行介绍:
均匀分布:若数据段中的每个字符的字符值为该字符对应的取值区间中的任意一个值的概率相同,则该数据段的数据分布特征为均匀分布,其中,数据段中的字符可以指单字节字符或者多字节字符,单字节字符是指在内存中占据的存储空间为一个字节的字符,多字节字符是指在内存中占据的存储空间为多个字节的字符,本申请实施例以数据段中的字符为单字节字符为例进行介绍。单字节字符在内存中占据的存储空间为八个比特,单字节字符的字符值为该单字节字符对应的八位二进制数据转化为十进制的数值,单字节字符对应的取值区间为八个比特可以表示的所有十进制数,即0~255。若数据段中的字符为双字节字符,由于双字节字符在内存中占据的存储空间为十六个比特,所以该数据段中的字符的字符值为该字符对应的十六位二进制数据转化为十进制的数值,且该字符对应的取值区间为十六个比特可以表示的所有十进制数,即0~65535。
需要说明的是,为便于描述,下文将每个字节对应的八位二进制数据转化为十进制得到的数值称为字符值。
在本申请实施例中,按照不同维度,可以将数据段的数据分布特征划分为不同类型。例如,按照数据段中的每个字符的字符值为对应的取值区间中的任意一个值的概率是否相同,可以将数据段的数据分布特征划分为均分分布和非均匀分布;按照数据段中的每个字符的字符值是否相同,可以将数据段的数据分布特征划分为平原分布和非平原分布。
非均匀分布:若数据段中的每个字符的字符值为该字符对应的取值区间中的任意一个值的概率不相同,则该数据段的数据分布特征为非均匀分布。非均匀分布可以包括平原分布、高原分布和盆地分布。
平原分布:若数据段中的每个字符的字符值均相同,则该数据段的数据分布特征为平原分布。
非平原分布:若数据段中至少存在两个字符的字符值不同,即若数据段中的每个字符的字符值不完全相同,则该数据段的数据分布特征为非平原分布。非平原分布可以包括均匀分布、高原分布和盆地分布。
高原分布:若在数据段的每个字符的字符值中,存在一个特大字符值,该特大字符值大于周围字符的字符值,则该数据段的数据分布特征为高原分布。
盆地分布:若在数据段的每个字符的字符值中,存在一个特小字符值,该特小字符值小于周围字符的字符值,则该数据段的数据分布特征为盆地分布。
需要说明的是,属于同一数据流的不同数据段的数据分布特征可以相同也可以不同。例如,若数据段1和数据段2属于同一数据流,且数据段1的数据分布特征为均匀分布,则数据段2的数据分布特征可以为平原分布、高原分布、盆地分布或者均匀分布,本申请实施例对此不作限定。
由于定长分块算法会受到边界偏移问题的影响,因此产生了变长分块算法,变长分块算法输出的数据块的长度可变。主流的变长分块算法可以包括但不限于不对称极值(Asymmetric Extremum,AE)、异或(exclusive OR,XOR)、拉宾(Rabin)、字节采样(SampleByte)、TTTD(Two Thresholds,Two Divisors)和RAM(Rapid Asymmetric Maximum)。其中,AE算法同时兼顾了去重率和吞吐量,与前述变长分块算法相比,AE算法的去重性能最优。
AE算法的核心是通过比较各个字符的字符值,寻找一段数据中的极大值(即最大字符值)及其位置,从而以此判定分块位置。图1a是不对称极值算法的工作原理示意图,其中,e’为p+w范围内的最大字符值,p的长度可变,w的长度固定;p范围内的每个字符的字符值均小于e’,w范围内的每个字符的字符值均小于或等于e’;p+w范围内的所有字符组成一个数据块(即当前数据块);上一个数据块的分块位置A为p范围内的第一个字符的起始位置,当前数据块的分块位置B为w范围内的最后一个字符的结束位置。如图1a所示,在p+w范围内找到极大值e’的概率为1/(p+w),由此可得,进而得到p=w(e-1),其中,e=2.71。AE算法的关键参数为分块期望长度E,E直接决定AE算法的去重性能。根据关系式p=w(e-1)计算分块期望长度E,可得到参数w=E/(e-1)。
如图1a所示,从上一个数据块的分块位置A开始,通过依次比较字符的字符值,搜寻p+w范围内的极大值e’所在位置,当找到极大值e’所在的位置后,将B作为当前数据块的分块位置,其中,B=e’+w。AE算法对一个数据流进行分块处理的具体工作流程如下:
①遍历数据流中的字符,找到字符a,在数据流中字符a的字符值大于同一数据块内所有前面字符的字符值;
②从字符a所在位置开始,向后查看w个字符;
③若w个字符的字符值均小于或等于字符a的字符值,则将从字符a所在位置开始,向后查看的第w个字符的结束位置确定为当前数据块的分块位置;
④确定当前数据块的分块位置后,重复步骤①,直到数据流中的所有数据完成分块。
由于AE算法中包括寻找极大值的过程,因此可以很好地抑制边界偏移问题。但是,AE算法的理论模型是基于数据段的数据分布特征为均匀分布建立的,因此在数据段的数据分布特征为非均匀分布时的分块效果不够理想。
下面将从数据段的数据分布特征为非均匀分布中的平原分布和高原分布的两种情况分析AE算法的不足:
图1b为数据流中的某一数据段的数据分布特征为平原分布的示意图,由图1b可知,当数据段的数据分布特征为平原分布时,P=1,即AE算法输出分块的平均长度为(w+1)字节,又因E和w满足关系式w=E/(e-1),因此可计算得到w≈1.4字节。换言之,当数据段的数据分布特征为平原分布时,AE算法输出分块的平均长度约为2.4字节。由于分块的平均长度一般为几百字节,因此,当数据段的数据分布特征为平原分布时,AE算法输出的分块数量会远多于用户期望的数量,进而增加额外的计算哈希值的功耗。
图1c为数据流中的某一数据段的数据分布特征为高原分布的示意图,其中,字符值255为p+w范围内的最大字符值,当图1c中的字符为单字节字符时,字符值255为单字节字符对应的取值区间中的最大值,因此,字符值255的存在使得AE算法在接下来的字符值比较过程中会忽略后续字符的字符值,即高原分布的出现扰乱了基于均匀分布的AE算法搜索分块位置的过程。
为了解决AE算法仅考虑均匀分布的不足,本申请实施例提出了一种分块算法,用以提升在数据段的数据分布特征为非均匀分布时的分块性能。
请参见图1d,为应用本申请实施例的网络架构示意图。图1d所示的网络架构包括:网络终端设备101、第一服务设备102、第二服务设备103、数据中心(Data Center,DC)/总部(Headquarter,HQ)104。
其中,网络终端设备101主要用于产生各类数据流,并将产生的各类数据流发送至同一局域网(Local Area Network,LAN)中的第一服务设备102,网络终端设备101可以包括但不限于手机、平板电脑、个人计算机(PersonalComputer,PC)、智能电视、智能手表、车载设备、可穿戴设备、虚拟现实设备、未来第五代移动通信技术(the5th Generation,5G)网络中的终端设备或其他具有语音功能的智能设备。
第一服务设备102和第二服务设备103可以是向企业或服务提供商核心网络提供入口点的网络边缘设备。第一服务设备102和第二服务设备103可以包括但不限于路由器、路由交换机、集成接入设备、多路复用器,以及各种广域网(Wide Area Network,WAN)接入设备。第一服务设备102主要用于对网络终端设备101发送的各类数据流进行去重处理,并将去重后的数据流传输至广域网中的第二服务设备103。
第二服务设备103主要用于根据第一服务设备102发送的去重后的数据流,解析得到原始的数据流,并将解析得到的数据流传输至DC/HQ104。DC/HQ104主要用于存储、展示、计算或传递第二服务设备103发送的数据流。
其中,第一服务设备102对数据流进行去重处理的过程中,首先可以对网络终端设备101发送的数据流进行分块处理。具体的,第一服务设备102对数据流进行分块处理的具体过程如下:第一服务设备102从数据流的头部开始,确定出字符长度为第一长度(w1)的第一数据段,并根据第一数据段中每个字符的字符值,确定第一数据段的数据分布特征,进而根据第一数据段的数据分布特征,执行相应的分块策略以确定该数据流的分块位置,然后将第一数据段中的第一个字符的位置与分块位置之间的字符作为数据块。其中,字符长度为包括的字符的个数,即第一数据段包括w1个字符。在一种实现方式中,第一服务设备102中至少可以配置有第一分块策略和第二分块策略,第一分块策略为根据期望分块长度确定数据流的分块位置;第二分块策略为根据第二长度确定数据流的分块位置。在一种实现方式中,若第一数据段的数据分布特征为平原分布,则执行第一分块策略;若第一数据段的数据分布特征为非平原特征,则执行第二分块策略。需要说明的是,本申请实施例以第一数据段中的每个字符为单字节字符为例进行说明,但并不构成对本申请实施例的限定,在其他可行的实现方式中,第一数据段中的每个字符还可以为多字节字符。
由于第一服务设备102可以通过分析第一数据段的数据分布特征,进而针对不同的数据分布特征执行不同的分块策略以确定分块位置,使得本申请实施例提出的分块方法可以更好地适应属于不同数据分布特征的数据流,并针对不同数据分布特征输出不同分块长度的数据块,这样可以有效抑制边界偏移问题,更好地对数据流进行分块,从而有利于增强去重效果。
需要说明的是,图1d所示网络终端设备101、第一服务设备102、第二服务设备103、DC/HQ104分别作为单独的物理实体存在仅用于举例,并不构成对本申请实施例的限定。在其他可行的实现方式中,网络终端设备101和第一服务设备102可以集成于同一个物理实体,第二服务设备103和DC/HQ104可以集成于同一个物理实体。
可以理解的是,本申请实施例描述的网络架构是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
基于图1d所示的网络架构示意图,请参见图2,图2是本申请实施例提供的一种分块方法的流程示意图,该方法可以包括但不限于如下步骤:
步骤S201:服务设备从待分块数据流的头部开始,确定出第一长度的第一数据段,第一数据段包括多个字符,第一数据段包括的多个字符的字符长度为第一长度。
具体的,服务设备接收到数据流之后,可以获取待分块数据流,并从待分块数据流的头部开始,确定出第一长度(w1)的第一数据段。在一种实现方式中,服务设备可以持续地从接收接口中接收属于同一数据流的不同数据,对于已接收到的数据,服务设备可以对其进行分块处理,也就是说,数据流可以由待分块数据和已分块数据组成,其中,待分块数据流中的所有数据均为待分块数据。
在一种实现方式中,当已接收到的且属于同一数据流的所有数据均为待分块数据时,待分块数据流的头部可以为该数据流中的第一个字符的起始位置。在一种实现方式中,当已接收到的且属于同一数据流的数据包括待分块数据和已分块数据时,待分块数据流的头部可以为该数据流中最后一个已分块的字符的下一个字符(即待分块数据流的第一个字符)的起始位置。
在一种实现方式中,服务设备可以从队列中获取待分块数据流。在一种实现方式中,服务设备可以从接收接口中获取待分块数据流,进而对待分块数据流进行分块处理,通过这种方式,可以实时地对待分块数据流进行分块处理,从而有利于提高去重效率。在一种实现方式中,当服务设备无法及时对从接收接口中获取的所有待分块数据流进行分块处理时,可以将部分待分块数据流存储至队列,以便服务设备后续从队列中获取待分块数据流进行分块处理。其中,服务设备可以为图1d中的第一服务设备。
需要说明的是,本申请实施例公开的分块方法除了应用于图1d所示的通信场景以外,还可以应用于单个服务设备的数据压缩处理场景,例如,服务设备在接收到待存储数据流之后,可以对待存储数据流进行分块处理,进而对于已存储的相同分块,仅需存储其相应的哈希值即可,这样可以有效提高服务设备的存储空间利用率。在一种实现方式中,服务设备除了可以为路由器、路由交换机、集成接入设备、多路复用器以及各种广域网接入设备以外,还可以为服务器,或者手机、电脑等电子设备。
步骤S202:服务设备根据第一数据段中每个字符的字符值,确定第一数据段的数据分布特征。
具体的,服务设备确定第一数据段之后,可以计算第一数据段中每个字符的字符值,并根据第一数据段中每个字符的字符值,确定第一数据段的数据分布特征,进而根据第一数据段的数据分布特征,执行相应的分块策略以确定待分块数据流的分块位置。
在一种实现方式中,第一数据段的数据分布特征可以为平原分布或非平原分布,服务设备根据第一数据段中每个字符的字符值,确定第一数据段的数据分布特征的具体实施方式可以为:若第一数据段中每个字符的字符值均相同,则服务设备将第一数据段的数据分布特征确定为平原分布;若第一数据段中至少存在两个字符的字符值不同,即若第一数据段中每个字符的字符值不完全相同,则将第一数据段的数据分布特征确定为非平原分布。
步骤S203:服务设备根据第一数据段的数据分布特征,确定待分块数据流的分块位置。
具体的,第一数据段的数据分布特征不同时,服务设备可以执行不同的分块策略以确定待分块数据流的分块位置。在一种实现方式中,服务设备执行的分块策略不同时,输出的分块长度可以不同。通过分析第一数据段的数据分布特征,进而针对不同的数据分布特征执行不同的分块策略以确定分块位置,使得本申请实施例提出的分块方法可以更好地适应属于不同数据分布特征的数据流,并针对不同数据分布特征输出不同分块长度的数据分块,这样可以有效抑制边界偏移问题,更好地对数据流进行分块,从而有利于增强去重效果。
步骤S204:服务设备将第一数据段中的第一个字符的起始位置与前述分块位置之间的字符作为数据块。
具体的,服务设备确定分块位置之后,可以将第一数据段中的第一个字符的起始位置与前述分块位置之间的字符划分为同一个数据块,即分块得到的数据块包括第一数据段中的第一个字符。
可见,通过实施本申请实施例,可以分析得到第一数据段的数据分布特征,进而针对不同数据分布特征采用不同的分块策略确定分块位置,通过这种方式,使得本申请实施例提出的分块方法可以更好地适应属于不同数据分布特征的数据流,并针对不同数据分布特征输出不同分块长度的数据分块,这样可以有效抑制边界偏移问题,更好地对数据流进行分块,从而有利于增强去重效果。
请参见图3a,图3a是本申请实施例提供的另一种分块方法的流程示意图,该方法简要阐述了第一数据段的数据分布特征为平原分布时,如何根据期望分块长度确定待分块数据流的分块位置,以及第一数据段的数据分布特征为非平原分布时,如何根据第二长度确定待分块数据流的分块位置,该方法可以包括但不限于如下步骤:
步骤S301:服务设备从待分块数据流的头部开始,确定出第一长度的第一数据段,第一数据段包括多个字符,第一数据段包括的多个字符的字符长度为第一长度。
步骤S302:服务设备根据第一数据段中每个字符的字符值,确定第一数据段的数据分布特征。
需要说明的是,步骤S301~步骤S302的执行过程可分别参见图2中步骤S201~步骤S202的具体描述,在此不赘述。
步骤S303:若第一数据段的数据分布特征为平原分布,则服务设备根据期望分块长度确定待分块数据流的分块位置,数据分布特征为平原分布的数据段中的每个字符的字符值均相同。
具体的,服务设备中至少可以配置有第一分块策略和第二分块策略,若第一数据段的数据分布特征为平原分布,则服务设备可以执行第一分块策略,即根据期望分块长度确定待分块数据流的分块位置;若第一数据段的数据分布特征为非平原分布,则服务设备可以执行第二分块策略,即根据第二长度确定待分块数据流的分块位置。
其中,期望分块长度E与AE算法中的分块期望长度相同,均为用户期望的分块长度,期望分块长度可以是服务设备默认设置的,也可以是服务设备根据用户操作设置的,本申请实施例对此不做限定。
在一种实现方式中,当第一数据段的数据分布特征为平原分布时,服务设备根据期望分块长度确定待分块数据流的分块位置的具体实施方式可以为:服务设备将与第一数据段的第一个字符的起始位置之间的字符长度为期望分块长度的位置确定为待分块数据流的分块位置。需要说明的是,在本申请实施例中,若无特别说明,字符的位置均指该字符的起始位置。
以图3b所示的根据期望分块长度确定待分块数据流的分块位置的场景示意图为例,当第一数据段的字符长度w1=3,期望分块长度E=30,c1为第一数据段中的第一个字符,c2为c1的前一个字符,c3为c1的后一个字符,p1为c1的起始位置,p3为c1的结束位置时,由图可知,第一数据段中的每个字符的字符值均为6,即第一数据段的数据分布特征为平原分布,且第一数据段的第一个字符的起始位置(p1)与图中位置p2之间的字符长度为E。此时,服务设备可以将p2确定为待分块数据流的分块位置。需要说明的是,c1的起始位置(p1)为c1与前一个相邻字符(c2)之间的交界处,同理,c1的结束位置(p3)为c1与后一个相邻字符(c3)之间的交界处。还需要说明的是,当c1为数据流中的第一个字符,即c1之前没有其他字符时,将该数据流的起始位置作为c1的起始位置。
在一种实现方式中,服务设备可以根据期望分块长度确定第一长度,其中,第一长度小于期望分块长度。
步骤S304:若第一数据段的数据分布特征为非平原分布,则服务设备根据第二长度确定待分块数据流的分块位置,其中,第二长度小于期望分块长度,数据分布特征为非平原分布的数据段中至少存在两个字符的字符值不同。
其中,非平原分布可以包括高原分布、盆地分布和均匀分布。在一种实现方式中,若第一数据段中至少存在两个字符的字符值不同(即若第一数据段中每个字符的字符值不完全相同),且第一数据段中的第一个字符的字符值为第一数据段中每个字符的字符值中的最大值,则服务设备可以将第一数据段的数据分布特征确定为高原分布;若第一数据段中至少存在两个字符的字符值不同,且第一数据段的第一个字符的字符值为第一数据段中每个字符的字符值中的最小值,则服务设备可以将第一数据段的数据分布特征确定为盆地分布;若第一数据段中至少存在两个字符的字符值不同,且第一数据段的第一个字符的字符值小于第一数据段中每个字符的字符值中的最大值(或者,第一数据段的第一个字符的字符值大于第一数据段中每个字符的字符值中的最小值),则服务设备可以将第一数据段的数据分布特征确定为均匀分布。
在一种实现方式中,若第一数据段的数据分布特征为高原分布,则服务设备可以从高原字符(即第一数据段中的第一个字符)的结束位置开始,沿着待分块数据流向后确定出第二数据段,并将第二数据段的最后一个字符的结束位置确定为待分块数据流的分块位置,其中,高原字符的结束位置与第二数据段中的最后一个字符的结束位置之间的字符长度为第二长度(w2)。
在一种实现方式中,若第一数据段的数据分布特征为盆地分布,则服务设备可以从盆地字符(即第一数据段中的第一个字符)的结束位置开始,沿着待分块数据流向后确定出第五数据段,并将第五数据段的最后一个字符的结束位置确定为待分块数据流的分块位置,其中,盆地字符的结束位置与第五数据段中的最后一个字符的结束位置之间的字符长度为w2。
在一种实现方式中,若第一数据段的数据分布特征为均匀分布,则服务设备可以从第一数据段的字符值中的第一个最大值对应的字符开始,沿着待分块数据流向后查看w2个字符,若w2个字符的字符值均小于或等于第一数据段的字符值中的第一个最大值,则服务设备可以将查看的第w2个字符的结束位置确定为待分块数据流的分块位置。在另一种实现方式中,若第一数据段的数据分布特征为均匀分布,则服务设备可以从第一数据段的字符值中的第一个最小值对应的字符开始,沿着待分块数据流向后查看w2个字符,若w2个字符的字符值均大于或等于第一数据段的字符值中的第一个最小值,则服务设备可以将查看的第w2个字符的结束位置确定为待分块数据流的分块位置。
其中,第二长度可以是服务设备根据期望分块长度确定的,第二长度小于期望分块长度,并且第一长度与第二长度之和小于或等于期望分块长度。
步骤S305:服务设备将第一数据段中的第一个字符的起始位置与前述分块位置之间的字符作为数据块。
具体的,服务设备确定分块位置之后,可以将第一数据段中的第一个字符的起始位置与前述分块位置之间的字符划分为同一个数据块,即分块得到的数据块包括第一数据段中的第一个字符。
以图3b为例,服务设备可以将c1的起始位置(p1)与分块位置(p2)之间的字符划分为一个数据块,换言之,服务设备可以从第一段数据的头部开始,将字符长度为期望分块长度E的数据段划分为一个数据块。由于p1与p2之间的字符长度为期望分块长度,因此,通过将第一数据段中的第一个字符的起始位置与前述分块位置之间的字符划分为同一个数据块,可以使得分块得到的数据块的字符长度等于期望分块长度,这样可以有效控制服务设备计算数据块的哈希值的功耗。
可见,通过实施本申请实施例,可以分析得到第一数据段的数据分布特征,进而针对不同数据分布特征采用不同的分块策略确定分块位置,通过这种方式,使得本申请实施例提出的分块方法可以更好地适应属于不同数据分布特征的数据流,并针对不同数据分布特征输出不同分块长度的数据分块,这样可以有效抑制边界偏移问题,更好地对数据流进行分块,从而有利于增强去重效果。
请参见图4a,图4a是本申请实施例提供的又一种分块方法的流程示意图,该方法详细阐述了如何根据第一数据段中每个字符的字符值确定第一数据段的数据分布特征为平原分布,以及第一数据段的数据分布特征为平原分布时,如何根据期望分块长度确定待分块数据流的分块位置,该方法可以包括但不限于如下步骤:
步骤S401:服务设备从待分块数据流的头部开始,确定出第一长度的第一数据段,第一数据段包括多个字符,第一数据段包括的多个字符的字符长度为第一长度。
需要说明的是,步骤S401的执行过程可参见图2中步骤S201的具体描述,在此不赘述。
步骤S402:若第一数据段中的第一个字符的字符值为第一数据段中的字符的字符值中的最大值,且第一数据段中的第一个字符的字符值与第一数据段中的最后一个字符的字符值相等,则服务设备将第一数据段的数据分布特征确定为平原分布。
具体的,服务设备确定第一数据段之后,可以计算第一数据段中每个字符的字符值,并根据第一数据段中每个字符的字符值,确定第一数据段的所有字符的字符值中的最大值。若第一数据段中的第一个字符的字符值为第一数据段中的所有字符的字符值中的最大值,且第一数据段中的第一个字符的字符值与第一数据段中的最后一个字符的字符值相等,则将第一数据段的数据分布特征确定为平原分布;若第一数据段中的第一个字符的字符值小于第一数据段中的所有字符的字符值中的最大值,或者,第一数据段中的第一个字符的字符值与第一数据段中的最后一个字符的字符值不相等,则将第一数据段的数据分布特征确定为非平原分布。
第一数据段中的第一个字符的字符值为第一数据段中的所有字符的字符值中的最大值,且第一数据段中的第一个字符的字符值与第一数据段中的最后一个字符的字符值相等时,表明第一数据段中的第一个字符和最后一个字符的字符值相等,且均为第一数据段中的最大字符值,由此可知,第一数据段中的第一个字符与最后一个字符之间的各个字符的字符值均小于或等于最大字符值,那么可以认为第一数据段中的每个字符的字符值均相等且均为最大字符值的概率较高,因此,服务设备可以将第一数据段的数据分布特征确定为平原分布。另一方面,由于确定第一数据段中的每个字符的字符值是否均相同的具体实施方式可以为:首先确定第一数据段中的所有字符的字符值中的最大字符值,然后依次判断第一数据段中的每个字符的字符值是否均等于该最大字符值,若是,则确定第一数据段中的每个字符的字符值均相同。相较于确定第一数据段中的每个字符的字符值是否均相同,本申请实施例仅需确定第一数据段中的所有字符的字符值中的最大字符值,然后比较第一数据段中的第一个字符的字符值和最后一个字符的字符值是否均等于最大字符值即可确定第一数据段的数据分布特征是否为平原分布,可见,采用本申请实施例所述方法可以更快速地确定第一数据段的数据分布特征,从而有利于提高待分块数据流的分块效率。
第一数据段中的第一个字符的字符值小于第一数据段中的所有字符的字符值中的最大值,或者,第一数据段中的第一个字符的字符值与第一数据段中的最后一个字符的字符值不相等时,表明第一数据段中至少存在两个字符的字符值不相等,因此,服务设备可以将第一数据段的数据分布特征确定为非平原分布。
在一种实现方式中,服务设备确定第一数据段的数据分布特征是否为平原分布的具体实施方式还可以为:若第一数据段中的第一个字符的字符值为第一数据段中的所有字符的字符值中的最小值,且第一数据段中的第一个字符的字符值与第一数据段中的最后一个字符的字符值相等,则服务设备将第一数据段的数据分布特征确定为平原分布;若第一数据段中的第一个字符的字符值大于第一数据段中的所有字符的字符值中的最小值,或者,第一数据段中的第一个字符的字符值与第一数据段中的最后一个字符的字符值不相等,则将第一数据段的数据分布特征确定为非平原分布。
第一数据段中的第一个字符的字符值为第一数据段中的所有字符的字符值中的最小值,且第一数据段中的第一个字符的字符值与第一数据段中的最后一个字符的字符值相等时,表明第一数据段中的第一个字符和最后一个字符的字符值相等,且均为第一数据段中的最小字符值,由此可知,第一数据段中的第一个字符与最后一个字符之间的各个字符的字符值均大于或等于最小字符值,那么可以认为第一数据段中的每个字符的字符值均相等且均为最小字符值的概率较高,因此,服务设备可以将第一数据段的数据分布特征确定为平原分布。另一方面,相较于确定第一数据段中的每个字符的字符值是否均相同,本申请实施例仅需确定第一数据段中的所有字符的字符值中的最小字符值,然后比较第一数据段中的第一个字符的字符值和最后一个字符的字符值是否均等于最小字符值即可确定第一数据段的数据分布特征是否为平原分布,可见,采用本申请实施例所述方法可以更快速地确定第一数据段的数据分布特征,从而有利于提高待分块数据流的分块效率。第一数据段中的第一个字符的字符值大于第一数据段中的所有字符的字符值中的最大值,或者,第一数据段中的第一个字符的字符值与第一数据段中的最后一个字符的字符值不相等时,表明第一数据段中至少存在两个字符的字符值不相等,因此,服务设备可以将第一数据段的数据分布特征确定为非平原分布。
步骤S403:若第一数据段的数据分布特征为平原分布,则服务设备根据期望分块长度确定待分块数据流的分块位置。
在一种实现方式中,当第一数据段的数据分布特征为平原分布时,服务设备根据期望分块长度确定待分块数据流的分块位置的具体实施方式可以为:服务设备从第一数据段的最后一个字符之后的字符中,确定第一目标字符,并将第一目标字符的起始位置确定为待分块数据流的分块位置,其中,第一目标字符满足分块条件,分块条件包括第一目标字符的字符值与第一数据段中的第一个字符的字符值不同,且以第一数据段中的第一个字符作为起始字符,以第一目标字符的前一个字符作为结束字符的数据段的字符长度大于或等于期望分块长度。
具体的,服务设备可以从第一数据段的最后一个字符之后的第一个字符开始,依次遍历下一个字符,直至当前查看的字符的字符值与第一数据段中的第一个字符的字符值不同时,暂定遍历字符,并判断以第一数据段中的第一个字符作为起始字符,以当前查看的字符的前一个字符作为结束字符的数据段的字符长度是否大于或等于期望分块长度,若是,则将当前查看的字符确定为第一目标字符;若否,则继续遍历下一个字符,直至当前查看的字符同时满足两个分块条件(即当前查看的字符的字符值与第一数据段中的第一个字符的字符值不同,且以第一数据段中的第一个字符作为起始字符,以当前查看的字符的前一个字符作为结束字符的数据段的字符长度大于或等于期望分块长度)时,将当前查看的字符确定为第一目标字符。
在本申请实施例中,若第一数据段的数据分布特征为平原分布,则服务设备可以将第一目标字符的起始位置确定为待分块数据流的分块位置。以图4b所示的在第一数据段的数据分布特征为平原分布的情况下,确定待分块数据流的分块位置的场景示意图为例,其中,第一数据段的字符长度w1=3,期望分块长度E=8,c1为第一数据段中的第一个字符。由图4b可知,图中字符c3的字符值7与c1的字符值6不同,且以c1作为起始字符,以c3的前一个字符(c2)作为结束字符的数据段的字符长度为9(即大于期望分块长度E),所以字符c3满足前述分块条件,此时,服务设备可以将字符c3确定为第一目标字符。确定第一目标字符之后,服务设备可以将第一目标字符的起始位置(p1)确定为待分块数据流的分块位置。
在本申请实施例中,当第一数据段的数据分布特征为平原分布时,通过将满足两个分块条件的第一目标字符的起始位置确定为分块位置,一方面,可以使得根据分块位置确定出的数据块的字符长度大于或等于期望分块长度,避免第一数据段的数据分布特征为平原分布时,采用AE算法输出的数据块长度小于期望分块长度的情况,这样可以有效降低服务设备计算数据块的哈希值的功耗;另一方面,可以尽可能地将字符值相同的更多字符划分到同一个数据块中,从而提高去重率并增强去重效果。
在一种实现方式中,当第一数据段的数据分布特征为平原分布时,服务设备根据期望分块长度确定待分块数据流的分块位置的具体实施方式可以为:服务设备将与第一数据段的第一个字符的起始位置之间的字符长度为期望分块长度的位置确定为待分块数据流的分块位置。在本申请实施例中,在确定第一数据段的数据分布特征为平原分布的情况下,第一数据段之后的且相邻的一段数据段(如字符长度为E-w1的一段数据段)的数据分布特征也为平原分布的概率较高。因此,服务设备将与第一数据段的第一个字符的起始位置之间的字符长度为期望分块长度的位置确定为待分块数据流的分块位置,一方面,可以将同属于平原分布的第一数据段和第一数据段之后的且相邻的字符长度为E-w1的数据段划分为同一个数据块,这样可以尽可能地将字符值相同的更多字符划分到同一个数据块中,从而有利于提高去重率并增强去重效果;另一方面,可以不用计算前述字符长度为E-w1的数据段中的每个字符的字符值,这样可以提高分块效率,从而有利于提高去重系统的吞吐量。
步骤S404:服务设备将第一数据段中的第一个字符的起始位置与分块位置之间的字符作为数据块。
需要说明的是,步骤S404的执行过程可参见图3a中步骤S305的具体描述,在此不赘述。
在本申请实施例中,第一数据段中的第一个字符的字符值为第一数据段中的字符的字符值中的最大值,且第一数据段中的第一个字符的字符值与第一数据段中的最后一个字符的字符值相等时,服务设备将第一数据段的数据分布特征确定为平原分布,可以更快速地确定第一数据段的数据分布特征,从而有利于提高待分块数据流的分块效率。
请参见图5a,图5a是本申请实施例提供的又一种分块方法的流程示意图,该方法详细阐述了如何根据第一数据段中每个字符的字符值确定第一数据段的数据分布特征为非平原分布,以及第一数据段的数据分布特征为非平原分布时,如何根据第二长度确定待分块数据流的分块位置,该方法可以包括但不限于如下步骤:
步骤S501:服务设备从待分块数据流的头部开始,确定出第一长度的第一数据段,第一数据段包括多个字符,第一数据段包括的多个字符的字符长度为第一长度。
需要说明的是,步骤S501的执行过程可参见图2中步骤S201的具体描述,在此不赘述。
步骤S502:若第一数据段中存在第二目标字符,则服务设备将第一数据段的数据分布特征确定为非平原分布,第一数据段中位于第二目标字符之前的字符的字符值均小于第二目标字符的字符值,第一数据段中位于第二目标字符之后的字符的字符值均小于或等于第二目标字符的字符值。
具体的,服务设备确定第一数据段之后,可以遍历第一数据段中的每个字符,以确定第一数据段中是否存在第二目标字符,其中,第二目标字符满足如下条件:第一数据段中位于第二目标字符之前的字符的字符值均小于第二目标字符的字符值,且第一数据段中位于第二目标字符之后的字符的字符值均小于或等于第二目标字符的字符值。根据第二目标字符满足的条件可知,第二目标字符的字符值为第一数据段中的所有字符的字符值中的最大字符值,且在第一数据段中第二目标字符之前至少存在一个字符,又由于第一数据段中位于第二目标字符之前的字符的字符值均小于第二目标字符的字符值,所以第一数据段中的第一个字符的字符值小于第二目标字符的字符值,因此,第一数据段中至少存在两个字符的字符值不同,此时,服务设备可以将第一数据段的数据分布特征确定为非平原分布。在一种的实现方式中,第一数据段中可能存在一个或多个字符的字符值均为最大字符值,当第一数据段中存在多个字符的字符值均为最大字符值时,将第一个出现的最大字符值对应的字符确定为第二目标字符。以图5b所示的确定第二目标字符的场景示意图为例,第一数据段的字符长度w1=5,如图所示,在第一数据段中的最大字符值为6,且第一数据段中的第3个字符(c1)和第5个字符(c2)的字符值6均为最大字符值,其中,c1的字符值为第一数据段中第一个出现的最大字符值,此时,服务设备可以将c1确定为第二目标字符。
在本申请实施例中,服务设备根据第一数据段中是否存在第二目标字符,可以判定第一数据段的数据分布特征:若第一数据段中不存在第二目标字符,则表明第一数据段中每个字符的字符值均相同,此时,服务设备可以将第一数据段的数据分布特征确定为平原分布;若第一数据段中存在第二目标字符,则服务设备将第一数据段的数据分布特征确定为非平原分布。
步骤S503:若第一数据段的数据分布特征为非平原分布,则服务设备根据第二长度确定待分块数据流的分块位置。
在一种实现方式中,若第一数据段的数据分布特征为非平原分布,则服务设备根据第二长度确定待分块数据流的分块位置的具体实施方式可以为:
s5031:服务设备从待分块数据流中确定第三数据段,第三数据段的第一个字符与第一数据段的最后一个字符相邻,第三数据段的最后一个字符的字符值即大于或等于第二目标字符的字符值,又大于或等于第三数据段中的其他字符的字符值,第三数据段的第一个字符为第一数据段的最后一个字符的后一个字符;
s5032:服务设备从待分块数据流中确定第四数据段,第四数据段的第一个字符与第三数据段的最后一个字符相邻,第四数据段中的多个字符的字符长度为第二长度,第四数据段的第一个字符为第三数据段的最后一个字符的后一个字符;
s5033:若第四数据段中的每个字符的字符值均小于第三数据段的最后一个字符的字符值,则服务设备将第四数据段的最后一个字符的结束位置确定为待分块数据流的分块位置。
具体的,服务设备可以从第一数据段的最后一个字符之后的第一个字符开始,依次遍历下一个字符,直至当前查看的字符的字符值大于或等于第二目标字符的字符值时,暂定遍历字符,并将当前查看的字符确定为X字符;然后,从X字符之后的第一个字符开始,依次遍历w2个字符,若w2个字符的字符值均小于X字符的字符值,则服务设备可以将查看的第w2个字符的结束位置确定为待分块数据流的分块位置。其中,第三数据段的起始字符为第一数据段的最后一个字符之后的第一个字符,第三数据段的结束字符为X字符,第四数据段的起始字符为X字符之后的第一个字符,第四数据段的结束字符为前述查看的第w2个字符。
在一种实现方式中,若遍历的w2个字符中至少存在一个Y字符的字符值大于或等于X字符的字符值,则将X字符更新为Y字符;然后,从更新后的X字符之后的第一个字符开始,再次依次遍历w2个字符,若w2个字符的字符值均小于更新后的X字符的字符值,则服务设备可以将从更新后的X字符之后的第一个字符开始查看的第w2个字符的结束位置确定为分块位置。其中,第三数据段的起始字符为第一数据段的最后一个字符之后的第一个字符,第三数据段的结束字符为更新后的X字符,第四数据段的起始字符为更新后的X字符之后的第一个字符,第四数据段的结束字符为从更新后的X字符之后的第一个字符开始查看的第w2个字符。
在一种实现方式中,若遍历的w2个字符中至少存在两个Y字符的字符值大于或等于X字符的字符值,则服务设备可以将最后出现的字符值大于或等于X字符的字符值的字符确定为更新后的X字符。以图5c所示的确定X字符的场景示意图为例,其中,第一数据段的字符长度w1=3,c1为第一数据段中的第一个字符,c2为第二目标字符;c3为第三数据段中的第2个字符,c4为第三数据段中的第4个字符;第四数据段的字符长度w2=3,c5为第四数据段的最后一个字符,p1为c5的结束位置。由图可知,第一数据段中的第一个字符(c1)的起始位置与第二目标字符(c2)的起始位置不同,因此,第一数据段的数据分布特征为非平原分布。由图可知,c3为从第一数据段的最后一个字符之后的第一个字符开始,出现的字符值大于或等于c2的字符值的第一个字符,且c4为第三数据段中字符值大于或等于c3的字符值的最后出现的字符,并且,c4之后的w2个字符(即第四数据段中的每个字符)的字符值均小于c4的字符值,此时,服务设备可以将c4确定为X字符。需要说明的是,在第一数据段、第三数据段和第四数据段范围内,位于X字符之前的各个字符的字符值均小于或等于X字符的字符值,X字符之后的各个字符的字符值均小于X字符的字符值。
在本申请实施例中,服务设备可以将第四数据段的最后一个字符的结束位置确定为待分块数据流的分块位置。以图5c为例,可以将c5的结束位置(p1)确定为待分块数据流的分块位置。
在本申请实施例中,若根据第二目标字符确定出第一数据段的数据分布特征为非平原分布,则服务设备可以从待分块数据流中确定第二数据段,并根据第二数据段中的每个字符的字符值进一步判断第一数据段的数据分布特征为高原分布还是均匀分布,其中,第二数据段的第一个字符与第一数据段的最后一个字符相邻,第二目标字符的结束位置与第二数据段中的最后一个字符的结束位置之间的字符长度为第二长度,第二数据段的第一个字符为第一数据段的最后一个字符的后一个字符。
具体的,服务设备根据第二数据段中的每个字符的字符值,判断第一数据段的数据分布特征为高原分布还是均匀分布的具体实施方式可以为:若第二数据段中的每个字符的字符值均小于第二目标字符的字符值,则服务设备可以将第一数据段的数据分布特征确定为高原分布;若第二数据段中至少存在一个字符的字符值大于或等于第二目标字符的字符值,则服务设备可以将第一数据段的数据分布特征确定为均匀分布。
在一种实现方式中,若第一数据段的数据分布特征为高原分布,则服务设备根据第二长度确定待分块数据流的分块位置的具体实施方式可以为:将第二数据段的最后一个字符的结束位置确定为待分块数据流的分块位置。以图5d所示的在第一数据段的数据分布特征为高原分布的情况下,确定待分块数据流的分块位置的场景示意图为例,当第一数据段的字符长度w1=3,w2=7时。由图5d可知,c1为第一数据段中的第一个字符,c2的字符值为第一数据段中的最大字符值,即c2为第二目标字符,p1为c2的结束位置,c3为第二数据段中的最后一个字符,p2为c3的结束位置,且p1与p2之间(即第二目标字符的结束位置与第二数据段中的最后一个字符的结束位置之间)的字符长度为w2。由于第一数据段中的第一个字符(c1)的起始位置与第二目标字符(c2)的起始位置不同,且第二数据段中的每个字符的字符值均小于第二目标字符(c2)的字符值20,此时,第一数据段的数据分布特征为高原分布,因此,服务设备可以将第二数据段的最后一个字符的结束位置(p2)确定为待分块数据流的分块位置。
在一种实现方式中,若第一数据段的数据分布特征为均匀分布,则服务设备根据第二长度确定待分块数据流的分块位置的执行过程可参见前述步骤s5031~s5033的具体描述,在此不赘述。
步骤S504:服务设备将第一数据段中的第一个字符的起始位置与分块位置之间的字符作为数据块。
需要说明的是,步骤S504的执行过程可参见图3a中步骤S305的具体描述,在此不赘述。
在本申请实施例中,根据第二目标字符判定第一数据段的数据分布特征为非平原分布之后,还可以根据第二数据段中的每个字符的字符值进一步判断第一数据段的数据分布特征为高原分布还是均匀分布,进而针对不同数据分布特征执行不同的分块策略以确定分块位置,通过这种方式,使得本申请实施例提出的分块方法可以更好地适应属于不同数据分布特征的数据流,并针对不同数据分布特征输出不同分块长度的数据分块,这样可以有效抑制边界偏移问题,更好地对数据流进行分块,从而有利于增强去重效果。
请参见图6,图6是本申请实施例提供的又一种分块方法的流程示意图,该方法详细阐述了如何根据第一数据段中每个字符的字符值确定第一数据段的数据分布特征为非平原分布,以及第一数据段的数据分布特征为非平原分布时,如何根据第二长度确定待分块数据流的分块位置,该方法可以包括但不限于如下步骤:
步骤S601:服务设备从待分块数据流的头部开始,确定出第一长度的第一数据段,第一数据段包括多个字符,第一数据段包括的多个字符的字符长度为第一长度。
需要说明的是,步骤S601的执行过程可参见图2中步骤S201的具体描述,在此不赘述。
步骤S602:若第一数据段中存在第三目标字符,则服务设备将第一数据段的数据分布特征确定为非平原分布,第一数据段中位于第三目标字符之前的字符的字符值均大于第三目标字符的字符值,第一数据段中位于第三目标字符之后的字符的字符值均大于或等于第三目标字符的字符值。
具体的,服务设备确定第一数据段之后,可以遍历第一数据段中的每个字符,以确定第一数据段中是否存在第三目标字符,其中,第三目标字符满足如下条件:第一数据段中位于第三目标字符之前的字符的字符值均大于第三目标字符的字符值,第一数据段中位于第三目标字符之后的字符的字符值均大于或等于第三目标字符的字符值。根据第三目标字符满足的条件可知,第三目标字符的字符值为第一数据段中的所有字符的字符值中的最小字符值,且在第一数据段中第三目标字符之前至少存在一个字符,又由于第一数据段中位于第三目标字符之前的字符的字符值均大于第三目标字符的字符值,所以第一数据段中的第一个字符的字符值大于第三目标字符的字符值,因此,第一数据段中至少存在两个字符的字符值不同,此时,服务设备可以将第一数据段的数据分布特征确定为非平原分布。在一种的实现方式中,第一数据段中可能存在一个或多个字符的字符值均为最小字符值,当第一数据段中存在多个字符的字符值均为最小字符值时,将第一个出现的最小字符值对应的字符确定为第三目标字符。
在本申请实施例中,服务设备根据第一数据段中是否存在第三目标字符,可以判定第一数据段的数据分布特征:若第一数据段中不存在第三目标字符,则表明第一数据段中每个字符的字符值均相同,此时,服务设备可以将第一数据段的数据分布特征确定为平原分布;若第一数据段中存在第三目标字符,则服务设备将第一数据段的数据分布特征确定为非平原分布。
步骤S603:若第一数据段的数据分布特征为非平原分布,则服务设备根据第二长度确定待分块数据流的分块位置。
在一种实现方式中,若第一数据段的数据分布特征为非平原分布,则服务设备根据第二长度确定待分块数据流的分块位置的具体实施方式可以为:
s6031:服务设备从待分块数据流中确定第六数据段,第六数据段的第一个字符与第一数据段的最后一个字符相邻,第六数据段的最后一个字符的字符值即小于或等于第三目标字符的字符值,又小于或等于第六数据段中的其他字符的字符值,第六数据段的第一个字符为第一数据段的最后一个字符的后一个字符;
s6032:服务设备从待分块数据流中确定第七数据段,第七数据段的第一个字符与第六数据段的最后一个字符相邻,第七数据段中的多个字符的字符长度为第二长度,第七数据段的第一个字符为第六数据段的最后一个字符的后一个字符;
s6033:若第七数据段中的每个字符的字符值均大于第六数据段的最后一个字符的字符值,则服务设备将第七数据段的最后一个字符的结束位置确定为待分块数据流的分块位置。
具体的,服务设备可以从第一数据段的最后一个字符之后的第一个字符开始,依次遍历下一个字符,直至当前查看的字符的字符值小于或等于第三目标字符的字符值时,暂定遍历字符,并将当前查看的字符确定为A字符;然后,从A字符之后的第一个字符开始,依次遍历w2个字符,若w2个字符的字符值均大于A字符的字符值,则服务设备可以将查看的第w2个字符的结束位置确定为待分块数据流的分块位置。其中,第六数据段的起始字符为第一数据段的最后一个字符之后的第一个字符,第六数据段的结束字符为A字符,第七数据段的起始字符为A字符之后的第一个字符,第七数据段的结束字符为前述查看的第w2个字符。
在一种实现方式中,若遍历的w2个字符中至少存在一个B字符的字符值小于或等于A字符的字符值,则将A字符更新为B字符;然后,从更新后的A字符之后的第一个字符开始,再次依次遍历w2个字符,若w2个字符的字符值均大于更新后的A字符的字符值,则服务设备可以将从更新后的A字符之后的第一个字符开始查看的第w2个字符的结束位置确定为分块位置。其中,第六数据段的起始字符为第一数据段的最后一个字符之后的第一个字符,第六数据段的结束字符为更新后的A字符,第七数据段的起始字符为更新后的A字符之后的第一个字符,第七数据段的结束字符为从更新后的A字符之后的第一个字符开始查看的第w2个字符。
在一种实现方式中,若遍历的w2个字符中至少存在两个B字符的字符值小于或等于A字符的字符值,则服务设备可以将最后出现的字符值小于或等于A字符的字符值的字符确定为更新后的A字符。需要说明的是,在第一数据段、第六数据段和第七数据段范围内,位于更新后的A字符之前的各个字符的字符值均大于或等于更新后的A字符的字符值,更新后的A字符之后的各个字符的字符值均大于更新后的A字符的字符值。
在本申请实施例中,若根据第三目标字符确定出第一数据段的数据分布特征为非平原分布,则服务设备可以从待分块数据流中确定第五数据段,并根据第五数据段中的每个字符的字符值进一步判断第一数据段的数据分布特征为盆地分布还是均匀分布,其中,第五数据段的第一个字符与第一数据段的最后一个字符相邻,第三目标字符的结束位置与第五数据段中的最后一个字符的结束位置之间的字符长度为第二长度,第五数据段的第一个字符为第一数据段的最后一个字符的后一个字符。
具体的,服务设备根据第五数据段中的每个字符的字符值,判断第一数据段的数据分布特征为盆地分布还是均匀分布的具体实施方式可以为:若第五数据段中的每个字符的字符值均大于第三目标字符的字符值,则服务设备可以将第一数据段的数据分布特征确定为盆地分布;若第五数据段中至少存在一个字符的字符值小于或等于第三目标字符的字符值,则服务设备可以将第一数据段的数据分布特征确定为均匀分布。
在一种实现方式中,若第一数据段的数据分布特征为盆地分布,则服务设备根据第二长度确定待分块数据流的分块位置的具体实施方式可以为:将第五数据段的最后一个字符的结束位置确定为待分块数据流的分块位置。
在一种实现方式中,若第一数据段的数据分布特征为均匀分布,则服务设备根据第二长度确定待分块数据流的分块位置的执行过程可参见前述步骤s6031~s6033的具体描述,在此不赘述。
步骤S604:服务设备将第一数据段中的第一个字符的起始位置与分块位置之间的字符作为数据块。
需要说明的是,步骤S604的执行过程可参见图3a中步骤S305的具体描述,在此不赘述。
在本申请实施例中,根据第三目标字符判定第一数据段的数据分布特征为非平原分布之后,还可以根据第五数据段中的每个字符的字符值进一步判断第一数据段的数据分布特征为盆地分布还是均匀分布,进而针对不同数据分布特征执行不同的分块策略以确定分块位置,通过这种方式,使得本申请实施例提出的分块方法可以更好地适应属于不同数据分布特征的数据流,并针对不同数据分布特征输出不同分块长度的数据分块,这样可以有效抑制边界偏移问题,更好地对数据流进行分块,从而有利于增强去重效果。
请参见图7a,图7a是本申请实施例提供的又一种分块方法的流程示意图,该方法详细阐述了如何对一个待分块数据流进行分块处理的具体流程,该方法可以包括但不限于如下步骤:
步骤S701:服务设备从待分块数据流的头部开始,确定出第一长度的第一数据段,第一数据段包括多个字符,第一数据段包括的多个字符的字符长度为第一长度。
步骤S702:若第一数据段中不存在第二目标字符,则服务设备将第一数据段的数据分布特征确定为平原分布;若第一数据段中存在第二目标字符,则服务设备将第一数据段的数据分布特征确定为非平原分布,其中,第一数据段中位于第二目标字符之前的字符的字符值均小于第二目标字符的字符值,第一数据段中位于第二目标字符之后的字符的字符值均小于或等于第二目标字符的字符值。
步骤S703:若第一数据段的数据分布特征为平原分布,则服务设备从第一数据段的最后一个字符之后的字符中,确定第一目标字符,并将第一目标字符的起始位置确定为待分块数据流的分块位置,其中,第一目标字符满足分块条件,分块条件包括第一目标字符的字符值与第一数据段中的第一个字符的字符值不同,且以第一数据段中的第一个字符作为起始字符,以第一目标字符的前一个字符作为结束字符的数据段的字符长度大于或等于期望分块长度。
需要说明的是,步骤S701~步骤S703的执行过程可分别参见图5a中步骤S501~步骤S502和图4a中步骤S403的具体描述,在此不赘述。在本申请实施例中,服务设备执行步骤S703之后,可以执行步骤S708,以得到数据块。还需要说明的是,在步骤S702中还可以采用如步骤S202、步骤S302或步骤S402中介绍的方法将第一数据段的数据分布特征确定为平原分布,在此不赘述。
步骤S704:若第一数据段的数据分布特征为非平原分布,则服务设备从待分块数据流中确定第二数据段,若第二数据段中的每个字符的字符值均小于第二目标字符的字符值,则服务设备将第一数据段的数据分布特征确定为高原分布;若第二数据段中至少存在一个字符的字符值大于或等于第二目标字符的字符值,则服务设备将第一数据段的数据分布特征确定为均匀分布;其中,第二数据段的第一个字符与第一数据段的最后一个字符相邻,第二目标字符的结束位置与第二数据段中的最后一个字符的结束位置之间的字符长度为第二长度,第二数据段的第一个字符为第一数据段的最后一个字符的后一个字符。
在本申请实施例中,若根据第二目标字符确定出第一数据段的数据分布特征为非平原分布,则服务设备可以通过从待分块数据流中确定第二数据段,并根据第二数据段中的每个字符的字符值进一步判断第一数据段的数据分布特征为高原分布还是均匀分布,进而针对高原分布和均匀分布采用不同的分块策略,以确定不同的分块位置,使得本申请实施例提出的分块方法可以更好地适应属于不同数据分布特征的数据流,并针对不同数据分布特征输出不同分块长度的数据分块,这样可以有效抑制边界偏移问题,更好地对数据流进行分块,从而有利于增强去重效果。
步骤S705:若第一数据段的数据分布特征为高原分布,则服务设备将第二数据段的最后一个字符的结束位置确定为待分块数据流的分块位置。
在本申请实施例中,可以用图7b表示本申请实施例公开的分块方法的工作原理示意图,其中,e’为w1+p+w2范围内的字符极值,p的长度可变,w1和w2的长度固定;w1+p范围内的每个字符的字符值均小于或等于e’(或者,w1+p范围内的每个字符的字符值均大于等于e’);w1+p+w2范围内的所有字符组成一个数据块(即当前数据块);上一个数据块的分块位置A为w1范围内的第一个字符的起始位置,当前数据块的分块位置B为w2范围内的最后一个字符的结束位置。
如图7b所示,在w1+p+w2范围内找到字符极值e’的概率为1/(w1+p+w2),由此可得,进而得到p=(w1+w2)(e-1),其中,e=2.71。根据关系式p=(w1+w2)(e-1),可计算得到期望分块长度E:
若极值因子α=w2/E,则根据α=w2/E和E=(w1+w2)(e-1),可计算得到:w2=αE。换言之,第一长度w1和第二长度w2均可以是服务设备根据期望分块长度E和极值因子α确定的,其中,极值因子α的取值范围为(0,1),α可以是服务设备默认设置的,也可以是服务设备根据用户操作设置的,本申请实施例对此不做限定。其中,极值因子α是指字符极值e’在一个数据块中的相对位置。
在一种实现方式中,任一数据块可以分为m个小分块,每个小分块的分块长度w′=w1+w2。在第a个小分块[(a-1)w′+1,(a-1)w′+w′]的范围内,第(a-1)w′+i个字符的字符值比前面字符的字符值均大(或均小)的概率为:1/((a-1)w′+i),则该范围内所有字符均不满足该条件的概率为:
由此可得,在[(a-1)w′+1,(a-1)w′+w′]范围内至少存在一个字符的字符值比前面字符的字符值均大(或均小)的概率为:所以,任一数据块中至少存在一个字符的字符值比前面字符的字符值均大(或均小)的概率为1/m!。又因期望分块长度为(e-1)w′,所以,任一数据块的实际小分块数目m′可表示为:
因此,任一数据块中至少存在一个字符的字符值比前面字符的字符值均大(或均小)的概率为当m=2时,P=9.38%,即分块长度为2E的概率为9.38%。由此可知,采用本申请实施例公开的分块方法,可以使得数据块长度主要集中在单个期望分块长度E内,这样可以更好地对数据流进行分块,从而有利于增强去重效果。
由图7b可知,在本申请实施例公开的分块方法中E=w1+p+w2,在AE算法中E=p+w,由于w1、w2、w均为固定值,且w1、w2、w均大于1,因此,w2<w。又由于第一数据段的数据分布特征为高原分布时,服务设备可以将第二数据段的最后一个字符的结束位置确定为待分块数据流的分块位置,也就是说,在发现第二目标字符(即极大值e’对应的字符)之后,服务设备可以将第二目标字符后的第w2个字符的结束位置确定为待分块数据流的分块位置。相较于AE算法在发现极大值e’之后,将极大值e’对应的字符后的第w个字符的结束位置确定为待分块数据流的分块位置,采用本申请实施例公开的分块方法,当第一数据段的数据分布特征为高原分布时,输出的数据块的字符长度小于采用AE算法输出的数据块的字符长度,这样可以尽快进入下一个分块周期,从而有效减弱高原分布的出现对分块位置的搜索过程造成的影响。
在本申请实施例中,服务设备执行步骤S705之后,可以执行步骤S708,以得到数据块。
步骤S706:若第一数据段的数据分布特征为均匀分布,则服务设备从待分块数据流中确定第三数据段,第三数据段的第一个字符与第一数据段的最后一个字符相邻,第三数据段中的最后一个字符的字符值既大于或等于第二目标字符的字符值,又大于或等于第三数据段中的其他字符的字符值,第三数据段的第一个字符为第一数据段的最后一个字符的后一个字符。
步骤S707:服务设备从待分块数据流中确定第四数据段,第四数据段的第一个字符与第三数据段的最后一个字符相邻,第四数据段中的多个字符的字符长度为第二长度,第四数据段的第一个字符为第三数据段的最后一个字符的后一个字符;若第四数据段中的每个字符的字符值均小于第三数据段的最后一个字符的字符值,则服务设备将第四数据段的最后一个字符的结束位置确定为待分块数据流的分块位置。
步骤S708:服务设备将第一数据段中的第一个字符的起始位置与分块位置之间的字符作为数据块。
需要说明的是,步骤S706~S707的执行过程可参见图5a中步骤S503的具体描述,步骤S708的执行过程可参见图3a中步骤S305的具体描述,在此不赘述。
在本申请实施例中,当第一数据段的数据分布特征为平原分布时,通过将满足两个分块条件的第一目标字符的起始位置确定为分块位置,一方面,可以使得根据分块位置确定出的数据块的长度大于或等于期望分块长度,避免第一数据段的数据分布特征为平原分布时,采用AE算法输出的数据块长度小于分块期望长度(即期望分块长度)的情况,这样可以有效降低服务设备计算数据块的哈希值的功耗;另一方面,可以尽可能地将字符值相同的更多字符划分到同一个数据块中,从而提高去重率并增强去重效果。另外,当第一数据段的数据分布特征为非平原分布时,服务设备通过从待分块数据流中确定第二数据段,并根据第二数据段中的每个字符的字符值进一步判断第一数据段的数据分布特征为高原分布还是均匀分布,进而针对高原分布和均匀分布采用不同的分块策略,以确定不同的分块位置,使得本申请实施例提出的分块方法可以更好地适应属于不同数据分布特征的数据流,并针对不同数据分布特征输出不同分块长度的数据分块,这样可以有效抑制边界偏移问题,更好地对数据流进行分块,从而有利于增强去重效果。
上述详细阐述了本申请实施例的方法,下面提供了本申请实施例的装置。
请参见图8,图8是本申请实施例提供的一种分块装置的结构示意图,分块装置80用于执行图2-图7a对应的方法实施例中服务设备所执行的步骤,分块装置80可以包括:
第一确定模块801,用于从待分块数据流的头部开始,确定出第一长度的第一数据段,第一数据段包括多个字符,第一数据段包括的多个字符的字符长度为第一长度;
第二确定模块802,用于根据第一数据段中的字符的字符值,确定第一数据段的数据分布特征;
第三确定模块803,用于根据第一数据段的数据分布特征,确定待分块数据流的分块位置;
分块模块804,用于将第一数据段中的第一个字符的起始位置与前述分块位置之间的字符作为数据块。
在一种实现方式中,第三确定模块803具体可以用于:若第一数据段的数据分布特征为平原分布,则根据期望分块长度确定待分块数据流的分块位置,数据分布特征为平原分布的数据段中的每个字符的字符值均相同。
在一种实现方式中,第二确定模块802具体可以用于:若第一数据段中的第一个字符的字符值为第一数据段中的字符的字符值中的最大值,且第一数据段中的第一个字符的字符值与第一数据段中的最后一个字符的字符值相等,则将第一数据段的数据分布特征确定为平原分布。
在一种实现方式中,第三确定模块803用于根据期望分块长度确定待分块数据流的分块位置时,具体可以用于:从第一数据段的最后一个字符之后的字符中,确定第一目标字符,并将第一目标字符的起始位置确定为待分块数据流的分块位置,其中,第一目标字符满足分块条件,分块条件包括第一目标字符的字符值与第一数据段中的第一个字符的字符值不同,且以第一数据段中的第一个字符作为起始字符,以第一目标字符的前一个字符作为结束字符的数据段的字符长度大于或等于期望分块长度。
在一种实现方式中,第三确定模块803用于根据期望分块长度确定待分块数据流的分块位置时,具体可以用于:将与第一数据段的第一个字符的起始位置之间的字符长度为期望分块长度的位置确定为待分块数据流的分块位置。
在一种实现方式中,第三确定模块803具体可以用于:若第一数据段的数据分布特征为非平原分布,则根据第二长度确定所述待分块数据流的分块位置,其中,第二长度小于期望分块长度,数据分布特征为非平原分布的数据段中至少存在两个字符的字符值不同。
在一种实现方式中,第二确定模块802具体可以用于:若第一数据段中存在第二目标字符,则将第一数据段的数据分布特征确定为非平原分布,第一数据段中位于第二目标字符之前的字符的字符值均小于第二目标字符的字符值,第一数据段中位于第二目标字符之后的字符的字符值均小于或等于第二目标字符的字符值。
在一种实现方式中,第三确定模块803用于根据第二长度确定待分块数据流的分块位置时,具体可以用于:从待分块数据流中确定第二数据段,若第二数据段中的每个字符的字符值均小于第二目标字符的字符值,则将第二数据段的最后一个字符的结束位置确定为待分块数据流的分块位置,其中,第二数据段的第一个字符与第一数据段的最后一个字符相邻,第二目标字符的结束位置与第二数据段的最后一个字符的结束位置之间的字符长度为第二长度。
在一种实现方式中,第三确定模块803用于根据第二长度确定待分块数据流的分块位置时,具体可以用于:从待分块数据流中确定第三数据段,第三数据段的第一个字符与第一数据段的最后一个字符相邻,第三数据段的最后一个字符的字符值既大于或等于第二目标字符的字符值,又大于或等于第三数据段中的其他字符的字符值;从待分块数据流中确定第四数据段,第四数据段的第一个字符与第三数据段的最后一个字符相邻,第四数据段中的多个字符的字符长度为第二长度;若第四数据段中的每个字符的字符值均小于第三数据段的最后一个字符的字符值,则将第四数据段的最后一个字符的结束位置确定为待分块数据流的分块位置。
在一种实现方式中,第三确定模块803,还可以用于从待分块数据流中确定第二数据段,若第二数据段中至少存在一个字符的字符值大于或等于第二目标字符的字符值,则触发从待分块数据流中确定第三数据段的步骤,第二数据段的第一个字符与第一数据段的最后一个字符相邻,第二目标字符的结束位置与第二数据段的最后一个字符的结束位置之间的字符长度为第二长度。
在一种实现方式中,分块装置80还可以包括第四确定模块805,第四确定模块805可以用于根据期望分块长度确定第一长度及第二长度。
需要说明的是,图8对应的实施例中未提及的内容以及各个模块执行步骤的具体实现方式可参见图2-图7a所示实施例以及前述内容,这里不再赘述。
在一种实现方式中,图8中的各个模块所实现的相关功能可以结合处理器与网络接口来实现。参见图9,图9是本申请实施例提供的一种服务设备的结构示意图,该服务设备90可以包括网络接口901、处理器902和存储器903,网络接口901、处理器902和存储器903可以通过一条或多条通信总线相互连接,也可以通过其它方式相连接。图8所示的第一确定模块801、第二确定模块803、第三确定模块803、分块模块804和第四确定模块805所实现的相关功能可以通过同一个处理器902来实现,也可以通过多个不同的处理器902来实现。
网络接口901可以用于发送数据和/或信令,以及接收数据和/或信令。应用在本申请实施例中,网络接口901可以用于接收待分块数据流。
处理器902被配置为执行图2-图7a所述方法中服务设备相应的功能。该处理器902可以包括一个或多个处理器,例如该处理器902可以是一个或多个中央处理器(centralprocessing unit,CPU),网络处理器(network processor,NP),硬件芯片或者其任意组合。在处理器902是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
存储器903用于存储程序代码等。存储器903可以包括易失性存储器(volatilememory),例如随机存取存储器(random access memory,RAM);存储器903也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器903还可以包括上述种类的存储器的组合。
处理器902可以调用存储器903中存储的程序代码以执行以下操作:
从待分块数据流的头部开始,确定出第一长度的第一数据段,第一数据段包括多个字符,第一数据段包括的多个字符的字符长度为第一长度;
根据第一数据段中每个字符的字符值,确定第一数据段的数据分布特征;
根据第一数据段的数据分布特征,确定待分块数据流的分块位置;
将第一数据段中的第一个字符的起始位置与分块位置之间的字符作为数据块。
在一种实现方式中,处理器902执行根据第一数据段的数据分布特征,确定待分块数据流的分块位置时,具体可以执行以下操作:若第一数据段的数据分布特征为平原分布,则根据期望分块长度确定待分块数据流的分块位置,数据分布特征为平原分布的数据段中的每个字符的字符值均相同。
在一种实现方式中,处理器902执行根据第一数据段的中字符的字符值,确定第一数据段的数据分布特征时,具体可以执行以下操作:若第一数据段中的第一个字符的字符值为第一数据段中的字符的字符值中的最大值,且第一数据段中的第一个字符的字符值与第一数据段中的最后一个字符的字符值相等,则将第一数据段的数据分布特征确定为平原分布。
在一种实现方式中,处理器902执行根据期望分块长度确定待分块数据流的分块位置时,具体可以执行以下操作:从第一数据段的最后一个字符之后的字符中,确定第一目标字符,并将第一目标字符的起始位置确定为待分块数据流的分块位置,其中,第一目标字符满足分块条件,分块条件包括第一目标字符的字符值与第一数据段中的第一个字符的字符值不同,且以第一数据段中的第一个字符作为起始字符,以第一目标字符的前一个字符作为结束字符的数据段的字符长度大于或等于期望分块长度。
在一种实现方式中,处理器902执行根据期望分块长度确定待分块数据流的分块位置时,具体可以执行以下操作:将与第一数据段的第一个字符的起始位置之间的字符长度为期望分块长度的位置确定为待分块数据流的分块位置。
在一种实现方式中,处理器902执行根据第一数据段的数据分布特征,确定待分块数据流的分块位置时,具体可以执行以下操作:若第一数据段的数据分布特征为非平原分布,则根据第二长度确定所述待分块数据流的分块位置,其中,第二长度小于期望分块长度,数据分布特征为非平原分布的数据段中至少存在两个字符的字符值不同。
在一种实现方式中,处理器902执行根据第一数据段中的字符的字符值,确定第一数据段的数据分布特征时,具体可以执行以下操作:若第一数据段中存在第二目标字符,则将第一数据段的数据分布特征确定为非平原分布,第一数据段中位于所述第二目标字符之前的字符的字符值均小于第二目标字符的字符值,第一数据段中位于所述第二目标字符之后的字符的字符值均小于或等于第二目标字符的字符值。
在一种实现方式中,处理器902执行根据第二长度确定待分块数据流的分块位置时,具体可以执行以下操作:从待分块数据流中确定第二数据段,若第二数据段中的每个字符的字符值均小于第二目标字符的字符值,则将第二数据段的最后一个字符的结束位置确定为待分块数据流的分块位置,第二数据段的第一个字符与第一数据段的最后一个字符相邻,第二目标字符的结束位置与第二数据段的最后一个字符的结束位置之间的字符长度为第二长度。
在一种实现方式中,处理器902执行根据第二长度确定待分块数据流的分块位置时,具体可以执行以下操作:从待分块数据流中确定第三数据段,第三数据段的第一个字符与第一数据段的最后一个字符相邻,第三数据段的最后一个字符的字符值既大于或等于第二目标字符的字符值,又大于或等于第三数据段中的其他字符的字符值;从待分块数据流中确定第四数据段,第四数据段的第一个字符与第三数据段的最后一个字符相邻,第四数据段中的多个字符的字符长度为第二长度;若第四数据段中的每个字符的字符值均小于第三数据段的最后一个字符的字符值,则将第四数据段的最后一个字符的结束位置确定为待分块数据流的分块位置。
在一种实现方式中,处理器902执行从待分块数据流中确定第三数据段之前,还可以执行以下操作:从待分块数据流中确定第二数据段,若第二数据段中至少存在一个字符的字符值大于或等于第二目标字符的字符值,则触发从待分块数据流中确定第三数据段的步骤,第二数据段的第一个字符与第一数据段的最后一个字符相邻,第二目标字符的结束位置与第二数据段的最后一个字符的结束位置之间的字符长度为第二长度。
在一种实现方式中,处理器902还可以执行以下操作:根据期望分块长度确定第一长度及第二长度。
进一步地,处理器902还可以执行图2-图7a所示实施例中服务设备对应的操作,具体可参见方法实施例中的描述,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,可以用于存储图8所示实施例中分块装置所用的计算机软件指令,其包含用于执行上述实施例中为服务设备所设计的程序。
上述计算机可读存储介质包括但不限于快闪存储器、硬盘、固态硬盘。
本申请实施例还提供一种计算机程序产品,该计算机产品被计算设备运行时,可以执行上述图2-图7a实施例中为服务设备所设计的方法。
本申请实施例还提供一种处理器,该处理器包括至少一个电路,用于从待分块数据流的头部开始,确定出第一长度的第一数据段,并根据第一数据段中的字符的字符值,确定第一数据段的数据分布特征,并根据第一数据段的数据分布特征,确定待分块数据流的分块位置,该处理器还包括至少一个电路,用于将第一数据段中的第一个字符的起始位置与分块位置之间的字符作为数据块。上述处理器可以为芯片,可以执行用于实现上述实施例中为服务设备所设计的指令或程序。
本申请实施例还提供了一种芯片系统,该芯片系统包括处理器,该处理器用于实现图2-图7a实施例中为服务设备所设计的分块方法。在一种可行的实现方式中,所述芯片系统还包括存储器,该存储器用于保存实现服务设备的功能所必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
在本申请实施例中还提供一种芯片,包括处理器和存储器,该存储器用包括处理器和存储器,该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,该计算机程序用于实现上述方法实施例中的方法。
本领域普通技术人员可以意识到,结合本申请中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (23)
1.一种分块方法,其特征在于,所述方法包括:
从待分块数据流的头部开始,确定出第一长度的第一数据段,所述第一数据段包括多个字符,所述多个字符的字符长度为所述第一长度;
根据所述第一数据段中的字符的字符值,确定所述第一数据段的数据分布特征;
根据所述第一数据段的数据分布特征,确定所述待分块数据流的分块位置;
将所述第一数据段中的第一个字符的起始位置与所述分块位置之间的字符作为数据块。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一数据段的数据分布特征,确定所述待分块数据流的分块位置,包括:
若所述第一数据段的数据分布特征为平原分布,则根据期望分块长度确定所述待分块数据流的分块位置,数据分布特征为所述平原分布的数据段中的每个字符的字符值均相同。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一数据段的中字符的字符值,确定所述第一数据段的数据分布特征,包括:
若所述第一数据段中的第一个字符的字符值为所述第一数据段中的字符的字符值中的最大值,且所述第一数据段中的第一个字符的字符值与所述第一数据段中的最后一个字符的字符值相等,则将所述第一数据段的数据分布特征确定为所述平原分布。
4.根据权利要求2或3所述的方法,其特征在于,所述根据期望分块长度确定所述待分块数据流的分块位置,包括:
从所述第一数据段的最后一个字符之后的字符中,确定第一目标字符,所述第一目标字符满足分块条件,所述分块条件包括所述第一目标字符的字符值与所述第一数据段中的第一个字符的字符值不同,且以所述第一数据段中的第一个字符作为起始字符,以所述第一目标字符的前一个字符作为结束字符的数据段的字符长度大于或等于所述期望分块长度;
将所述第一目标字符的起始位置确定为所述待分块数据流的分块位置。
5.根据权利要求2或3所述的方法,其特征在于,所述根据期望分块长度确定所述待分块数据流的分块位置,包括:
将与所述第一数据段的第一个字符的起始位置之间的字符长度为所述期望分块长度的位置确定为所述待分块数据流的分块位置。
6.根据权利要求1所述的方法,其特征在于,所述根据所述第一数据段的数据分布特征,确定所述待分块数据流的分块位置,包括:
若所述第一数据段的数据分布特征为非平原分布,则根据第二长度确定所述待分块数据流的分块位置,其中,所述第二长度小于期望分块长度,数据分布特征为所述非平原分布的数据段中至少存在两个字符的字符值不同。
7.根据权利要求6所述的方法,其特征在于,所述根据所述第一数据段中的字符的字符值,确定所述第一数据段的数据分布特征,包括:
若所述第一数据段中存在第二目标字符,则将所述第一数据段的数据分布特征确定为所述非平原分布,所述第一数据段中位于所述第二目标字符之前的字符的字符值均小于所述第二目标字符的字符值,所述第一数据段中位于所述第二目标字符之后的字符的字符值均小于或等于所述第二目标字符的字符值。
8.根据权利要求7所述的方法,其特征在于,所述根据第二长度确定所述待分块数据流的分块位置,包括:
从所述待分块数据流中确定第二数据段,所述第二数据段的第一个字符与所述第一数据段的最后一个字符相邻,所述第二目标字符的结束位置与所述第二数据段的最后一个字符的结束位置之间的字符长度为所述第二长度;
若所述第二数据段中的每个字符的字符值均小于所述第二目标字符的字符值,则将所述第二数据段的最后一个字符的结束位置确定为所述待分块数据流的分块位置。
9.根据权利要求7所述的方法,其特征在于,所述根据第二长度确定所述待分块数据流的分块位置,包括:
从所述待分块数据流中确定第三数据段,所述第三数据段的第一个字符与所述第一数据段的最后一个字符相邻,所述第三数据段的最后一个字符的字符值既大于或等于所述第二目标字符的字符值,又大于或等于所述第三数据段中的其他字符的字符值;
从所述待分块数据流中确定第四数据段,所述第四数据段的第一个字符与所述第三数据段的最后一个字符相邻,所述第四数据段中的多个字符的字符长度为所述第二长度;
若所述第四数据段中的每个字符的字符值均小于所述第三数据段的最后一个字符的字符值,则将所述第四数据段的最后一个字符的结束位置确定为所述待分块数据流的分块位置。
10.根据权利要求9所述的方法,其特征在于,所述从所述待分块数据流中确定第三数据段之前,所述方法还包括:
从所述待分块数据流中确定第二数据段,所述第二数据段的第一个字符与所述第一数据段的最后一个字符相邻,所述第二目标字符的结束位置与所述第二数据段的最后一个字符的结束位置之间的字符长度为所述第二长度;
若所述第二数据段中至少存在一个字符的字符值大于或等于所述第二目标字符的字符值,则触发从所述待分块数据流中确定第三数据段的步骤。
11.根据权利要求6~10任一项所述的方法,其特征在于,所述方法还包括:
根据所述期望分块长度确定所述第一长度及所述第二长度。
12.一种分块装置,其特征在于,包括:
第一确定模块,用于从待分块数据流的头部开始,确定出第一长度的第一数据段,所述第一数据段包括多个字符,所述多个字符的字符长度为所述第一长度;
第二确定模块,用于根据所述第一数据段中的字符的字符值,确定所述第一数据段的数据分布特征;
第三确定模块,用于根据所述第一数据段的数据分布特征,确定所述待分块数据流的分块位置;
分块模块,用于将所述第一数据段中的第一个字符的起始位置与所述分块位置之间的字符作为数据块。
13.根据权利要求12所述的装置,所述第三确定模块具体用于:若所述第一数据段的数据分布特征为平原分布,则根据期望分块长度确定所述待分块数据流的分块位置,数据分布特征为所述平原分布的数据段中的每个字符的字符值均相同。
14.根据权利要求13所述的装置,所述第二确定模块具体用于:若所述第一数据段中的第一个字符的字符值为所述第一数据段中的字符的字符值中的最大值,且所述第一数据段中的第一个字符的字符值与所述第一数据段中的最后一个字符的字符值相等,则将所述第一数据段的数据分布特征确定为所述平原分布。
15.根据权利要求13或14所述的装置,所述第三确定模块用于根据期望分块长度确定所述待分块数据流的分块位置时,具体用于:
从所述第一数据段的最后一个字符之后的字符中,确定第一目标字符,所述第一目标字符满足分块条件,所述分块条件包括所述第一目标字符的字符值与所述第一数据段中的第一个字符的字符值不同,且以所述第一数据段中的第一个字符作为起始字符,以所述第一目标字符的前一个字符作为结束字符的数据段的字符长度大于或等于所述期望分块长度;
将所述第一目标字符的起始位置确定为所述待分块数据流的分块位置。
16.根据权利要求13或14所述的装置,所述第三确定模块用于根据期望分块长度确定所述待分块数据流的分块位置时,具体用于:
将与所述第一数据段的第一个字符的起始位置之间的字符长度为所述期望分块长度的位置确定为所述待分块数据流的分块位置。
17.根据权利要求12所述的装置,所述第三确定模块具体用于:若所述第一数据段的数据分布特征为非平原分布,则根据第二长度确定所述待分块数据流的分块位置,其中,所述第二长度小于期望分块长度,数据分布特征为所述非平原分布的数据段中至少存在两个字符的字符值不同。
18.根据权利要求17所述的装置,所述第二确定模块具体用于:
若所述第一数据段中存在第二目标字符,则将所述第一数据段的数据分布特征确定为所述非平原分布,所述第一数据段中位于所述第二目标字符之前的字符的字符值均小于所述第二目标字符的字符值,所述第一数据段中位于所述第二目标字符之后的字符的字符值均小于或等于所述第二目标字符的字符值。
19.根据权利要求18所述的装置,所述第三确定模块用于根据第二长度确定所述待分块数据流的分块位置时,具体用于:
从所述待分块数据流中确定第二数据段,所述第二数据段的第一个字符与所述第一数据段的最后一个字符相邻,所述第二目标字符的结束位置与所述第二数据段的最后一个字符的结束位置之间的字符长度为所述第二长度;
若所述第二数据段中的每个字符的字符值均小于所述第二目标字符的字符值,则将所述第二数据段的最后一个字符的结束位置确定为所述待分块数据流的分块位置。
20.根据权利要求18所述的装置,所述第三确定模块用于根据第二长度确定所述待分块数据流的分块位置时,具体用于:
从所述待分块数据流中确定第三数据段,所述第三数据段的第一个字符与所述第一数据段的最后一个字符相邻,所述第三数据段的最后一个字符的字符值既大于或等于所述第二目标字符的字符值,又大于或等于所述第三数据段中的其他字符的字符值;
从所述待分块数据流中确定第四数据段,所述第四数据段的第一个字符与所述第三数据段的最后一个字符相邻,所述第四数据段中的多个字符的字符长度为所述第二长度;
若所述第四数据段中的每个字符的字符值均小于所述第三数据段的最后一个字符的字符值,则将所述第四数据段的最后一个字符的结束位置确定为所述待分块数据流的分块位置。
21.根据权利要求20所述的装置,所述第三确定模块,还用于从所述待分块数据流中确定第二数据段,若所述第二数据段中至少存在一个字符的字符值大于或等于所述第二目标字符的字符值,则触发从所述待分块数据流中确定第三数据段的步骤,所述第二数据段的第一个字符与所述第一数据段的最后一个字符相邻,所述第二目标字符的结束位置与所述第二数据段的最后一个字符的结束位置之间的字符长度为所述第二长度。
22.根据权利要求17~21任一项所述的装置,所述分块装置还包括第四确定模块;
所述第四确定模块,用于根据所述期望分块长度确定所述第一长度及所述第二长度。
23.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1~11任一项所述的方法。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910221512.3A CN111722787B (zh) | 2019-03-22 | 2019-03-22 | 一种分块方法及其装置 |
PCT/CN2020/080662 WO2020192627A1 (zh) | 2019-03-22 | 2020-03-23 | 一种分块方法及其装置 |
JP2021556949A JP7299334B2 (ja) | 2019-03-22 | 2020-03-23 | チャンキング方法および装置 |
EP20777350.8A EP3926453A4 (en) | 2019-03-22 | 2020-03-23 | PARTITIONING METHOD AND ASSOCIATED APPARATUS |
KR1020217030895A KR102582369B1 (ko) | 2019-03-22 | 2020-03-23 | 파티셔닝 방법 및 그 장치 |
US17/480,675 US11755540B2 (en) | 2019-03-22 | 2021-09-21 | Chunking method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910221512.3A CN111722787B (zh) | 2019-03-22 | 2019-03-22 | 一种分块方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111722787A true CN111722787A (zh) | 2020-09-29 |
CN111722787B CN111722787B (zh) | 2021-12-03 |
Family
ID=72563503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910221512.3A Active CN111722787B (zh) | 2019-03-22 | 2019-03-22 | 一种分块方法及其装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11755540B2 (zh) |
EP (1) | EP3926453A4 (zh) |
JP (1) | JP7299334B2 (zh) |
KR (1) | KR102582369B1 (zh) |
CN (1) | CN111722787B (zh) |
WO (1) | WO2020192627A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113595685A (zh) * | 2021-07-15 | 2021-11-02 | 上海晶赞融宣科技有限公司 | 数据传输方法及装置、存储介质、终端 |
WO2024021491A1 (zh) * | 2022-07-29 | 2024-02-01 | 天翼云科技有限公司 | 一种数据切片方法、装置和系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024164219A1 (zh) * | 2023-02-09 | 2024-08-15 | 华为技术有限公司 | 数据传输方法和装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040128592A1 (en) * | 2002-12-31 | 2004-07-01 | Young-Seo Park | Method and device for adaptive quantization of soft bits |
US20090070555A1 (en) * | 2006-01-18 | 2009-03-12 | Freescale Semiconductor, Inc. | Device and method for finding extreme values in a data block |
CN101788976A (zh) * | 2010-02-10 | 2010-07-28 | 北京播思软件技术有限公司 | 一种基于内容的文件分割方法 |
CN102214210A (zh) * | 2011-05-16 | 2011-10-12 | 成都市华为赛门铁克科技有限公司 | 重复数据处理方法、装置和系统 |
CN104348571A (zh) * | 2013-07-23 | 2015-02-11 | 华为技术有限公司 | 数据分块方法及装置 |
CN104361068A (zh) * | 2014-11-06 | 2015-02-18 | 华中科技大学 | 一种数据去重过程中的并行分块方法与系统 |
CN104572872A (zh) * | 2014-12-19 | 2015-04-29 | 华中科技大学 | 一种基于极值的数据去重分块方法 |
CN106610794A (zh) * | 2016-11-21 | 2017-05-03 | 深圳市深信服电子科技有限公司 | 数据去重的收敛分块方法及装置 |
CN108243256A (zh) * | 2018-01-19 | 2018-07-03 | 网宿科技股份有限公司 | 一种数据存储方法、编码设备及解码设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8214517B2 (en) * | 2006-12-01 | 2012-07-03 | Nec Laboratories America, Inc. | Methods and systems for quick and efficient data management and/or processing |
US8078593B1 (en) * | 2008-08-28 | 2011-12-13 | Infineta Systems, Inc. | Dictionary architecture and methodology for revision-tolerant data de-duplication |
US20110119262A1 (en) * | 2009-11-13 | 2011-05-19 | Dexter Jeffrey M | Method and System for Grouping Chunks Extracted from A Document, Highlighting the Location of A Document Chunk Within A Document, and Ranking Hyperlinks Within A Document |
CN103514250B (zh) * | 2013-06-20 | 2017-04-26 | 易乐天 | 一种全局重复数据删除的方法和系统及存储装置 |
CN105051724B (zh) * | 2013-08-19 | 2018-09-28 | 华为技术有限公司 | 一种数据对象处理方法与装置 |
CN105022741B (zh) * | 2014-04-23 | 2018-09-28 | 苏宁易购集团股份有限公司 | 压缩方法和系统以及云存储方法和系统 |
US10608784B2 (en) * | 2016-03-15 | 2020-03-31 | ClineHair Commercial Endeavors | Distributed storage system data management and security |
CN104050057B (zh) * | 2014-06-06 | 2017-04-26 | 华中科技大学 | 一种历史感知的数据去重碎片消除方法与系统 |
-
2019
- 2019-03-22 CN CN201910221512.3A patent/CN111722787B/zh active Active
-
2020
- 2020-03-23 JP JP2021556949A patent/JP7299334B2/ja active Active
- 2020-03-23 KR KR1020217030895A patent/KR102582369B1/ko active IP Right Grant
- 2020-03-23 EP EP20777350.8A patent/EP3926453A4/en active Pending
- 2020-03-23 WO PCT/CN2020/080662 patent/WO2020192627A1/zh unknown
-
2021
- 2021-09-21 US US17/480,675 patent/US11755540B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040128592A1 (en) * | 2002-12-31 | 2004-07-01 | Young-Seo Park | Method and device for adaptive quantization of soft bits |
US20090070555A1 (en) * | 2006-01-18 | 2009-03-12 | Freescale Semiconductor, Inc. | Device and method for finding extreme values in a data block |
CN101788976A (zh) * | 2010-02-10 | 2010-07-28 | 北京播思软件技术有限公司 | 一种基于内容的文件分割方法 |
CN102214210A (zh) * | 2011-05-16 | 2011-10-12 | 成都市华为赛门铁克科技有限公司 | 重复数据处理方法、装置和系统 |
CN104348571A (zh) * | 2013-07-23 | 2015-02-11 | 华为技术有限公司 | 数据分块方法及装置 |
CN104361068A (zh) * | 2014-11-06 | 2015-02-18 | 华中科技大学 | 一种数据去重过程中的并行分块方法与系统 |
CN104572872A (zh) * | 2014-12-19 | 2015-04-29 | 华中科技大学 | 一种基于极值的数据去重分块方法 |
CN106610794A (zh) * | 2016-11-21 | 2017-05-03 | 深圳市深信服电子科技有限公司 | 数据去重的收敛分块方法及装置 |
CN108243256A (zh) * | 2018-01-19 | 2018-07-03 | 网宿科技股份有限公司 | 一种数据存储方法、编码设备及解码设备 |
Non-Patent Citations (3)
Title |
---|
YUCHENG ZHANG 等: "A Fast Asymmetric Extremum Content Defined Chunking Algorithm for Data Deduplication in Backup Storage Systems", 《IEEE TRANSACTIONS ON COMPUTERS》 * |
YUCHENG ZHANG 等: "AE: An Asymmetric Extremum Content Defined Chunking Algorithm for Fast and Bandwidth-Efficient Data Deduplication", 《2015 IEEE CONFERENCE ON COMPUTER COMMUNICATIONS (INFOCOM)》 * |
周双鹏: "并行迁移压缩算法的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113595685A (zh) * | 2021-07-15 | 2021-11-02 | 上海晶赞融宣科技有限公司 | 数据传输方法及装置、存储介质、终端 |
WO2024021491A1 (zh) * | 2022-07-29 | 2024-02-01 | 天翼云科技有限公司 | 一种数据切片方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
KR102582369B1 (ko) | 2023-09-25 |
KR20210126773A (ko) | 2021-10-20 |
EP3926453A1 (en) | 2021-12-22 |
WO2020192627A1 (zh) | 2020-10-01 |
US11755540B2 (en) | 2023-09-12 |
CN111722787B (zh) | 2021-12-03 |
JP7299334B2 (ja) | 2023-06-27 |
JP2022527743A (ja) | 2022-06-06 |
EP3926453A4 (en) | 2022-05-04 |
US20220004524A1 (en) | 2022-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107046812B (zh) | 一种数据保存方法和装置 | |
CN111722787B (zh) | 一种分块方法及其装置 | |
US10359939B2 (en) | Data object processing method and apparatus | |
CN113535706B (zh) | 两阶段布谷鸟过滤器及基于两阶段布谷鸟过滤器的重复数据删除方法 | |
US9059850B2 (en) | Data alignment over multiple physical lanes | |
WO2012033498A1 (en) | Systems and methods for data compression | |
CN112099725A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN110659151A (zh) | 数据校验方法及装置,存储介质 | |
CN107291935B (zh) | 基于Spark与Huffman编码的CPIR-V最近邻隐私保护查询方法 | |
US20220253222A1 (en) | Data reduction method, apparatus, computing device, and storage medium | |
US20240211154A1 (en) | Method, device, and computer program product for de-duplicating data | |
WO2021082926A1 (zh) | 一种数据压缩的方法及装置 | |
CN104967856A (zh) | 一种编码方法及相关设备 | |
CN112162973A (zh) | 指纹碰撞规避、去重及恢复方法、存储介质和去重系统 | |
CN113590322A (zh) | 一种数据处理方法和装置 | |
KR102026125B1 (ko) | 경량 복잡도 기반의 패킷레벨 중복 제거 장치 및 방법, 이를 저장하는 기록매체 | |
CN112396100A (zh) | 一种细粒度分类模型的优化方法、系统及相关装置 | |
EP4290775A1 (en) | Data compression method and apparatus | |
CN116383290B (zh) | 一种数据泛化解析方法 | |
CN113806071B (zh) | 一种边缘计算应用的数据同步方法与系统 | |
US8990173B2 (en) | Method and apparatus for selecting an optimal delete-safe compression method on list of delta encoded integers | |
CN118012333A (zh) | 纠删码存储空间利用率提升方法、装置、设备及存储介质 | |
CN112463021A (zh) | 数据处理方法及装置、芯片 | |
CN114564335A (zh) | 基于条带合并的局部可修复码冗余度转换方法及存储介质 | |
CN112486976A (zh) | 数据处理方法、装置、网络设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |