用于内容感知的数据分区和数据去重复的方法和设备的制作方法

文档序号:6596222阅读:164来源:国知局
专利名称:用于内容感知的数据分区和数据去重复的方法和设备的制作方法
用于内容感知的数据分区和数据去重复的方法和设备对相关申请的交叉引用本申请要求2008年12月18日提出的美国临时申请No. 61/138,827的优先权,此处引用了该申请的全部内容作为参考。
背景技术
现代计算机系统保存了大量增长迅速的数据,事实上,增长速度如此之快,以至于在很多情况下增加了超过存储系统的容量的威胁。对于一些公司,数据增长会高达30-40 % 每年。这种增长不仅需要对更新、更大的存储系统的持续投资,还要求对管理这些系统的成本的相应的增大。迫切需要降低公司内的存储量,因为存储会显著降低一个公司的资本和营运费用。存储在大多数大容量存储系统中的数据的一个特征是有大量的重复的数据。示例包括重复的文件,稍微不同的文件(例如,文档的多个草稿),存储在多个文档中的相同图像,应用于演示文稿的相同模板或信纸等等。尽管有一些系统可以检测相同的文件并只将它们存储一次,但是,典型的系统仍要求存储大量的重复的数据。例如,在实践中,一个公司的每个文档中都被嵌入了公司徽标,但是,当今的存储技术不能识别出该徽标的相同数据在每个文档中重复,并不能为此节省存储器。越来越多地强调子文件数据去重复以检测子文件级别的重复数据,以减少主存储器的存储和网络占用空间以及诸如备份和存档之类的辅助存储器的使用。近年来,设计了能够在子文件级别检测重复数据的各种系统。基本上,所有的去重复系统都是用被分析以便去重复的文件或块存储单元创建一个或多个“组块”,然后,使用一个或多个比较方法来检测是否产生了重复组块。在不存在有关待评估以便去重复的数字数据单元的先辈信息的情况下,当前的分区或组块化数据的方法在发现共用的子对象方面常常不起作用。例如,如果已察觉到文件 B是从文件A导出的,则可以在两个文件之间进行增量比较以发现共用的子对象或使用“粘着位”方法以对数据进行分区。然而,在不存在任何先辈知识的情况下,发现共用的子对象要求极端的计算复杂性,特别是当应用于当今的带有数百万个文件跨成千上万的计算机系统散布的高度分布式计算机系统而先辈信息又稀少时。

