一种在计算机存储中识别重复数据的方法

文档序号:6572912阅读:207来源:国知局
专利名称:一种在计算机存储中识别重复数据的方法
技术领域
本发明涉及一种计算机数据识别方法,尤其是涉及一种在计算机数据存储、归档及备份中 识别重复数据的方法。
背景技术
目前,随着我国信息化程度的提高,越来越多的企事业单位和组织利用建立本单位计算机 局域网络来使其工作人员更好地共享信息与协同工作,然而,利用网络办公环境常常使内容 相同的一份电子数据或以相同或不同的文件名或以相同或不同的文件形式(如邮件、工作文 档等)在多台计算机中保存。我们知道, 一个局域网内的所有客户端的数据通常会定期地在 服务器中集中归档、存储或者进行备份。这样在归档、存储或者备份时,会产生大量完全重 复的数据。为了解决计算机重复数据的识别问题,现有技术通常将待处理数据的内容分割为很多长度 固定的子数据块,并为每一子数据块生成一个相应的标识符,然后保存数据块内容的同时保 存每一块数据的标识符,再通过将数据块的标识符在服务器中搜索标识符数据库,判断要存 储或传输的子数据块是否已存在,如果存在,则判断其为重复的数据;如果不存在,则判断 其为不重复的数据。然而,上述技术的不足之处在于,由于不同类型的文件的储存结构是完全不同的,例如文 本文件的存储结构是以原内容方式保存,而字处理器软件生成的文件则以对象的半结构化方 式保存,数据库系统生成的数据库文件则以块状的结构化方式保存,如果一律采用相同长度 分割待处理数据,而不考虑不同类型数据的存储结构的差异,则在判断分割后的子数据块是 否为重复数据时常常会出现识别率不高的问题。发明内容为了提高计算机存储中重复数据的识别率,本发明提供了一种根据待处理数据的类型将 其分割为长度相等或不相等子数据块的方法,并通过以下技术方案实现判断待处理数据的类型;根据判断出来的不同数据类型调用不同的数据分割器(即本发 明提供的一组程序模块,其功能是分析待处理数据的存储结构,并根据特定的存储结构将该 类型的待处理数据生成与该数据的存储结构相匹配的子数据块)将待处理数据分割为若干长 度相同或不等的子数据块;为每一子数据块生成一个相应的标识符;在存储器中查找是否存 在相同的标识符;存在相同标识符,则为重复数据;不存在相同标符,则不为重复数据。本发明的具体步骤是将待处理的计算机数据分为文件数据和应用系统数据两种类型;当待处理数据为文件数据类型时,根据文件的扩展名从配置文件中査找是否存在与其对 应的数据分割器,若不存在该类型的数据分割器,则使用通用数据分割器(是一种无对应类 型的数据分割器,其功能是将待处理数据分割成长度相等的若干子数据块)将待处理数据分 割为大小相等且一定的子数据块;若存在相应类型的数据分割器,则获得该数据分割器,并
由该数据分割器将待处理的文件数据分割为与该文件数据的存储结构相匹配的子数据块;当待处理数据为应用系统数据类型时,直接获得该应用系统的数据类型,并从配置文件 中査找是否存在与其对应的数据分割器,若不存在该类型的数据分割器,则使用通用数据分 割器将待处理数据分割为大小相等且一定的子数据块;若存在相应类型的数据分割器,则获 得该数据分割器,并由该数据分割器将待处理数据分割为与该应用系统数据的存储结构相匹 配的子数据块;如果存在网络数据传输的情况,可在数据传输前将待处理数据分割为若干子数据块,并 将这些子数据块逐个传输到接收端;或者将待处理数据传输到接收端后,再根据传输的待处 理数据类型在接收端査找是否存在相应的数据分割器,并将待处理数据分割成若干子数据块。与现有技术相比,本发明能有效地提高计算机中重复数据的识别率,尤其能提高对结构 化重复数据的识别率。


