CN104572872B - 一种基于极值的数据去重分块方法 - Google Patents
一种基于极值的数据去重分块方法 Download PDFInfo
- Publication number
- CN104572872B CN104572872B CN201410803454.2A CN201410803454A CN104572872B CN 104572872 B CN104572872 B CN 104572872B CN 201410803454 A CN201410803454 A CN 201410803454A CN 104572872 B CN104572872 B CN 104572872B
- Authority
- CN
- China
- Prior art keywords
- curr
- window
- max
- value
- sliding window
- 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.)
- Active
Links
Classifications
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24556—Aggregation; Duplicate elimination
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于极值的数据去重分块方法,其特征在于,包括:本发明是现有分块方法的改进,与现有分块方法的不同之处在于:1、本方法在局部非对称区域而不是对称区域内寻找局部极值来解决边界偏移问题;2、本发明将拥有局部极值的位置(即极值点)放在数据块的中间而不是作为数据块的边界;3、本发明在遇到相等的极值时将最先出现的极值所在的位置作为极值点。前两个不同点使得本发明在判断切点时所需的操作极少,因此可获得远高于现有分块方法的吞吐量;第三个不同点使本发明能够检测并消除掉部分低熵字符串中的重复数据。此外,本发明生成的数据块的块长方差较小且无需强制块长限制,因此能获得与传统分块方法相当或更高的去重率。
Description
技术领域
本发明属于计算机存储技术与计算机网络领域,更具体地,涉及一种基于极值的数据去重分块方法。
背景技术
随着网络的高速发展,越来越多的个人用户和企业接入互联网,数据总量呈爆炸式增长。据统计,从2014年开始的未来10年,每一年全球数据总量都将增长40%,即大概每两年数据总量就会翻一倍;预计到2020年,全球的信息总量将达到44ZB。存储和传输如此大量的数据是目前面临的一个重大挑战。数据去重(或者称重复数据删除,DataDeduplication)作为一种能够有效地消除冗余数据的技术,成为了存储和网络优化领域的研究热点。
虽然数据去重技术已发展多年,但是仍然存在诸多挑战。一般来说,数据去重可以分为四个环节:数据分块、指纹计算、指纹索引和存储。数据流在数据分块阶段被分割成较小的数据块,再在指纹计算阶段对各个数据块计算指纹,然后在指纹索引阶段通过匹配数据块的指纹辨识出重复的数据块,最后将不重复的数据块进行存储,而重复的数据块不重复存储。数据分块环节负责将数据流分割成数据块。分块方法有两种:定长分块和变长分块。定长分块将数据流分成固定长度的数据块,这种方法会受到边界偏移问题的影响。边界偏移即数据的插入或删除操作导致的数据块的边界发生偏移,进而使得本来重复的块被检测为不重复。例如,在一个文件的最前面插入一个字符,采用定长分块,那么编辑后的文件的所有数据块的边界与原文件的数据块相比都会相差一个字节,因此没有任何一个块会被检测出是重复的。变长分块根据局部内容来判断数据块的边界,只要局部内容不变,数据库的边界就不会变化。因此,变长分块可以很好的抑制边界偏移问题,从而检测出更多的重复数据块。一般来说,变长分块环节需要扫描整个数据流来找出符合条件的位置作为切点,因此计算量极大。现有的分块方法判断切点的操作过多、过于耗时,这就使得数据分块是整个数据去重系统的写入过程的性能瓶颈。已有的研究通过各种方法来提高数据分块的吞吐量,例如利用GPU加速、将数据去重过程的各个环节并行化以充分挖掘现代计算机的多核计算能力。但是,这些方式都借助了更多的资源来获得性能的提升,而不是优化算法本身。
发明内容
本发明的目的在于提供一种基于极值的数据去重分块方法,这种方法适用于对吞吐率要求较高的数据去重系统。该发明提出的分块方法能够获远高于传统分块算法的吞吐量,同时获得与之相当或更高的去重率。
为了实现上述目的,按照本发明的一个方面,提供了一种基于极大值的数据去重分块方法,所述方法包括以下步骤:
(1)将滑动窗口置于数据流尚未分块的起始位置,设置该窗口的位置P为0,并根据窗口内容计算出该窗口的值V,将此窗口的V和P分别赋值给临时最大值Vmax和Vmax所在的位置Pmax;
(2)将滑动窗口向前滑动一个字节,设置当前窗口的位置Pcurr为前一个窗口的位置P加1,计算当前窗口的值Vcurr,并将Vcurr与Vmax进行比较:
(2.1)如果Vcurr>Vmax,则将Vcurr和Pcurr分别赋值给Vmax和Pmax,执行步骤(2);
(2.2)如果Vcurr≤Vmax,则检查Pcurr与Pmax的距离,如果距离小于预设值W,执行步骤(2);如果距离等于预设值W,则Vmax拥有局部区域内的最大值,其所在位置Pmax为极值点,当前位置Pcurr为切点;输出该切点,执行步骤(1)进行下一轮分块。
本发明提出的分块方法可以通过修改预设值W来调整平均块长,其平均块长为(e-1)×W,其中常数e为自然对数的底数。
具体地,所述窗口的值V由窗口内的符号转换成整型数而来。
在本发明的一个实施例中,所述滑动窗口的窗口大小为8字节,所述窗口的值为64位的整型数。
按照本发明的另一方面,还提供了一种基于极大值的数据去重分块系统,所述系统包括初始值设置模块以及分块模块,其中:
所述初始值设置模块,用于将滑动窗口置于数据流尚未分块的起始位置,设置该窗口的位置P为0,并根据窗口内容计算出该窗口的值V,将此窗口的V和P分别赋值给临时最大值Vmax和Vmax所在的位置Pmax;
所述分块模块,用于将滑动窗口向前滑动一个字节,设置当前窗口的位置Pcurr为前一个窗口的位置P加1,计算当前窗口的值Vcurr,并将Vcurr与Vmax进行比较:
如果Vcurr>Vmax,则将Vcurr和Pcurr分别赋值给Vmax和Pmax,转分块模块继续滑动窗口;
如果Vcurr≤Vmax,则检查Pcurr与Pmax的距离,如果距离小于预设值W,则转分块模块继续滑动窗口;如果距离等于预设值W,则Vmax拥有局部区域内的最大值,其所在位置Pmax为极值点,当前位置Pcurr为切点;输出该切点,转初始值设置模块进行下一轮分块。
具体地,所述窗口的值V由窗口内的符号转换成整型数而来。
按照本发明的另一方面,还提供了一种基于极小值的数据去重分块方法,所述方法包括以下步骤:
(1)将滑动窗口置于数据流尚未分块的起始位置,设置该窗口的位置P为0,并根据窗口内容计算出该窗口的值V,将此窗口的V和P分别赋值给临时最小值Vmin和Vmin所在的位置Pmin;
(2)将滑动窗口向前滑动一个字节,设置当前窗口的位置Pcurr为前一个窗口的位置P加1,计算当前窗口的值Vcurr,并将Vcurr与Vmin进行比较:
(2.1)如果Vcurr<Vmin,则将Vcurr和Pcurr分别赋值给Vmin和Pmin,执行步骤(2);
(2.2)如果Vcurr≥Vmin,则检查Pcurr与Pmin的距离,如果距离小于预设值W,执行步骤(2);如果距离等于预设值W,则Vmin拥有局部区域内的最小值,其所在位置Pmin为极值点,当前位置Pcurr为切点;输出该切点,执行步骤(1)进行下一轮分块。
具体地,所述窗口的值V由窗口内的符号转换成整型数而来。
具体地,所述滑动窗口的窗口大小为8字节,所述窗口的值为64位的整型数。
按照本发明的另一方面,还提供了一种基于极小值的数据去重分块系统,所述系统包括初始值设置模块以及分块模块,其中:
所述初始值设置模块,用于将滑动窗口置于数据流尚未分块的起始位置,设置该窗口的位置P为0,并根据窗口内容计算出该窗口的值V,将此窗口的V和P分别赋值给临时最小值Vmin和Vmin所在的位置Pmin;
所述分块模块,用于将滑动窗口向前滑动一个字节,设置当前窗口的位置Pcurr为前一个窗口的位置P加1,计算当前窗口的值Vcurr,并将Vcurr与Vmin进行比较:
如果Vcurr<Vmin,则将Vcurr和Pcurr分别赋值给Vmin和Pmin,转分块模块继续滑动窗口;
如果Vcurr≥Vmin,则检查Pcurr与Pmin的距离,如果距离小于预设值W,则转分块模块继续滑动窗口;如果距离等于预设值W,则Vmin拥有局部区域内的最小值,其所在位置Pmin为极值点,当前位置Pcurr为切点;输出该切点,转初始值设置模块进行下一轮分块。
具体地,所述窗口的值V由窗口内的符号转换成整型数而来。
与现有技术相比,本发明具有如下有益效果:
1、本发明提出的分块方法,在对每个字节进行切点判断时仅需一次比较操作和两次条件判断,所用操作远少于复杂的传统分块方法,因此可以获得远高于传统分块方法的吞吐量;
2、本发明提出的分块方法,能获得与传统分块方法相当或更高的去重率。对于变长分块方法来说,影响去重率的因素很多,包括块长方差、强制块长限制以及能否检测并消除掉低熵字符串中的重复数据。块长方差越小,块长限制越少,则去重率越高。本发明提出的分块方法的块长方差比传统分块方法小,也无需最小和最大块长限制(其分块的方式决定了最小块长为W+1,而且产生较长数据块的概率又极低);而且能检测并消除掉部分低熵字符串中的重复数据。低熵字符串指的是熵值较低的字符串,例如全0字符串和形如"abcabc…abc…"的少量字符循环的字符串。低熵字符串在文件中很常见,如果可以检测并消除掉这部分重复数据,对提高去重率是有益的。传统的分块方法都不能很好地检测并消除低熵字符串中的重复数据。本发明提出的分块方法在遇到低熵字符串时并不查找严格的局部极值,而是允许多个极值相等,并选择最先出现的那一个所在的位置作为极值点。这种方式可以把长串的低熵字符串分割成多个长度为W+1的数据块,并只保存第一个数据块而消除后面的重复数据块。
附图说明
图1为本发明的原理示意图;
图2为本发明解决边界偏移问题的一个说明;
图3为在对称区域内寻找最大值与在非对称区域内寻找最大值区别;
图4为本发明处理低熵字符串的一个实例。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明提供了一种基于极值的数据去重分块方法。该方法使用滑动窗口技术查找局部区域内的极值(为方便描述,此处采用最大值为例进行说明),滑动窗口有两个属性:位置P和值V,未分块数据流的首个窗口的P为0,以后每滑动一次增加1,输出切点后P重新置0;V由窗口内的符号转换而来(一般窗口大小为8,V即为8个符号转换成的64位整型数)。分块方法包括以下步骤:
(1)将滑动窗口置于数据流尚未分块的起始位置,设置该窗口的位置P为0,并根据窗口内容计算出该窗口的值V,将此窗口的V和P分别赋值给临时最大值Vmax和Vmax所在的位置Pmax;
(2)将滑动窗口向前滑动一个字节,设置当前窗口的位置Pcurr为前一个窗口的位置P加1,计算当前窗口的值Vcurr,并将Vcurr与Vmax进行比较:
(2.1)如果Vcurr>Vmax,则将Vcurr和Pcurr分别赋值给Vmax和Pmax,执行步骤(2);
(2.2)如果Vcurr≤Vmax,则检查Pcurr与Pmax的距离,如果距离小于预设值W,执行步骤(2);如果距离等于预设值W,则Vmax拥有局部区域内的最大值,其所在位置Pmax为极值点,当前位置Pcurr为切点;输出该切点,执行步骤(1)进行下一轮分块。
本发明提出的分块方法可以通过修改预设值W来调整平均块长,其平均块长为(e-1)×W,其中常数e为自然对数的底数。
进一步地,本发明还提供了一种基于极值的数据去重分块系统,所述系统包括初始值设置模块以及分块模块,其中:
所述初始值设置模块,用于将滑动窗口置于数据流尚未分块的起始位置,设置该窗口的位置P为0,并根据窗口内容计算出该窗口的值V,将此窗口的V和P分别赋值给临时最大值Vmax和Vmax所在的位置Pmax;
所述分块模块,用于将滑动窗口向前滑动一个字节,设置当前窗口的位置Pcurr为前一个窗口的位置P加1,计算当前窗口的值Vcurr,并将Vcurr与Vmax进行比较:
如果Vcurr>Vmax,则将Vcurr和Pcurr分别赋值给Vmax和Pmax,转分块模块继续滑动窗口;
如果Vcurr≤Vmax,则检查Pcurr与Pmax的距离,如果距离小于预设值W,则转分块模块继续滑动窗口;如果距离等于预设值W,则Vmax拥有局部区域内的最大值,其所在位置Pmax为极值点,当前位置Pcurr为切点;输出该切点,转初始值设置模块进行下一轮分块。
具体地,所述窗口的值V由窗口内的符号转换成整型数而来。
本发明所述的方法适用于存储和网络传输领域的数据去重系统。数据去重技术的性能瓶颈在数据分块。为了提高系统的整体吞吐率,可以采用更高吞吐量的分块算法。
本发明利用局部区域内的最大值在该区域不容易被替换掉的现象来避免边界偏移问题,其原理如图1所示。假设有一个文件用本发明提出的分块方法切分成了多个数据块,图中标出了头两个数据块,其中的两个极值点分别具有从所在区域的起点到切点之间的最大值。现在这个文件被修改了。如果该修改位于数据块1的起点1和极值点1之间,除非修改操作产生了比该区域内最大值更大的值(概率极低),否则极值点1仍然拥有此区域内的最大值,这种情况下,极值点1所在位置对应的数据内容没有发生变动,切点1对应的数据内容也不会变动,后面的数据(例如数据块2)也不会受此修改的影响。如果该修改在极值点1和切点1之间;因为极值点1到切点1之间是定长的,所以切点1和起点2所对应的数据内容都会发生变动,数据块2的内容也会变动。但是只要修改后极值点2所在位置的值仍然是局部区域内(从起点2到极值点2之间)的最大值,极值点2的内容就不会变动,切点2的数据内容也不会变动,进而可以保证后面的数据不会受到影响。传统的分块方法可以使得某个数据块内的修改不会影响到相邻的数据块;而使用本发明提出的分块方法,当修改发生在极值点和切点之间时,会比传统分块方法多一个受影响的数据块,例如一处位于极值点1和切点1之间的修改会使得数据块2也受影响。当连续多个数据块都被修改时,本发明提出的分块方法能使得受影响的数据块的个数与传统分块方法相等或者只增加一个(这取决于最后一处修改是位于所在块的极值点的前面还是后面);这表示有大量修改集中在一个区域内时,本发明提出的分块方法中可能多出来的一个受影响的数据块是可以忽略的;而实际上大部分文件的修改正是趋向于集中在少数几个区域中的。由于分块方法的去重率还受其他几个因素的影响,因此本发明提出的分块方法损失的少量重复数据可以由其他方面的优势弥补回来,即:更小的块长方差、没有强制块长限制以及可以检测并消除更多的低熵字符串中的重复数据。
图2给出了一个说明例。中间的数据为原始数据,采用了本发明提出的分块方法分成了三个数据块。本例中的预设值为3,即局部最大值后的第三个位置为切点。修改1和修改2分别是在原始数据的不同位置插入了数86后的结果,从修改1中可以看到,插入在数据块1的极值点654之前时,数据块2中的极值点983可以将内容重新对齐,使得数据块2的切点仍然是37,因此数据块3的边界不会产生偏移(起点仍然是50)。而在修改2中,插入的数在极值点654之后,极值点自己可以将内容重新对齐,使得数据块2的起点不会产生边界偏移(仍然是92)。
本发明提出的方法在局部非对称区域内而不是对称区域内寻找局部最大值来解决边界偏移问题,并且没有将最大值所在的位置(即极值点)作为切点,而是将与极值点距离正好为预设值W(即当前正在被处理)的位置作为切点,这种方式使得分块操作不需要回溯,可以大幅度的减少数据分块的操作并获得远高于现有分块方法的吞吐量。图3(a)描述的是在对称区域内查找最大值并将最大值所在位置作为切点的示意图。假设当前正在处理位置D,且确定M是区域[A,D]内的最大值,M作为切点输出。当分块操作运行到位置E时,需检测其值是否比其左边定长区域[C,D]内所有值都大,因此分块操作需回溯,将区域[C,D]内的部分值与位置E的值进行比较。这种回溯不仅会导致更多的比较操作,而且需要额外的操作来维护已经处理过的定长区域内的信息,例如处理位置E时仍然需要维护区域[C,D]的信息。图3(b)描述的是本发明提出的分块方法。分块操作运行到位置I时,确定N为区域[F,I]内的最大值(注意,N的左边区域[F,G]可以为空)。输出当前位置I为切点,并继续运行到位置J开始下一轮的查找局部最大值操作。与图3(a)描述的方法不同的是,由位置J开始的这一轮的查找最大值的操作与之前的已被分割的数据无关,因此不需要回溯,这就减少了比较次数和回溯的其他开销。表一列出了传统分块方法(包括了现有的在对称区域内寻找最大值的分块方法和最常用的Rabin fingerprint分块方法)与本发明提出的分块方法在判断切点时所需的操作比较。显然,本发明提出的分块方法(即表中的“非对称区域内查找最大值”)所需操作最少。
表一
本发明提出的方法可以在低熵字符串中找到切点,如步骤(2.2)所述,Vcurr与Vmax相等时的处理方式与Vcurr小于Vmax的一样,这样可以保证在多个相等的最大值中,第一个会被选为极值点,而离极值点距离为预设值W的点为切点,整个块的块长为W+1。当低熵字符串很长时,本发明提出的方法可以将其切割成等长数据块,并且只需存储第一个。图4给出了一个实施例。在这个例子中,数据流为全0字符串,假设预设值为7,则第一个位置就是第一个数据块的极值点,离第一个位置间隔为7的位置为切点,数据块的块长为8。第二个数据块用相同方法处理,其内容与第一个数据块完全相同,因此会被识别为与第一个数据块相同的重复数据,不会被存储;同样,数据块3以及其后的数据块也不用存储。
上述详细说明是以极大值点为例(即具有局部最大值的位置点为例说明本方法),同理极值点也可以扩展为极小值点(即具有局部最小值的位置)。
本发明还提供了一种基于极小值的数据去重分块方法,所述方法包括以下步骤:
(1)将滑动窗口置于数据流尚未分块的起始位置,设置该窗口的位置P为0,并根据窗口内容计算出该窗口的值V,将此窗口的V和P分别赋值给临时最小值Vmin和Vmin所在的位置Pmin;
(2)将滑动窗口向前滑动一个字节,设置当前窗口的位置Pcurr为前一个窗口的位置P加1,计算当前窗口的值Vcurr,并将Vcurr与Vmin进行比较:
(2.1)如果Vcurr<Vmin,则将Vcurr和Pcurr分别赋值给Vmin和Pmin,执行步骤(2);
(2.2)如果Vcurr≥Vmin,则检查Pcurr与Pmin的距离,如果距离小于预设值W,执行步骤(2);如果距离等于预设值W,则Vmin拥有局部区域内的最小值,其所在位置Pmin为极值点,当前位置Pcurr为切点;输出该切点,执行步骤(1)进行下一轮分块。
具体地,所述窗口的值V由窗口内的符号转换成整型数而来。
具体地,所述滑动窗口的窗口大小为8字节,所述窗口的值为64位的整型数。
按照本发明的另一方面,还提供了一种基于极小值的数据去重分块系统,所述系统包括初始值设置模块以及分块模块,其中:
所述初始值设置模块,用于将滑动窗口置于数据流尚未分块的起始位置,设置该窗口的位置P为0,并根据窗口内容计算出该窗口的值V,将此窗口的V和P分别赋值给临时最小值Vmin和Vmin所在的位置Pmin;
所述分块模块,用于将滑动窗口向前滑动一个字节,设置当前窗口的位置Pcurr为前一个窗口的位置P加1,计算当前窗口的值Vcurr,并将Vcurr与Vmin进行比较:
如果Vcurr<Vmin,则将Vcurr和Pcurr分别赋值给Vmin和Pmin,转分块模块继续滑动窗口;
如果Vcurr≥Vmin,则检查Pcurr与Pmin的距离,如果距离小于预设值W,则转分块模块继续滑动窗口;如果距离等于预设值W,则Vmin拥有局部区域内的最小值,其所在位置Pmin为极值点,当前位置Pcurr为切点;输出该切点,转初始值设置模块进行下一轮分块。
具体地,所述窗口的值V由窗口内的符号转换成整型数而来。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于极大值的数据去重分块方法,其特征在于,所述方法包括以下步骤:
(1)将滑动窗口置于数据流尚未分块的起始位置,设置该滑动窗口的位置P为0,并根据窗口内容计算出该滑动窗口的值V,将此滑动窗口的V和P分别赋值给临时最大值Vmax和Vmax所在的位置Pmax;
(2)将滑动窗口向前滑动一个字节,设置当前窗口的位置Pcurr为前一个窗口的位置P加1,计算当前窗口的值Vcurr,并将Vcurr与Vmax进行比较:
(2.1)如果Vcurr>Vmax,则将Vcurr和Pcurr分别赋值给Vmax和Pmax,执行步骤(2);
(2.2)如果Vcurr≤Vmax,则检查Pcurr与Pmax的距离,如果距离小于预设值W,执行步骤(2);如果距离等于预设值W,则Vmax拥有局部区域内的最大值,其所在位置Pmax为极值点,当前位置Pcurr为切点;输出该切点,执行步骤(1)进行下一轮分块。
2.如权利要求1所述的方法,其特征在于,所述滑动窗口的值V由窗口内的符号转换成整型数而来。
3.如权利要求1或2所述的方法,其特征在于,所述滑动窗口的窗口大小为8字节,所述滑动窗口的值为64位的整型数。
4.一种基于极大值的数据去重分块系统,其特征在于,所述系统包括初始值设置模块以及分块模块,其中:
所述初始值设置模块,用于将滑动窗口置于数据流尚未分块的起始位置,设置该滑动窗口的位置P为0,并根据窗口内容计算出该滑动窗口的值V,将此滑动窗口的V和P分别赋值给临时最大值Vmax和Vmax所在的位置Pmax;
所述分块模块,用于将滑动窗口向前滑动一个字节,设置当前窗口的位置Pcurr为前一个窗口的位置P加1,计算当前窗口的值Vcurr,并将Vcurr与Vmax进行比较:
如果Vcurr>Vmax,则将Vcurr和Pcurr分别赋值给Vmax和Pmax,转分块模块继续滑动窗口;
如果Vcurr≤Vmax,则检查Pcurr与Pmax的距离,如果距离小于预设值W,则转分块模块继续滑动窗口;如果距离等于预设值W,则Vmax拥有局部区域内的最大值,其所在位置Pmax为极值点,当前位置Pcurr为切点;输出该切点,转初始值设置模块进行下一轮分块。
5.如权利要求4所述的系统,其特征在于,所述滑动窗口的值V由窗口内的符号转换成整型数而来。
6.一种基于极小值的数据去重分块方法,其特征在于,所述方法包括以下步骤:
(1)将滑动窗口置于数据流尚未分块的起始位置,设置该滑动窗口的位置P为0,并根据窗口内容计算出该滑动窗口的值V,将此滑动窗口的V和P分别赋值给临时最小值Vmin和Vmin所在的位置Pmin;
(2)将滑动窗口向前滑动一个字节,设置当前窗口的位置Pcurr为前一个滑动窗口的位置P加1,计算当前窗口的值Vcurr,并将Vcurr与Vmin进行比较:
(2.1)如果Vcurr<Vmin,则将Vcurr和Pcurr分别赋值给Vmin和Pmin,执行步骤(2);
(2.2)如果Vcurr≥Vmin,则检查Pcurr与Pmin的距离,如果距离小于预设值W,执行步骤(2);如果距离等于预设值W,则Vmin拥有局部区域内的最小值,其所在位置Pmin为极值点,当前位置Pcurr为切点;输出该切点,执行步骤(1)进行下一轮分块。
7.如权利要求6所述的方法,其特征在于,所述滑动窗口的值V由窗口内的符号转换成整型数而来。
8.如权利要求6或7所述的方法,其特征在于,所述滑动窗口的窗口大小为8字节,所述滑动窗口的值为64位的整型数。
9.一种基于极小值的数据去重分块系统,其特征在于,所述系统包括初始值设置模块以及分块模块,其中:
所述初始值设置模块,用于将滑动窗口置于数据流尚未分块的起始位置,设置该滑动窗口的位置P为0,并根据窗口内容计算出该滑动窗口的值V,将此滑动窗口的V和P分别赋值给临时最小值Vmin和Vmin所在的位置Pmin;
所述分块模块,用于将滑动窗口向前滑动一个字节,设置当前窗口的位置Pcurr为前一个窗口的位置P加1,计算当前窗口的值Vcurr,并将Vcurr与Vmin进行比较:
如果Vcurr<Vmin,则将Vcurr和Pcurr分别赋值给Vmin和Pmin,转分块模块继续滑动窗口;
如果Vcurr≥Vmin,则检查Pcurr与Pmin的距离,如果距离小于预设值W,则转分块模块继续滑动窗口;如果距离等于预设值W,则Vmin拥有局部区域内的最小值,其所在位置Pmin为极值点,当前位置Pcurr为切点;输出该切点,转初始值设置模块进行下一轮分块。
10.如权利要求9所述的系统,其特征在于,所述滑动窗口的值V由窗口内的符号转换成整型数而来。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410803454.2A CN104572872B (zh) | 2014-12-19 | 2014-12-19 | 一种基于极值的数据去重分块方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410803454.2A CN104572872B (zh) | 2014-12-19 | 2014-12-19 | 一种基于极值的数据去重分块方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104572872A CN104572872A (zh) | 2015-04-29 |
CN104572872B true CN104572872B (zh) | 2017-08-25 |
Family
ID=53088934
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410803454.2A Active CN104572872B (zh) | 2014-12-19 | 2014-12-19 | 一种基于极值的数据去重分块方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104572872B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786655A (zh) * | 2016-03-08 | 2016-07-20 | 成都云祺科技有限公司 | 一种虚拟机备份数据重复数据删除方法 |
CN106610794B (zh) * | 2016-11-21 | 2020-05-15 | 深信服科技股份有限公司 | 数据去重的收敛分块方法及装置 |
CN111722787B (zh) * | 2019-03-22 | 2021-12-03 | 华为技术有限公司 | 一种分块方法及其装置 |
CN110619650A (zh) * | 2019-09-18 | 2019-12-27 | 嘉兴学院 | 一种基于线结构激光点云的边缘点提取方法和装置 |
CN112115108A (zh) * | 2020-09-11 | 2020-12-22 | 哈尔滨工业大学(威海) | 一种车辆物联网云存储系统重复数据删除方法 |
CN114625316A (zh) * | 2022-02-11 | 2022-06-14 | 华南理工大学 | 应用在重复数据删除的基于内容分块方法、系统及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831222A (zh) * | 2012-08-24 | 2012-12-19 | 华中科技大学 | 一种基于重复数据删除的差量压缩方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130087850A (ko) * | 2012-01-30 | 2013-08-07 | 삼성전자주식회사 | 데이터 디듀플리케이션 시스템 및 그 방법 |
CN104012055B (zh) * | 2012-12-13 | 2017-04-12 | 华为技术有限公司 | 一种数据处理方法及装置 |
-
2014
- 2014-12-19 CN CN201410803454.2A patent/CN104572872B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831222A (zh) * | 2012-08-24 | 2012-12-19 | 华中科技大学 | 一种基于重复数据删除的差量压缩方法 |
Non-Patent Citations (2)
Title |
---|
P-Dedupe:Exploiting Parallelism in Data Duduplication System;Wen Xia et al;《2012 IEEE Seventh International Conference on Networking, Architecture, and Storage》;20121231;第338-347页 * |
基于极值点分块的重复数据检测算法;谢垂益等;《信息网络安全》;20131231(第8期);第10-12页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104572872A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104572872B (zh) | 一种基于极值的数据去重分块方法 | |
CN105389349B (zh) | 词典更新方法及装置 | |
CN107025218B (zh) | 一种文本去重方法和装置 | |
EP3622411B1 (en) | Incremental graph computations for querying large graphs | |
CN101950284B (zh) | 中文分词方法及系统 | |
CN102831222A (zh) | 一种基于重复数据删除的差量压缩方法 | |
CN106970904B (zh) | 新词发现的方法及装置 | |
CN106778079A (zh) | 一种基于MapReduce的DNA序列k‑mer频次统计方法 | |
CN105589908A (zh) | 用于事务集合的关联规则计算方法 | |
CN105589894B (zh) | 文档索引建立方法和装置、文档检索方法和装置 | |
CN106484730A (zh) | 字符串匹配方法和装置 | |
CN103646029A (zh) | 一种针对博文的相似度计算方法 | |
CN103995827B (zh) | MapReduce计算框架中的高性能排序方法 | |
CN105426412A (zh) | 多模式的串匹配方法和装置 | |
CN106970919B (zh) | 新词组发现的方法及装置 | |
CN105512109B (zh) | 新词汇的发现方法及装置 | |
CN107729338B (zh) | 数据节点相似度计算方法和装置 | |
US20160196303A1 (en) | String search device, string search method, and string search program | |
CN108830854A (zh) | 一种图像分割方法及存储介质 | |
CN105515586B (zh) | 一种快速差量压缩方法 | |
CN110909214A (zh) | 基于kmp匹配算法的字符串快速匹配方法 | |
CN103609091B (zh) | 一种数据传输的方法和装置 | |
US10902036B2 (en) | Intersection algorithm-based search method and system, and storage medium | |
CN106569986A (zh) | 字符串替换方法和装置 | |
CN102253983A (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 |