发明内容
本公开提供取得对于数字数据(例如,文件、块、BL0B( S卩,二进制大对象),或流数据)的内容感知和基于对象的组块化以增大识别重复的组块的概率的方法和系统。系统和方法可以用于各种信息存储情况,包括下列情况1)数字数据是由一个或多个逻辑对象构成的;2)数字数据内的逻辑对象包含当对象的相对位置改变时变化的位置数据(例如, 取决于位置的数据),导致对象的不同的字节模式;3)数字数据内的逻辑对象包含每当保存文件时变化的元数据(例如,取决于实例
8的数据);这样的元数据的示例有作者名称、修改的日期、修订号等等;4)在对原始数据应用变换(例如,压缩/加密)之后,数字数据中的逻辑对象被存储;5)数字数据中的逻辑对象与基于特定文件、块或流的存储实例或类型所特定的前面的页眉和/或所附的页脚一起存储;6)数字数据中的同一个逻辑对象跨不同的文件或块存储单元或流共享,其中,文件/块/流是相同或不同类型;7)逻辑对象被分解为多个片段,而将它存储在文件/块/BLOB存储器中或在流中传输;和/或8)复合文件/块/BLOB/流中的逻辑对象是文件对象;例如,.PST和.ZIP文件中被嵌入了多个文件对象。当将数字数据分区为组块以便识别重复的组块时,位置数据和元数据的存在导致为相同基础逻辑对象的取决于对象被存储的存储单元的类型或实例的不同字节模式的存储。取决于逻辑对象在存储单元中的位置,以及被分区的数字数据的格式所特有的各种变换,字节模式也可以不同。结果,基于对各种基于文件的或基于块的存储单元或流的字节模式的分析而组块化的传统方法只能发现不同的存储单元/流之间的低的共同性,尽管它们包含相同的基础逻辑对象。术语“组块”和“逻辑对象”是相关的——组块一般是多个文件可以共用具有的数据序列。组块可以基于在数字数据单元中发现的逻辑对象或逻辑对象的某些部分。这里所描述的方法在组块化数字数据以便识别重复的组块时消除了位置数据、取决于实例的数据、特定格式的数据,以及变换(例如,压缩/加密)的影响。这些方法导致创建跨相同类型或不同类型的相同文件甚至不同文件共用的组块,比传统方法增大了识别重复的组块的概率。此方法可以被用来降低主存储器的占用空间或诸如备份或存档之类的辅助存储器使用,同时降低要通过网络传输的数据量。这里所描述的系统和方法提供了用于对数字数据序列(例如,文件)分区的完全自动化的确定性过程,以便在多个相关的和不相关的计算机系统上能够识别共用的对象或组块,无需这些计算机之间的直接通信,以在发现那些共用的对象的操作中搜索、比较,传递或与其他处理元件协调。这些系统和方法的优点是,它们所使用的组块化过程不要求执行通信或比较(与常规的增量因子化系统不同)。此方法在分布式环境中特别有效,与常规的增量因子化系统要求比较和通信以将一个序列与另一个序列进行比较不同的是,本发明的系统和方法可以只使用正在被处理的序列单独地执行。在一个实施例中,应用下列步骤中的一个或多个,以从给定数字数据片段创建需要被去重复的组块(无论是基于文件、块、BLOB还是流)1.通过应用关于存储或传输数字数据的各种格式的知识,将给定数字数据分解或 “组块化”为“整个”逻辑对象。例如,文档中的图像将是以所述文档特定的格式存储的“整个,,逻辑对象。文件格式包括诸如.ppt、. doc、. xls、. pptx、. docx、. xlsx、. pdf、. xml、. cpp、. one、.mdb,以及.a格式之类的示例。2.处理“被分解的”对象如果逻辑对象在物理上不在相邻的存储器/流块上,则
9组合该逻辑对象。有时,在存储逻辑对象时,它可以被分解为可以跨多个存储块散布的许多小子对象。在此情况下,在识别所有这样的子对象并按正确的顺序组合它们之后,形成逻辑对象。3.删除应用于逻辑对象的任何特定格式的变换。例如,如果逻辑对象在存储单元内以压缩格式存储,那么,在作为供去重复的组块使用该逻辑对象之前,首先将它取消压缩。类似地,如果逻辑对象是作为加密存储的,那么,在作为供去重复的组块使用该逻辑对象之前,首先将它解密。4.删除附加到逻辑对象的任何特定格式的页眉/页脚。大多数数字数据格式要么用页眉放在逻辑对象之前,要么作为其的一部分或者在将逻辑对象插入到所述数字数据中之后附加页脚。5.从逻辑块删除任何位置特定的数据和元数据。许多数字数据格式在逻辑数据内或周围存储位置数据,例如,PowerPoint文档中的幻灯片编号。6.如果对象碰巧是文件对象,那么,首先组合文件对象,然后,使用上面步骤,提取逻辑对象。这使得可以发现相同对象,例如,嵌入在诸如.PST/. ZIP之类的复合文件格式中的文件对象内的图像。在上面的一个或多个步骤之后,所保留的是独立于特定格式的变换、嵌入的位置、 周围的元数据,或对象被分解为多个子对象供存储目的的效果的原始形式的逻辑对象。对使用上文所描述的方法获取的其原始形式的逻辑对象进行操作允许跨甚至不相关的文件发现数据的重复组块。当识别组块时只应用一个或多个步骤也是可能的。一些对象可以使用不同的步骤,所使用的特定步骤可以取决于文件类型以及对象类型。还公开了用于创建诸如块映射之类的映射的系统和方法,块映射包括可以被用来重新构建原始数字数据的对象/组块的列表。另外,系统和方法还可以保存已经从组块删除或围绕组块的数据供以后使用。此数据包括有关构成原始文件的每一个对象的信息,包括在组块化过程中应用于文件中的原对象的各种方法,此数据还包括诸如页面编号之类的非组块数据。该数据可以被用来重新应用/还原各种变换以及在分区过程中从构成组块删除的数据或围绕构成组块的数据,并使用组块和非组块数据的组合(例如,取决于位置的、 取决于实例的,和/或从组块删除的并与它们分开存储的页眉/页脚数据),重构原始文件。一旦使用上面的过程识别了对象,就可以对如此创建的对象应用用于判断此逻辑对象是否已经存在的合适的方法。这样的方法的两个示例是对新识别的逻辑对象的散列计算,并将它与现有的散列索引相比较或与现有对象的实际逐字节比较。通过阅读下面的详细描述、附图,以及权利要求书,其他特征以及优点将变得显而易见。