图1为某待处理数据的存储结构及其对应的分割的方式图2为获得文件类型的数据分割器的流程3为获是应用系统类型的数据分割器的流程4为在网络传输前识别重复数据的流程5为在网络传输后识别重复数据的流程图具体实施方式
下面结合附图与具体实施方式
对本发明作进一步详细描述如图1所示,如果待处理数据釆用结构化的存储方式保存,且假设其文件头长度为16KB, 其它数据块(块1、块2、块3、块4…块n)长度固定为8KB,则本发明提供的与该待处理 数据对应的数据分割器分析出该数据的存储结构为文件头16KB,其余数据块8KB。数据 分割器即将待处理数据的第一块子数据块分割为16KB,其余的字数据块则固定分割为8KB。 在将待处理数据块分割为子数据块时,数据分割器并不重新在内存中创建新的子数据块,而 是在待处理数据中采用位置参数0, 1, 2, 3, 4, 5...n来表示任一子数据块的开始位置与结 束位置,上层调用者通过位置参数在原数据块中定位到子数据块。如图2所示,待处理数据为文件数据类型时,首先获得其文件名,然后根据文件名的扩 展名类型从配置文件splitter.dat中查找是否存在相应类型的数据分割器,若不存在相应类型 的数据分割器,则使用通用数据分割器替代。如图3所示,待处理数据为应用系统数据类型时,首先获得应用系统的类型,然后根据 该类型从配置文件splitter.dat中查找是否存在相应的数据分割器,若不存在相应的数据分割 器,则使用通用数据分割器替代。图4和图5表示在存在网络数据传输的存储、归档或备份时,可以在待处理数据传输前 或待处理数据传输后将待处理数据根据其数据类型分割为子数据块。图4所示的方法是对待处理数据在传输前进行数据分块,其具体步骤是数据处理系统首先判断其是否为文件数据,如果是文件数据,则根据图2所示方法获得
数据分割器,并将文件的内容从硬盘中装载到内存中;如果是应用系统数据,则根据图3所 示方法获得数据分割器;将待处理数据传入数据分割器并由数据分割器将待处理数据根分割为若干与其存储结构 相匹配的子数据块,分割算法由获得的数据分割器决定,可以是将待处理数据分割成长度相 等的子数据块,也可以是将待处理数据分割成长度不相等的子数据块;将每一子数据块逐一按如下方式处理使用散列算法为子数据块生成一个标识符,散列 算法可为MD5或SHA1、 SHA2等,该标识符与子数据块是唯一对应关系,再将该标识符发 送到接收存储的目标计算机;目标计算机收到标识符后,再根据标识符在存储器上査找是否已经存在该标识符;如果不存在相同标识符,则在传输端将子数据块发送到目标计算机;目标计算机接收子数据块,将其保存在存储器上,同时保存其位置及标识符以便再次查找;'如果存在相同标识符,则表明子数据块已经在存储器上保存,则在目标计算机上仅保存 该标识符对应的子数据块在存储器的位置,以避免相同内容的子数据块的再次传输以及存储。 图5所示的方法是对待处理数据在传输后进行数据分块,其具体步骤是 对于待处理数据,首先判断其是否为文件数据,如果是文件数据,则根据图2所示方法 获得数据块分割器,并将文件的内容从硬盘中装载到内存中;如果是应用系统数据,则根据 图3所示方法获得数据块分割器;将待处理数据及相应的数据分割器类型发送到用于接收存储的目标计算机; 目标计算机接收到待处理数据及其对应的数据分割器类型后,首先根据数据分割器的类 型创建数据分割器,再将接收到的待处理数据传入数据分割器并将其分割为若干与该数据的 存储结构匹配的子数据块,分割算法由获得的待处理数据的数据分割器决定。可以将待处理 数据分割成长度相等子数据块,也可以将待处理数据块分割长度不相等的子数据块。'将每一子数据块逐一按如下方式处理使用散列算法为子数据块生成一个标识符,散列 算法可为MD5或SHA1、 SHA2等,该标识符与子数据块是唯一对应关系,然后根据该标识符在目标计算机的存储器上査找是否已经存在该标识符;不存在相同标识符,则将子数据块保存在存储器上,同时保存其位置及标识符,以便下次査找;如果存在相同标识符,则表明该子数据块已经在目标计算机的存储器上保存,仅获得该 标识符对应的子数据块在存储器的位置并保存,以避免了相同内容的子数据块再次存储。
权利要求
1、一种在计算机存储中识别重复数据的方法,其特征为以下步骤判断待处理数据的类型;根据判断出来的不同数据类型调用不同的数据分割器将待处理数据分割为若干子数据块;为每一子数据块生成一个相应的标识符;在存储器中查找是否存在相同的标识符;存在相同标识符,则为重复数据;不存在相同标符,则不为重复数据。
2、 根据权利要求l所述的一种在计算机存储中识别重复数据的方法,其特征是将待处理的计 算机数据分为文件数据和应用系统数据两种类型;
3、 根据权利要求2所述的一种在计算机存储中识别重复数据的方法,当待处理数据为文件数 据类型时,根据文件的扩展名获得对应的数据分割器,若不存在该类型的数据分割器,则使 用通用类型的数据分割器;若存在相应类型的数据分割器,则根据该数据分割器将待处理的 文件数据分割为若干子数据块;当待处理数据为应用系统数据类型时,获得该应用系统的数据类型,并根据数据类型获得对 应的数据分割器,若不存在该类型的数据分割器,则使用通用类型的数据分割器;若存在相 应类型的数据分割器,则根据该数据分割器将待处理数据分割为若干子数据块;
4、 根据权利要求l所述的一种在计算机存储中识别重复数据的方法,其特征是根据待处理数 据的类型将一块数据块分割为长度相等且一定的若干子数据块或者长度不等的若干子数据 块;
5、 根据权利要求4所述的一种在计算机存储中识别重复数据的方法,其特征是若根据待处理 数据的类型将数据块分割为长度相等且一定的若干子数据块,则这些子数据块的长度由待处 理数据类型的数据格式或存放该数据类型的文件格式决定;若根据待处理数据的类型将其分 割为长度不等的若干子数据块,则这些子数据块的长度由待处理数据类型的数据格式或存放 该数据类型的文件格式决定。
6、 根据权利要求1所述的一种在计算机存储中识别重复数据的方法,其特征是如果存在网 络数据传输的情况,则在数据传输前将待处理数据分割为若干子数据块,并将这些子数据块 逐个传输到接收端;或者将待处理数据传输到接收端后,再根据传输的待处理数据类型在接 收端获得相应的数据分割器,并根据获得的数据分割器将待处理数据分割成若干子数据块。
全文摘要
本发明公开了一种在计算机数据存储中根据待处理数据的类型来识别是否存在重复数据的方法,该方法旨在解决计算机存储中对重复数据的识别问题,其特征是利用待处理数据的类型将其分割为长度不等的子数据块并对每一子数据块生成一个特定标识符来识别是否存在重复数据。本发明通常在计算机数据归档、存储及备份中用来识别完全重复的数据并仅保存其中一份而忽略其余,以达到提高计算机存储空间的有效利用率。
文档编号G06F17/30GK101158954SQ20071004790
公开日2008年4月9日 申请日期2007年11月7日 优先权日2007年11月7日
发明者贺鸿富 申请人:上海爱数软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1