图1示出了存储在不同的偏移处的对象的实例。图2示出了在各种相应的变换之后存储的对象的实例。图3示出了存储的对象的实例并在实例内嵌入了不同的位置数据。图4示出了具有和没有页眉或页脚地存储的对象的实例。图5示出了存储为多个子对象的对象的实例,多个子对象在三个文件的每一个文
10件中以子对象的不同的排列散布。图6示出了一次存储在对象储存库中的一个对象,其实例最初存储在不同的偏移处。图7示出了一次连续地存储在对象储存库中的一个对象,其实例最初存储为多个子对象,多个子对象在三个文件中的每一个文件中以不同的排列散布。图8示出了一次存储在对象储存库中的一个对象,其实例最初是在各种相应的变换之后存储的。图9示出了一个对象,该对象一次存储在对象储存库中,且其中不同数据被从对象删除,并代替为与对象分开地存储在对象储存库中,该对象的实例最初被存储为分别包含嵌入其内的不同的元数据或位置数据。图10示出了对象的实例,该对象一次存储在对象储存库中,且其中页眉/页脚被从对象删除,并代替为与页眉/页脚分开存储,该对象的实例最初带有页眉/页脚存储。图11示出了一个对象的实例,该对象没有变换地一次存储在对象储存库中,该对象的实例最初存储在不同的文件中,带有不同的存储排列、位置数据、元数据、变换,单独的页眉/页脚,和/或存储在不同的偏移处。图12示出了一个对象,其实例最初被转换并存储在复合文件内的两个非连续文件对象中,重新组合为对象的相邻的实例,其中每个都删除了变换。图13示出了文件到文件-校验和映射和文件-校验和到块-校验和映射。
具体实施例方式对数字数据的内容感知的分区不同的数字数据格式(例如,基于文件的、基于块的、基于BLOB的,或基于的流) 具有不同的格式,这些格式将不同的属性附加到存储在它们内的逻辑对象并对逻辑对象应用变换。大部分时间,这些属性和变换改变存储在所述数字数据内的逻辑对象内和周围的字节模式。这导致这样的情况同一个逻辑对象可以与不同的字节模式一起存储在相同或不同的数字数据单元内的两个不同的位置。这种情况导致传统的,数字数据格式不可知的去重复的方法的问题,即只使用数据的物理布局将数据组块化为各种块。这些方法不能判断基础对象是共用的,尽管只是由于变换或逻辑对象周围的伴随的位置数据或页眉/页脚,导致字节模式不同。数字数据的一个单元内的逻辑对象通常具有下列属性或向它们应用的变换中的一个或多个,其中的每一个都妨碍发现共同性。图1示出了存储在不同的数据单元内的三个不同的起始偏移处的同一个逻辑对象。例如,同一个图像可能存储在三个不同的PowerPoint文件中,但是,存储在三个不同的幻灯片中,结果,存储在三个不同的起始偏移处。图2示出了以三种不同的数字数据格式存储的同一个逻辑对象,其中,在存储之前,对对象的每一个实例应用了不同的变换。例如,对象1在被存储在文件1内之前被以第一方式加密,在被存储在文件2内之前被压缩,在被存储在文件3内之前被以第二方式加密。在此示例中,由于对于变换的输入的变化例如,对压缩/加密算法,种子值的更改,等等,变换后的对象的字节模式甚至对于相同基础原始数据也会不同。
11
图3示出了由于对象存储在三个不同文件内而包含不同位置特定的数据的同一个逻辑对象。例如,在PowerPoint文件中,一个幻灯片的逻辑对象在对象内包含了幻灯片编号。这将对于存储的幻灯片导致不同的字节模式,如果它被移到不同的位置,无论是在同一个PowerPoint文件内还是在不同的PowerPoint文件内,尽管没有对逻辑幻灯片对象作出其他更改。 图4示出了同一逻辑对象的实例,在文件1中,前面带有页眉,在文件3中,后面跟着页脚。对于不同的数字数据单元,此页眉或页脚会不同,并常常包含实例特定的、类型特定的、或位置特定的信息。尽管两个基础逻辑对象可能是相同的,但是,当与伴随的页眉或页脚相结合查看时,字节模式看起来好像是不同的。图5示出了被分为九个较小的子对象(标记为1-9)的同一个逻辑对象,这些子对象散布在多个存储块/流中,以便存储该对象。使用下列方法来增大识别以上面的方式存储的逻辑对象内存在的重复组块的概率。可以单独使用每一种方法,或与其他方法相结合地使用。1.通过应用各种数字数据格式规范的知识,将数字数据分区为逻辑对象传统方法以数字数据-格式不可知的方式将被分析以便去重复的数字数据分解为组块。这种方法常常导致次最佳的组块化,因为数字数据内的逻辑对象按随机间隔切割, 导致它们被分布到多个组块中。一个更好的方法是理解数字数据格式,在逻辑对象边界处创建组块,在该过程中,创建包含“整个”逻辑对象的组块,代替一个或多个逻辑对象的随机组合。图6示出了一次存储在对象储存库中的一个对象,其实例最初存储在不同的偏移处。2.通过将被分解的对象组合成一个逻辑对象来处理被分解的对象逻辑对象常常可能不在文件内的连续的位置。结果,需要首先将对象组合为一个单一的逻辑对象,而同时保持所有文件偏移的列表,此被分解的对象的大小。这样,如果同一个逻辑对象以不同的方式被分解为两个或更多文件,我们仍可以发现它们之间的共同性。图7示出了一次连续地存储在对象储存库中的一个对象,其实例最初是作为文件1-3 中以不同的排列散布的多个子对象存储的。3.取消应用对逻辑对象的任何变换应用于数字数据内的逻辑对象的常见变换的一些示例是压缩和加密。在应用这些变换之后,尽管基础对象是相同的,但是,结果字节模式会不同。所提出的方法在创建组块之前“取消应用”应用于逻辑对象的任何变换,以便识别重复的组块。这就可以将数字数据分解为逻辑对象,这些逻辑对象跨不同文件或相同类型和不同类型的块存储单元、BL0B,和/或数据流是共用的。图8示出了在如在文件1内存储的那样以第一方式加密,如在文件2内存储那样被压缩,并且如在文件3内存储那样预先以第二方式加密之后作为单个实例存储在对象储存库中的对象1。将允许发现共同性的一些示例有1.同一个图像对象存储在相同类型的使用不同的压缩算法的两个不同的文件中。2.同一个图像对象存储在两个不同类型的在存储同一个图像对象之前使用不同加密算法的两个不同的文件中。3.同一个图像对象存储在三种不同类型的三个不同的文件中,其中,第一文件格式在存储图像之前压缩该图像,第二文件在存储之前加密该图像,而第三文件以其原始格式存储图像对象。在上面的所有示例中,并如图8所示,所提出的新方法将把文件组块化为将跨不同的文件共用的逻辑图像对象。4.从逻辑对象删除取决于位置的数据或元数据妨碍发现共同性的另一个问题是,逻辑对象包含位置数据,每当对象的相对位置改变时,该位置数据都会改变逻辑对象的字节模式,无论是在同一个数字数据单元内还是在不同的数字数据单元内。例如,如果一个幻灯片在PowerPoint文档内移动,那么,逻辑幻灯片对象的字节模式也会改变,因为幻灯片编号是幻灯片对象的一部分。这再一次妨碍了发现共同性的过程,尽管基础幻灯片对象是相同的。取决于位置的数据的其他示例包括页编号、段号,以及Microsoft Excel单元格编号。另一个示例是,一些对象可能包含取决于实例的元数据,如作者名称、修订号、修改的日期、总共编辑时间、页数、字符数、行数、段落数、 字数等等。每当保存文件时,这些元数据可能会改变。从对象删除这些元数据可以取得较高级别的去重复。这里所描述的系统和方法可以分析逻辑对象,以查找任何取决于位置的数据或元数据,并从正在被创建的组块删除该数据,以便识别重复的块。图9示出了一个对象,该对象一次存储在对象储存库中,其中不同数据被从对象删除,代替为与对象分开地存储在对象储存库中,该对象的实例最初被存储为分别包含嵌入其内的不同的元数据或位置数据。 将三个实例作为三个实例共同拥有的单个组块实例存储在对象储存库中,连同每一个相应的实例的实例特定的元数据或位置数据,以及关联一起存储,该关联将组块和实例特定的元数据或位置数据链接到它们最初被存储在其中的相应的文件。逻辑对象/组块除被存储之外,还可以被传输。例如,数字数据可以被作为流来接收,对流执行内容感知的分区,此后,可以作为去重复的数据流来传输所提取的组块和另外的数据,其中包含组块、另外的数据以及链接它们的关联。下面将更详细地讨论此存储/传输以及关联过程。5.在创建组块之前排除对象页眉/页脚另一个问题是,数字数据格式可能用页眉放在逻辑对象之前或用页脚附加到它后面。对于不同的数字数据实例或类型,这样的页眉或页脚一般不同,并可能包含取决于位置的信息。尽管两个基础逻辑对象可能是相同的,但是,当与伴随的页眉或页脚相结合查看时,字节模式看起来好像是不同的,这是对于发现共同性以便去重复的另一个障碍。所提出的方法分析逻辑对象,以查找任何页眉或页脚数据,并从正在被创建的组块删除它,以便识别重复的块。图10示出了一个逻辑对象的三个实例第一实例最初存储在文件1中,带有页眉,第二实例存储在文件2中,没有页眉或页脚,第三实例存储在文件3 中,带有页脚。将三个实例作为三个实例共同拥有(没有页眉/页脚)的单个组块实例存储在对象储存库中。最初分别包含在来自文件1和2的对象实例中的页眉和页脚分开地存储在储存库中,连同关联一起存储,该关联与将组块和页眉/页脚数据链接到它们最初被存储在其中的相应的文件。下面将更详细地讨论此存储以及关联过程。多个文件可以具有上文所描述的变换中的一个或多个。图11示出了甚至对于不同的变换,系统将跨不同的文件发现共用的对象,并可以只将对象的单个实例存储在对象储存库中。6.处理包含文件对象的诸如.PST/. ZIP文件之类的复合数据单元
如名称所示的,复合文件由本身是文件的一个或多个子对象构成,另外,还可能包含其他不是文件的子对象。复合文件格式的一些示例包括.zip(压缩文件)、. pst (Microsoft Outlook JC 牛)> .cab> . a> . edb (Microsoft Exchange Database JC 件)、Microsoft SQL Server 数据库、Lotus Notes 邮箱、SharePoint 储存库,以及 EMC Documentum格式。除使用其他方法之外,首先需要使用对这些复合文件的格式的理解,来组合这些文件对象。在组合过程中,也可以应用诸如解密或取消压缩,删除页眉/页脚,组合散布的文件子对象之类的变换。在组合文件对象之后,应用以上一些或全部用于发现文件对象内的其他组块/对象的方法。图12示出了对象A,其两个实例最初被转换并存储在复合文件内的两个非连续文件对象(FileX和FileY)中。该图形还示出了在文件被重新组合为连续文件并删除变换之后对象A如何被标识为两个文件中的重复的组块。某些复合文件格式可以是分层的和/或包含本身是复合对象(其中对象包含更多对象)的对象。在这些情况下,可以递归地应用上面的方法以识别和组合复合分层结构的较低级别的逻辑对象。作为逻辑对象存储数字数据以便重构原始数据在识别数字数据集合中的共用的对象/组块之后,数字数据被以那些对象/组块为单位来存储,以便缩小存储数据所需的存储器和网络占用空间。每一个共用的对象都被存储在去重复对象储存库中,带有相关联的标识符。如下面所描述的,使用标识符取代共用的对象,来存储原始数字数据的表示。图13示出了使用上面的识别四个文件内的共用的逻辑对象/组块的方法来存储四个文件的结果。文件1-文件4在如图13所示出的被存储之前,最初具有彼此不同的名称,但是,共享多个共用的逻辑对象。具体而言,文件1和2两者都包含三个相同的对象,其中一个是文件。文件3和4是文件1和2中所包含的文件所附加的单独的实例。另外,文件3和4还包含了共用的逻辑块,该共用的逻辑块还包含在文件1和2中。FileCheckSum 对于每一个文件,可以为整个文件计算校验和(或散列)。散列函数可包括诸如 SHA-0、SHA-1,和/或SHA-2和/或MD5算法之类的安全散列算法(SHA)。当作为逻辑对象存储数字数据(例如,文件)时,每一个原始文件都被表示成去重复的文件对象,并存储在目录中。去重复的文件对象包含原始文件的名称(和/或数字数据的其他标识符),以及文件校验和,并可能包含诸如上次修改时间之类的其他属性。校验和提供FileCheckSum的标识(例如,指针或引用)。FileCheckSum表示原始文件,但是,以最初包含在文件中的共用的逻辑对象存储。在某些情况下,可以将FileCheckSum用作表示用于标识FileCheckSum 的校验和/散列值的方式。如下面所描述的,FileCheckSum具有BlockMap和XBlock。FiIeCheckSum (以及下面所描述的BlockCheckSum对象)存储在与包含去重复的文件对象的目录相关联的去重复储存库中。目录可以是文件对象的备份目录。目录还可以用于非备份目的,如主文件系统的一部分(例如,对于活动,正在进行的使用)。BlockMap 下列信息存储在BlockMap中1.包含版本,长度等等的块映射标头。2. XBlock校验和(下面将描述XBlock)
14
3.此文件中的块的列表,为每一个块存储a. BlockCheckSumb. XBlock中的已使用的字节数量4.此复合文件内的文件的列表,为每一个文件存储a. FileCheckSumb. XBlock中的已使用的字节数量BlockCheckSum BlockMap具有标识包括至少如最初存储的数字数据的一部分的逻辑对象/组块的BlockCheckSum对象的列表。BlockCheckSum与逻辑对象/组块相关联,其中,逻辑对象中的信息在对象储存库中只存储一次。如此,BlockCheckSum提供可以用来恢复文件的“原材料”的一部分。对于每一个BlockCheckSum,为相关联的逻辑对象计算BlockCheckSum以类似于FileCheckSum标识符的方式表示的校验和。通过此校验和来标识BlockCheckSum。 图 13 示出了三个 BlockCheckSum, BCS1-BCS3,其中,FCSl 的 BlockMap 指向 BCSl 禾Π BCS2, 而 FCS2 的 BlockMap 指向 BCS2 和 BCS3。FCSl 的 BlockMap 也指向 FCS2。XBlock XBlock包含有关构成原始文件的每一个对象的信息,包括在组块化过程中应用于文件中的原对象的各种方法,以及如页编号之类的非组块数据。可以使用XBlock来重新应用在分区过程中从构成组块删除的各种变换和已删除/已更换的数据,并使用组块和非组块数据的组合(例如,取决于位置的、取决于实例的,和/或从组块删除的并与它们分开存储的页眉/页脚数据),重构原始文件。XBlock包含下列有关相关联的BlockMap中的每一个逻辑对象的信息,其中,为每一个对象存储的特定信息将取决于其类型以及在组块化过程中应用的方法1.变换的类型,例如,如果对象最初以压缩/加密的方式被存储在文件中,所使用的压缩或加密算法。在此情况下,在^(Block内至少使用下列字段a. XBlock信息的类型b.压缩/加密算法类型2.与对象分离的位置/元数据。在此情况下,在XBlock内至少使用下列字段a. XBlock信息的类型b.此位置/元数据需要被插入的对象中的偏移c.位置/元数据的长度d.位置/元数据3.对象的页眉/页脚。在此情况下,在XBlock内至少使用下列字段a. XBlock信息的类型b.这是页眉或页脚吗c.页眉或页脚的长度d.页眉/页脚数据此信息可以被用来将有关对象的页眉/页脚信息与对象分开。4.分解的对象。在此情况下,在XBlock内至少使用下列字段a. XBlock信息的类型
15
b.对象被分解为的片段数c.对于对象中的每一个分解片段,存储下列信息1.文件中的存在此片段的偏移2.片段在此偏移处的长度此信息可以被用来重新创建数字数据的还原版本中的逻辑对象,即使它最初没有连续地放在文件内。许多文件格式使一个逻辑对象保持在文件内的多个非连续的位置。5.复合文件内的子文件对象。在此情况下,在XBlock内至少使用下列字段a. XBlock信息的类型b.在复合文件内,此子文件被分解的片段数c.对于每一个片段,至少存储下列信息1.复合文件中的偏移2.此片段在上面偏移处的长度要应用的变换的类型,例如,在构建子文件之后的压缩类型或加密类型。例如, 在.PST文件格式中,子文件(附件)被分解为复合文件存储并加密。这种信息可以被用来在复合文件内创建逻辑文件对象。在从复合文件构建每一个文件对象之后,再一次在文件对象内查找较小的逻辑对象。这可使系统甚至在对象位于复合文件中的子文件内部的情况下也能发现共同性。将去重复的文件映射到FileCheckSum,并将FileCheckSum映射到 BlockCheckSum。如上所述,存储在目录中的去重复的文件对象包含相应的FileCheckSum的标识符,如在图13中在去重复的文件对象文件1-文件4中被示为“FCS1”和“FCS2”。每一个 FileCheckSum都具有引用计数,该引用计数等于引用特定FileCheckSum的去重复的文件对象(可能还有其他FileCheckSum)的数量。例如,在图13中,FileCheckSum 1被两个文件引用,引用计数为2,FileCheckSum 2被引用三次,两次在文件中,一次在FileCheckSum 1中,引用计数为3。也如上所述,每一个FileCheckSum都具有BlockMap,该BlockMap包含构成原始数字文件的BlockCheckSum(具体而言,BlockCheckSum的标识符)的列表。类似于 FileCheckSum,每一个BlockCheckSum都具有引用计数,该引用计数等于它被BlockMap引用的次数。在引用计数为零,例如,没有文件(或其他FileCheckSum)引用该FileCheckSum 之前,不删除该FileCheckSum。类似地,在引用计数为零,例如,没有FileCheckSum引用该 BlockCheckSum 之前,不删除该 BlockCheckSum。上文所描述的系统和方法可以在创建新文档时使用,以使得新文档以缩小的重复被存储。它们还可以和存储器中的现有文件及其他数据一起使用,以便去重复存储的数据, 以减少被存储的数据量。已经描述了某些实施例,显而易见的是,在不偏离所附权利要求书的范围的情况下,可以作出许多修改。例如,可以使用不同类型的处理器和存储器。有许多对在存储器中维护数据的引用。存储器可以任何合适的形式的存储器,诸如数字磁盘、光盘,或半导体存储器。所描述的处理动作可以利用任何合适的硬件和/或软件逻辑,或其组合来执行,并以诸如通用处理器或应用特定的产品之类的任何合适的处理器来实现。上文所描述的许多动作可以通过处理器以软件来执行,软件可以作为指令存储在计算机可读的存储器中,当执行指令时,执行诸如组块化、散列、比较、存储数据、维护块等等之类的步骤。尽管说明书引用了删除取决于位置的数据,删除取决于实例的数据,从源逻辑对象删除一个或多个特定格式的页眉或页脚,以及从源逻辑对象删除特定格式的变换,但是, 也可以预想其他类型的数据删除。数据的格式可以与数据删除或变换的类型成一一对应的关系,或者可以有与不同的格式相关联的数据删除和变换的多个组合。例如,一种格式可包括删除某些取决于位置的数据和取决于实例的数据,而第二格式可包括删除取决于位置的数据和特定格式的变换,第三格式可包括只删除一个或多个特定格式的页眉或页脚。另外,数据分区可以只包括识别和组合最初作为一个或多个跨多个存储块散布的子对象存储在数字数据中的逻辑对象。在此情况下,组合的对象与表示原对象和/或其子对象的位置的信息一起存储。
权利要求
1.一种用于对数字数据分区和存储的计算机实现的方法,包括 确定数字数据的格式;标识所述数字数据内的源逻辑对象,其中,对所述源逻辑对象的标识至少部分地通过应用关于所述数字数据的格式的知识来完成;基于所确定的格式,执行下列操作中的一个或多个以创建结果对象从所述源逻辑对象删除取决于位置的数据,从所述源逻辑对象删除取决于实例的数据,从所述源逻辑对象删除一个或多个特定格式的页眉或页脚,以及从所述源逻辑对象删除特定格式的变换; 判断是否已经存储了所述结果对象;以及如果所述结果对象尚未被存储,则存储所述结果对象。
2.如权利要求1所述的方法,其中,所述数字数据是下列各项中的至少一项数字文件、基于块的存储、二进制大对象(BLOB),以及数据流。
3.如权利要求2所述的方法,其中,所述数字数据包括复合文件,所述源逻辑对象被存储在所述复合文件内的文件中。
4.如权利要求3所述的方法,其中,所述复合文件包括下列各项中的一个.zip、. pst、. cab、. a、Exchange Database、Microsoft SQL Server 数据库、Lotus Notes 由箱、 SharePoint Repository,以及 EMC Documentum 文件。
5.如权利要求1所述的方法,还包括基于跨多个存储块存储的所述源逻辑对象的实例,以相邻的形式组合所述源逻辑对象。
6.如权利要求1所述的方法,其中,所述特定格式的变换中的至少一项包括对所述源逻辑对象的压缩和加密中的至少一项。
7.如权利要求16所述的方法,其中,所述取决于位置的数据包括下列各项中的至少一项页编号、幻灯片编号、段号,以及MicrosoftExcel单元格编号。
8.如权利要求1所述的方法,其中,从所述源逻辑对象周围删除或从所述源逻辑对象内删除所述取决于位置的数据。
9.如权利要求1所述的方法,其中,所述取决于实例的数据包括下列各项中的至少一项作者名称、修改日期/时间、修订版、总共编辑时间、页数、字符数、行数、段落数,以及字数。
10.如权利要求1所述的方法,其中,所述分区是在不存在有关所述数字数据的先辈信息的情况下实现的。
11.如权利要求1所述的方法,其中,对于所确定的格式,执行至少两个操作。
12.如权利要求1所述的方法,还包括存储另外的数据,其中,所述另外的数据包括下列各项中的一项或多项取决于位置的数据、取决于实例的数据、特定格式的页眉或页脚,以及表示所述特定格式的变换的信息; 以及将所述另外的数据与所述结果对象相关联;以及使用所存储的结果对象和相关联的另外的数据来重新创建所述数字数据。
13.如权利要求1所述的方法,其中,判断所述结果对象是否已经被存储至少部分地基于确定与结果对象相关联的标识符以及判断所述标识符是否已经被存储。
14.如权利要求13所述的方法,其中,确定与所述结果对象相关联的标识符是基于确定所述结果对象的校验和或散列进行的。
15.如权利要求1所述的方法,还包括传输所述结果对象。
16.一种系统,包括能够存储数据的存储器;以及处理器,其被配置成 确定数字数据的格式;标识所述数字数据内的源逻辑对象,其中,对所述源逻辑对象的标识至少部分地通过应用关于所述数字数据的格式的知识来完成;基于所确定的格式,执行下列操作中的一个或多个以创建结果对象从所述源逻辑对象删除取决于位置的数据,从所述源逻辑对象删除取决于实例的数据,从所述源逻辑对象删除一个或多个特定格式的页眉或页脚,以及从所述源逻辑对象删除特定格式的变换,判断所述结果对象是否已经被存储在所述存储器中,以及如果所述结果对象尚未被存储,则将所述结果对象存储在所述存储器中。
17.如权利要求16所述的系统,其中,所述数字数据是下列各项中的至少一项数字文件、基于块的存储、二进制大对象(BLOB),以及数据流。
18.如权利要求17所述的系统,其中,所述数字数据是复合文件,所述源逻辑对象被存储在所述复合文件内的文件中。
19.如权利要求18所述的系统,其中,所述复合文件包括下列各项中的一个.zip、. pst、. cab、. a、Exchange Database> Microsoft SQL Server 数据库、Lotus Notes 由|I|f、 SharePoint Repository,以及 EMC Documentum 文件。
20.如权利要求16所述的系统,其中,还包括基于跨多个存储块存储的所述源逻辑对象的实例,以相邻的形式组合所述源逻辑对象。
21.如权利要求16所述的系统,其中,所述特定格式的变换中的至少一项包括对所述源逻辑对象的压缩和加密中的至少一项。
22.如权利要求16所述的系统,其中,所述取决于位置的数据包括下列各项中的至少一项页编号、幻灯片编号、段号,以及Microsoft Excel单元格编号。
23.如权利要求16所述的系统,其中,从所述源逻辑对象周围删除或从所述源逻辑对象内删除所述取决于位置的数据。
24.如权利要求16所述的系统,其中,所述取决于实例的数据包括下列各项中的至少一项作者名称、修改日期/时间、修订版、总共编辑时间、页数、字符数、行数、段落数,以及字数。
25.如权利要求16所述的系统,其中,所述分区是在不存在有关所述数字数据的先辈信息的情况下实现的。
26.如权利要求16所述的系统,其中,对于所确定的格式,执行操作中的至少两种操作。
27.如权利要求16所述的系统,还包括存储另外的数据,其中,所述另外的数据包括下列各项中的一项或多项取决于位置的数据、取决于实例的数据、特定格式的页眉或页脚,以及表示所述特定格式的变换的信息; 将所述另外的数据与所述结果对象相关联;以及使用所存储的结果对象和相关联的另外的数据来重新创建所述数字数据。
28.如权利要求16所述的系统,其中,判断所述结果对象是否已经被存储至少部分地基于确定与结果对象相关联的标识符以及判断所述标识符是否已经被存储。
29.如权利要求观所述的系统,其中,确定与所述结果对象相关联的标识符是基于确定所述结果对象的校验和或散列进行的。
30.如权利要求16所述的系统,其中,还包括传输所述结果对象。
31.一种用于对数字数据分区的计算机实现的方法,包括 确定数字数据的格式;标识所述数字数据内的源逻辑对象,其中,对所述源逻辑对象的标识至少部分地通过应用关于所述数字数据的格式的知识来完成; 判断是否已经存储了所述结果对象; 如果所述结果对象尚未被存储,则存储所述结果对象;存储另外的数据,其中,所述另外的数据包括下列各项中的一项或多项表示所述数字数据内的所述逻辑对象的原始位置的信息、取决于位置的信息、取决于实例的信息,特定格式的页眉或页脚,以及表示所述特定格式的变换的信息; 将所述另外的数据与所述结果对象相关联;以及使用所存储的结果对象和相关联的另外的数据来重新创建所述数字数据。
32.一种系统,包括能够存储数据的存储器;以及处理器,其被配置成 确定数字数据的格式,标识所述数字数据内的源逻辑对象,其中,对所述源逻辑对象的标识至少部分地通过应用关于所述数字数据的格式的知识来完成, 判断是否已经存储了所述结果对象, 如果所述结果对象尚未被存储,则存储所述结果对象,存储另外的数据,其中,所述另外的数据包括下列各项中的一项或多项表示所述数字数据内的所述逻辑对象的原始位置的信息、取决于位置的信息、取决于实例的信息, 将所述另外的数据与所述结果对象相关联,以及使用所存储的结果对象和相关联的另外的数据来重新创建所述数字数据。
33.一种方法,包括将数字数据分区为多个块,包括第一块,以及另外的数据,其中,所述另外的数据包括下列各项中的至少一项取决于位置的数据、取决于实例的数据、特定格式的页眉或页脚, 以及特定格式的变换,以及其中,所述多个块以及所述另外的数据的组合一起表示所述文件中的所有数据;至少部分地基于所述数字数据的内容,生成文件标识符; 将所述文件标识符与所述数字数据相关联; 至少部分地基于所述第一块的内容,生成块标识符;将块标识符与所述第一块相关联,所述块标识符至少部分地基于所述第一块的内容而生成;判断所述第一块是否已经被存储;如果所述第一块尚未被存储,则存储所述第一块;判断与所述文件标识符相关联的块映射是否已经被存储,其中,所述块映射包括分别与所述数字数据所包含的每一个块相关联的块标识符,以及如果与所述文件标识符相关联的所述块映射尚未被存储 创建所述块映射, 存储所述块映射,将所述另外的数据与所述块映射相关联,以及将所述文件标识符与所述块映射相关联。
34.如权利要求33所述的方法,其中,所述数字数据是下列各项中的至少一项数字文件、基于块的存储、二进制大对象(BLOB),以及数据流。
35.如权利要求33所述的方法,其中,生成所述文件标识符是基于确定所述数字数据的校验和或散列进行的。
36.如权利要求33所述的方法,其中,生成所述块标识符是基于确定所述第一块的校验和或散列进行的。
37.如权利要求33所述的方法,还包括维护由目录中的所述块映射所作出的对所述第一块的引用的数量的引用计数; 响应于删除存储的块映射的请求,如果所存储的块映射包含与所述第一块相关联的块标识符,更新所述第一块的引用计数;以及如果所述已更新的引用计数指示没有其他块映射包含与所述第一块相关联的块标识符,则删除所述第一块。
38.如权利要求33所述的方法,还包括维护从目录中的其他对象对所述块映射作出的引用的数量的引用计数; 响应于删除文件的请求,所述文件具有相关联的文件标识符,如果所述文件标识符与所存储的块映射相关联,更新存储的块映射的所述引用计数;以及如果所述已更新的引用计数指示没有其他文件标识符与所存储的块映射相关联,则删除所存储的块映射。
39.如权利要求;33所述的方法,还包括与所述块映射一起存储关于所述另外的数据位于所述原始文件中的什么位置的额外的信息。
40.如权利要求33所述的方法,还包括与所述块映射一起存储表示在所述分区过程中应用于所述相应的块的所述变换的额外的信息。
41.如权利要求33所述的方法,其中,所述另外的数据包括下列各项中的至少两项取决于位置的数据、取决于实例的数据、特定格式的页眉或页脚,以及特定格式的变换。
42.如权利要求33所述的方法,其中,对数字文件集合执行所述分区、关联,以及判断步骤,其中,所述结果是去重复的数字文件的集合。
43.一种系统,包括能够存储数据的存储器;以及处理器,其被配置成将数字数据分区为多个块,包括第一块,以及另外的数据,其中,所述另外的数据包括下列各项中的至少一项取决于位置的数据、取决于实例的数据、特定格式的页眉或页脚, 以及特定格式的变换,以及其中,所述多个块以及所述另外的数据的组合一起表示所述文件中的所有数据; 至少部分地基于所述数字数据的内容,生成文件标识符; 将所述文件标识符与所述数字数据相关联; 至少部分地基于所述第一块的内容,生成块标识符;将块标识符与所述第一块相关联,所述块标识符至少部分地基于所述第一块的内容而生成;判断所述第一块是否已经被存储;如果所述第一块尚未被存储,则将所述第一块存储在所述存储器中; 判断与所述文件标识符相关联的块映射是否已经被存储,其中,所述块映射包括分别与所述数字数据所包含的每一个块相关联的块标识符,以及如果与所述文件标识符相关联的所述块映射尚未被存储 创建所述块映射,将所述块映射存储在所述存储器中, 将所述另外的数据与所述块映射相关联,以及将所述文件标识符与所述块映射相关联。
44.如权利要求43所述的系统,其中,所述数字数据是下列各项中的至少一项数字文件、基于块的存储、二进制大对象(BLOB),以及数据流。
45.如权利要求43所述的系统,其中,生成所述文件标识符是基于确定所述数字数据的校验和或散列进行的。
46.如权利要求43所述的系统,其中,生成所述块标识符是基于确定所述第一块的校验和或散列进行的。
47.如权利要求43所述的系统,还包括维护由目录中的所述块映射所作出的对所述第一块的引用的数量的引用计数; 响应于删除存储的块映射的请求,如果所存储的块映射包含与所述第一块相关联的块标识符,更新所述第一块的引用计数;以及如果所述已更新的引用计数指示没有其他块映射包含与所述第一块相关联的块标识符,则删除所述第一块。
48.如权利要求43所述的系统,还包括维护从目录中的其他对象对所述块映射作出的引用的数量的引用计数; 响应于删除文件的请求,所述文件具有相关联的文件标识符,如果所述文件标识符与所存储的块映射相关联,更新存储的块映射的所述引用计数;以及如果所述已更新的引用计数指示没有其他文件标识符与所存储的块映射相关联,则删除所存储的块映射。
49.如权利要求43所述的系统,其中,还包括与所述块映射一起存储关于所述另外的数据位于所述原始文件中的什么位置的额外的信息。
50.如权利要求43所述的系统,其中,还包括与所述块映射一起存储表示在所述分区过程中应用于所述相应的块的所述变换的额外的信息。
51.如权利要求43所述的系统,其中,所述另外的数据包括下列各项中的至少两项取决于位置的数据、取决于实例的数据、特定格式的页眉或页脚,以及特定格式的变换。
52.如权利要求43所述的系统,其中,对数字文件集合执行所述分区、关联,以及判断步骤,其中,所述结果是去重复的数字文件的集合。
全文摘要
公开了用于内容感知的数据分区和数据去重复的方法和设备。系统和方法以内容感知的方式对数字数据单元进行分区,而不依赖于任何先辈信息,这使得可以发现甚至跨成千上万的计算机系统散布的跨数百万文档的不相关的数字数据单元中的重复的组块。
文档编号G06F15/16GK102301377SQ200980155547
公开日2011年12月28日 申请日期2009年12月18日 优先权日2008年12月18日
发明者P·乔德里, S·加因 申请人:科普恩股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1