CN101685467A - 用于内容定义节点分裂的方法和装置 - Google Patents
用于内容定义节点分裂的方法和装置 Download PDFInfo
- Publication number
- CN101685467A CN101685467A CN200910172826A CN200910172826A CN101685467A CN 101685467 A CN101685467 A CN 101685467A CN 200910172826 A CN200910172826 A CN 200910172826A CN 200910172826 A CN200910172826 A CN 200910172826A CN 101685467 A CN101685467 A CN 101685467A
- Authority
- CN
- China
- Prior art keywords
- node
- split point
- search
- hash
- project
- 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.)
- Pending
Links
Images
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/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (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
搜索节点的区域以发现内容定义分裂点。至少部分基于节点中项目的散列确定节点的分裂点并基于所述被确定的分裂点分裂所述节点。搜索所述搜索区域以查找第一相遇分裂点并基于所述分裂点分裂所述节点。所述分裂点基于满足于预定条件的所述节点中项目的预定的位掩码。
Description
技术领域
本发明一般涉及数据结构中的节点分裂,尤其涉及数据结构中内容定义的节点分裂。
背景技术
在传统备份系统中,必须索引和存储大量(例如太字节(terabytes))输入数据。使用诸如树结构的数据结构以存储涉及数据(例如目录、文件、数据序列、数据组块(Data chunks)等)的元数据(metadata)(例如节点、底层数据(underlying data)的索引等)。在用于大文件系统的备份系统中,这些数据结构按照有序序列排列大小一致或大小变化的文件数据的组块。就是说,该底层文件数据是具有关联文件偏移量的输入流来的字节组块的序列,元数据树排列组块的地址成有序序列。这样,持久保存底层数据的、以及同样地、辅助文件和目录相关信息的位置,以使按适当顺序的检索成为可能。
在许多应用(例如备份或归档)中,必须产生对应于同样或大部分相似内容的元数据结构。例如,可能在两次传输同样文件系统用于存储,但是内容的插入顺序可能不同(例如由于数据传输中的可变(variable)延迟)。或者,可以后来备份具有少量变化的大文件系统。存储两个对应于同样或高度类似底层数据的元数据树,具有相当数量的非同样节点的元数据结构,增加了存储成本。为获得具备相对高度同样节点的元数据结构,需要,以及再平衡数据结构的节点,因为这在时间和存储资源上惊人昂贵(To achieve metadata structures withcorrespondingly large degrees of identical nodes require and rebalancingof the nodes of the data structure,since this may be prohibitivelyexpensive in terms of time or storage resources.)。
一般而言,内容定义的数据分块系统(content-defined datachunking systems)使用标准数据结构以存储组块散列信息的序列(例如元数据)。维护元数据序列作为元数据节点的大数据结构(例如,序列、列表、树,B+树等),其导致底层存储内容的顺序。在数据归档系统中,这些数据结构必须持久存储和操作于在线“流”(streaming)环境中。为了防止过量填充这些数据结构,调用节点分裂策略以获得合理的平均节点填充,同时限制节点项目(entries)的最大数目。
例如,传统B+树可使用中点分裂(midpoint-split)节点分裂策略。若以上升插入顺序在两个时机生长数据结构并在第二时机呈现附加数据项,在该附加数据项之后的所有分裂点关于在第一时机使用的分裂点被移动一位(position)。因此,对于不同分裂点创建的节点将不包含相同的项目,在这两个数据结构中它们将不是确切的复制品。
在另一例子中,表示对同样内容的插入顺序进行改变,若单个数据项从数据结构中的原始叶节点中去除并在后来的点插入,则产生不同分区节点。若延迟插入发生在以其最终形式已产生的叶节点之后,当将新树与原始树进行比较时,则从去除点到后来插入点为止的所有节点可以不同。使用传统分裂策略的树节点的内容取决于插入顺序。
当存储多个顺序诱导(order-inducing)数据结构时,在典型的节点分裂策略中,底层数据中或插入顺序中小的改变可导致大量非复制节点。因此,需要数据结构中节点分裂的改进系统和方法。
发明内容
本发明一般提供内容定义节点分裂的方法。
搜索节点区域以发现内容定义的分裂点。至少部分基于节点中项目的散列(Hashes)(例如组块、子节点等)确定节点的分裂点,以及基于该确定的分裂点分裂该节点。搜索该搜索区域以查找唯一(例如第一个)相遇分裂点。基于那个分裂点分裂该节点。那个分裂点典型基于将节点中项目的散列的预定位掩码(Bitmask)与预定值(例如0)进行的比较。
通过参考以下详细描述和附图,本领域技术人员将明白本发明的这些和其他优点。
附图说明
图1是存储系统的图;
图2描述根据本发明实施例的文件系统;
图3是与内容定义节点分裂相比较的传统节点分裂的图,示出存储内容的细微差别;
图4是与内容定义节点分裂相比较的传统节点分裂的图,示出存储同样内容的效果,但有不同插入顺序;
图5是根据本发明实施例的内容定义节点分裂的方法的流程图;
图6描述了根据本发明实施例的示范性的内容定义节点分裂策略。
具体实施方式
内容可寻址存储(CAS)系统基于内容而非位置存储可被检索的信息。图1是存储系统图100。在本发明的至少一个实施例中,在诸如存储系统100的存储系统中执行描述于此的节点分裂的方法。在相关的申请号为US 12/042,777、题为“内容可寻址的存储的系统和方法”、提交于2008年3月5日的美国专利申请中,更详细描述了这种存储系统的实现,并将通过引用结合到本文中。
存储系统100包括文件服务器102,该文件服务器102用于接收数据操作(例如文件写、文件读等)和元数据操作(例如文件去除等),并将接收到的数据分块成数据块(data blocks)以存储于块存储(blockstore)104中。块存储104存储数据和元数据块,某些可以指向其他块,可组织它们以描述文件系统106,下面就图2-5更详细地描述。
在本文的上下文中,元数据是非文件内容的任何数据。例如,元数据可以是关于客户可见的一个或多个文件的信息,如文件或目录的名字、文件创建时间、文件大小、文件许可等,和/或关于一个或多个文件和/或客户看不见的文件系统的信息,如索引结构、文件偏移量等。当然,可使用其他适合的元数据(例如关于数据、一个或多个文件、一个或多个数据块、一个或多个数据结构、一个或多个文件系统、位图等的信息)。
文件服务器102可以是耦合到客户和配置成提供用于数据(例如信息、文档、文件等)存储的位置的其他设备或任何计算机。因此,文件服务器102可具有存储装置和/或存储器。另外,文件服务器102将数据分块成数据块(例如生成数据块)。即,文件服务器102从客户数据和/或另外的组数据和元数据创建数据块(例如组块)在某种意义上以允许在CAS中存储,并将这些数据和元数据块写到块存储104。
块存储104可识别数据块为先前已见(例如已知的、存储的等)的数据块并返回其内容地址,或者可识别数据块为新块,为其生成内容地址和返回该内容地址。可使用内容地址来重取(re-fetch)数据块,所述内容地址可以连同已完成写的确认一起被接收。
块存储104可以是CAS系统或其他适合的存储器和/或存储系统。在至少一个实施例中,块存储104是基于簇的内容可寻址块存储系统,如在申请于2008年1月31日、申请号为US 12/023,133的美国专利申请和申请于2008年1月31日、申请号为US 12/023,141的美国专利申请中所描述,每一个通过引用结合到本文中。当然,可利用其他基于地址的存储系统。块存储104包含可组织成文件系统106的数据块。文件系统106是可表示成树结构的数据结构,如下面就图2-5更详细讨论的那样。
存储系统100可具有处理器(未示出),该处理器通过运行计算机程序指令来控制存储系统100的整体操作,所述程序指令定义了这样的操作。在同样的或备选的实施例中,文件服务器102和/或块存储104可各自具有控制器、处理器或其他设备,其通过运行计算机程序指令控制存储系统100的操作的至少一部分,所述计算机程序指令定义这样的操作。可以在存储设备中(例如磁盘、数据库等)存储计算机程序指令,和/或在期望计算机程序指令运行时将其载入存储器。这样,由存储于存储器中的计算机程序指令定义和由运行该计算机程序指令的处理器控制用于执行存储系统100的关联函数和在此描述的方法步骤的应用,如方法500中的数据存储、节点分裂等。存储系统100可包括一个或多个中央处理单元、只读存储器(ROM)设备和/或随机存取存储器(RAM)设备。本领域技术人员将认知,实际的内容可寻址的存储系统的实现也可包含其他组件,图1的存储系统100是这种存储系统的某些组件的上位表示,用于说明目的。
根据本发明的某些实施例,可将程序(例如控制器软件)的指令读入文件服务器102和/或块存储104,诸如从ROM设备到RAM设备或从LAN适配器到RAM设备。程序中指令的序列的运行可使存储系统100执行描述于此的一个或多个方法步骤,如就方法500在下面所描述的。在备选的实施例中,为了本发明流程的实现,可代替软件指令或与软件指令结合使用硬接线的电路或集成电路。因此,本发明的实施例不限于硬件、固件和/或软件的任何特定组合。块存储104可存储用于存储系统100的软件,其可适合于运行该软件程序和因此依照本发明以及特别地依照下面详述的方法操作。但是,本领域技术人员应理解,这里描述的本发明可以通过使用宽范围的编程技术以及通用的硬件子系统或专用控制器,以多种不同方式来实现。
可以以压缩的、未编译的和/或加密的格式来存储这样的程序。该程序而且可包括通常有用的程序元素(program elements),诸如操作系统、数据库管理系统和允许控制器与计算机外围设备以及其他装备/组件接口的设备驱动(器)。合适的通用程序元素为本领域技术人员所知,这里不必详细描述。
内容定义的节点分裂方法基于底层数据内容伪随机地(pseudo-randomly)选择节点分裂点。一般地,在给定的搜索区域中要选择唯一的元素,该元素满足对于内容定义节点分裂点所要求的给定准则。因此,选择任何给定元素作为潜在分裂点的概率为低。
单个数据项插入不大可能影响分裂点决策。因此,在单个的叶节点和到根的关联路径内可能包含两树生长之间的差别。即使单个数据项插入节点影响节点分裂点决策,这些树将可能在随后的生长中再同步。
类似地,当在内容定义节点分裂期间单个数据项的插入顺序变化时,该项不大可能成为内容定义的节点分裂点。当插入时间差别很小而发生在节点分裂决策之前时,产生两个同样树。但是,当两个数据项的插入时间充分分开时,使用内容定义节点分裂生长的树具有使得中间节点不受影响的大概率和显示局部节点改变的高概率。
图2描绘根据本发明的实施例的文件系统200。文件系统200可以是这里所描述的数据结构、数据树、数据列表或其他数据、元数据、组块、块和/或散列存储。
一般地,文件系统200包括一系列排列于数据结构中的节点202,如高扇出(high-fanout)B+树。因此,存储结构领域中技术人员应理解,节点202最终被耦合到根204。文件系统200则可具有任何合适数量的节点202。就是说,随着生长文件系统200,加入和/或填充合适数量的节点202。各个节点202包括若干项目(如槽、块、组块等)206。如在数据结构中所认知的,可以有任何数量的项目206和/或节点202的层。
在至少一个实施例中,项目206是描述其他项目206、节点202和/或数据的元数据和/或数据的散列。在下文中,以这样的顺序诱导(order inducing)数据结构使用的节点中的项目是指组块,并且理解在不同上下文中组块可表示不同的逻辑组件(例如其他数据结构节点、目录、文件、文件内容、信息节点、文件属性等)。
在图3和图4中,描述当应用到数据插入数据结构时的节点分裂策略,因为该情形对于使用CAS的备份应用是最重要的。但是,在节点下溢条件期间、在清除操作(erase operation)期间也可能通过应用(可能重复地)节点分裂操作到两个(或更多个)相继节点的合并节点项目以生成包含预期范围许多项目的替代节点,来应用该策略。
图3描述了各图300A和图300B,它们是与内容定义节点分裂相比较的传统节点分裂的示例。图300A显示了对于理想的、分类的插入序列302A,传统节点分裂与内容定义的节点分裂的比较。图300B显示了传统节点分裂与内容定义节点分裂的比较,其中附加的组块324出现在理想的、分类的插入序列302B内。在下面就方法500和图5更详细讨论节点分裂的流程。
列306显示组块的特定插入顺序。列308显示应用特定传统节点分裂方法的结果。列316显示应用根据本发明的实施例的特定的内容定义节点分裂方法的结果。
在图300A中,插入序列302A包括多个元数据组块304a-304h。虽然图300A中描述成插入序列302A具有8个组块(例如,组块304a-304h),但是插入序列可具有任何数目的组块。
插入序列302A表示要在节点中(诸如在图2的节点202和/或项目206中)存储的的元数据和/或数据插入顺序。类似地,组块304a-304h表示存储在节点202/302A中的散列。
列306的第一行显示任何分裂之前插入序列302A的组块304a-304h,要按正确的顺序插入以形成节点,如所示的那样。基于下面就图5更详细讨论的内容定义准则,组块304c和304g(显示为填充块)是合格的内容定义分裂点。就是说,在块304c和304g的每个之后可分裂插入序列302A,以致于后续的组块被移入新节点中。
列308的第一行显示了使用传统节点分裂准则分裂成节点310、312和314的插入序列302A。在该例中,在每隔两个组块之后分裂插入序列302A。这样,节点310包含组块304a-304c,节点312包含组块304d-304f,节点314包含组块304g-304h。
列316的第一行显示使用下面就图5描述的内容定义节点分裂方法500分裂成节点318、320和322的插入序列302A。在该例中,插入序列302A在每个合格的内容定义分裂点之后分裂。就是说,插入序列302A在每个组块304c和304g以后分裂,以致于组块304a-304c形成节点318,组块304d-304g形成节点320,304h和后来的直到且包括下一个合格的内容定义分裂点的组块形成节点322。
在图300B中,插入序列302B包括多个元数据组块304a-304h,其要以显示的顺序插入以在数据结构中形成节点。另外,新组块324呈现,按其适当(例如理想的、分类的)顺序位于插入序列302B中。为示范之目的,图300B描述了位于组块304b和304c之间的组块324,但本领域的技术人员会认识到,在操作过程中,附加组块可位于节点的任何点内。虽然在图300B中描述为插入序列302B具有9个组块(例如组块304a-304h和324),但是插入序列可具有任何数目的组块以及可被加入和/或删除一个以上的组块。
插入序列302B表示要存储于节点中(如在图2中的节点202和/或项目206中)的数据、子节点、和/或元数据。除插入序列302B包含组块324(表示成画×的框)外,插入序列302B等同于插入序列302A。类似地,组块304a-304h和324表示图2中节点202中存储的散列。
列306的第二行显示任何分裂之前插入序列302B的组块304a-304h。基于下面就图5更详细讨论的内容定义准则,组块304c和304g(显示为填充块)是合格的内容定义分裂点。就是说,插入序列302B可以在每个组块304c和304g之后分裂,在该分裂后,后续组块可被移入新节点内。
列308的第二行显示使用传统节点分裂准则分裂成节点326、328和330的插入序列302B。在该例中,插入序列302B在组块304a-304h和新插入的组块324的每隔两个组块之后分裂。这样,节点326包含组块304a、304b和324,节点328包含组块304c-304e,而节点330包含组块304f-304h。注意节点310、312和314均不匹配于节点326、328和330。
列316的第二行显示使用下面就图5描述的内容定义节点分裂方法500分裂成节点332、334和336的插入序列302B。在该例中,插入序列302B在每个合格的内容定义分裂点之后分裂。就是说,插入序列302B在每个组块304c和304g之后分裂,以致于组决304a-304c和组块324形成节点332、组块304d-304g形成节点334,以及组块304h和后来的直到且包括下一个合格的内容定义分裂点的组块形成节点336。注意比较节点318、320、322与节点332、334、336,只有包含插入组块324的节点332改变了。
图4描述各图400A和图400B,它们是内容定义节点分裂与传统节点分裂比较的示例。图400A显示传统节点分裂与内容定义节点分裂的比较,其中附加组块406以其理想的分类的顺序放置,如插入序列402A中所示的那样。图400B显示传统节点分裂与内容定义节点分裂的比较,其中同样的附加组块406失序放置,如插入序列402A中所示的那样。下面就方法500和图5更详细讨论节点分裂的流程。
列408显示组块的特定插入顺序。列410显示应用特定的传统节点分裂方法的结果。列418显示了根据本发明的实施例的应用特定的内容定义节点分裂方法的结果。
在图400A和400B中,插入序列402A和402B包括多个元数据组块404a-404h。另外,新组块406(显示为画×的框)在插入序列402A中位于其适当位置,但是在402B中失序位于延迟位(delayedposition)。为示范之目的,图402A描述位于组块404b和404c之间的组块406,但本领域技术人员应认识到,在操作过程中,这样的组块可以初始位于插入序列的任意点。虽然在图400A中描述成插入序列402A具有9个组块(例如404a-404h和406),但是插入序列可以具有任何数目的组块,以及可以加入一个以上的组块并使其插入延迟到序列402B的后来点。
列408的第一行显示了插入序列402A的组块404a-404h和组块406的插入顺序。该插入顺序等同于组块的最终排序。基于下面就图5更详细讨论的内容定义准则,组块404c和404g(显示为填充框)是合格的内容定义分裂点。就是说,插入序列402A可在每个组块404c和404g以后分裂,以致于所有后来的组块可被移入新节点。
列410的第一行显示使用传统节点分裂准则分裂成为节点412、414和416的插入序列402A。在该例中,该插入序列402A在组块404a-404h和新插入的组块406的每隔两个组块之后分裂。这样,节点412包含组块404a、404b和406,节点414包含组块404c-404e,而节点416包含组块404f-404h。
列418的第一行显示使用下面就图5描述的内容定义节点分裂方法500分裂成节点420、422和424的插入序列402A。在该例中,插入序列402A在每个合格的内容定义分裂点之后分裂。就是说,插入序列402A在每个组块404c和404g之后分裂,以致于组块404a-404c和组块406形成节点420,组块404d-404g形成节点422,以及404和后来的直到且包括下一个合格的内容定义分裂点的组块形成节点424。
在图400B中,插入序列402B包括适当顺序的多个组块404a-404h。但是,附加组块406无序位于插入序列402B中。为示范之目的,图400B描述组块406在组块404h之后,但是本领域技术人员会认识到,在操作过程中,这样的组块可位于插入序列的任何点。虽然在图400B中描述为插入序列402B具有9个插入的序列(例如组块404a-404h和406),但是插入序列可以具有任何数目的组块,以及可以无序放置一个以上的组块。
插入序列402B表示存储于节点中(如在图2的节点202和/或入口202中)的数据和/或元数据。除了插入序列402B已使得组块406(显示为画×的框)失序(例如,不是象在插入序列402A中那样按理想的、分类的顺序)放置以外,插入序列402B等同于插入序列402A。类似地,402B的组块404a-404h和406表示要存储于节点202中内容的散列。
列408的第二行显示插入序列402B的组块404a-404h和406。基于下面就图5更详细描述的内容定义准则,组块404c和404g(显示为填充块)是合格的内容定义分裂点。就是说,可以在每个组块404c和404g之后分裂插入序列402B,以致于可将后来的组块移入到新节点。
列410的第二行显示使用传统节点分裂准则分裂成节点428、430和432的插入序列402B。在本例中,插入序列402B在原始组块404a-404h和组块406的每隔两个组块之后分裂。在传统节点分裂策略中,当分裂节点时,将失序放置的组块(例如组块406)安放成适当顺序(例如,在组块404b和404c之间,如在图400A的插入序列402A中那样)。这样,节点428包含组块404a-404c和406,节点430包含组块404d-404f,而节点432包含组块404g和404h。注意节点412、414、416均不匹配节点428、430和432。
列418的第二行显示使用下面就图5描述的内容定义节点分裂方法500分裂成节点434、436和438的插入序列402B。在本例中,在每个合格的内容定义分裂点之后分裂插入序列402B。就是说,在每个组块404c和404g之后分裂插入序列402B。在下面就图5描述的内容定义节点分裂方法中,当分裂节点时,将先前无序放置的组块(例如组块406)安放成适当顺序(例如在组块404b和404c之间,如在图400A的插入序列402A中那样)。这样,组块404a-404c和组块406形成节点434,组块404d-404g形成节点436,以及组块404h和后来的直到且包括下一个合格的内容定义分裂点的组块形成节点438。注意该无序插入序列402B的构建节点434、436、438与有序插入序列402A的构建节点420、422、424是同样的。
如在图3和图4的描述中看到的,当使用传统节点分裂方法时,涉及数据组块插入或去除的底层组块(例如字节等)的局部化改变典型改变许多节点。当数据插入的时间有大的差别时,也影响成比例地大的数量的叶节点。因而,传统节点分裂方法产生大量非复制节点。
相反,使用内容定义节点分裂,数据结构对插入顺序改变较不敏感。类似地,存储的组块的数目中的局部化改变可能对元数据存储结构具有局部化效应,产生大量的复制节点。节点复制是有利的,因为其减少了存储成本。在某些应用中,节点复制还可以减少数据传输成本和/或加快操作的速度。
图5是根据本发明实施例的内容定义节点分裂的方法500的流程图。可由存储系统100的各种组件(如由上述处理器或其他类似的组件)执行该方法500。该方法开始于步骤502,典型地在节点已经达到某些预定(例如最大)数目的项目时被调用。
在步骤504中,搜索节点区域以查找内容定义分裂点。在至少一个实施例中,使用滚动窗以实现分裂点的伪随机选择。该搜索区域可以是预定的(例如指定的)。就是说,该搜索区域可以通过使用全局参数进行用户定义和/或设置。可以前向和/或后向搜索该搜索区域。在许多情形下,节点项目自身被充分随机化,以致于长度1的滚动窗是合适的(例如正存储底层数据时是底层内容的内容地址或散列(when the underlying data is being stored is hashes or content addressesof underlying content))。
内容定义分裂点基于节点项目的内容的散列函数。就是说,使用节点中组块的该散列函数以确定分裂点。定义分裂点的散列函数的参数可以预定以及可由用户或系统定义,并可根据组块(例如数据、元数据、节点等)的类型而不同。可通过搜查节点中组块的散列中的比特的特定序列,在预定搜索区域内执行搜索。例如,可将位掩码(bitmask)应用到节点中项目的散列,以及执行搜索以发现选择的比特何时满足预定条件。
举例来说,可以对通过位掩码选择的比特进行等于0或超过某个固定值的比较,或者可以通过使用最大或最小的相遇值来选取选择。可以使用内容定义分块领域技术人员所知的其他技术来执行该选择。此外,虽然优选在叶节点中存储底层数据的散列相关表示或内容地址,但这仅仅是一个建议的实施例。在某些实施例中,为查找内容定义分裂点,仅叶节点被搜索。在备选的实施例中,为查找内容定义分裂点搜索文件系统(例如图1的文件系统106)的全部树节点。
在步骤506中,就是否已发现分裂点做出判定。在至少一个实施例中,执行步骤504中的搜索直到发现第一个内容定义分裂点。若发现内容定义分裂点,该方法进行到步骤508并指定该内容定义分裂点。若没有发现内容定义的分裂点,该方法进行到步骤510并选择分裂点。
在步骤508中,当符合(例如满足)合适(例如预定的)的条件时,指定关联组块作为内容定义分裂点。如上面就图3和图4所讨论的那样,内容定义分裂点与特定的组块关联,文件系统106可按已知方式分裂包含该组块的节点。例如,文件系统106可在指定的分裂点之前或之后分裂。该方法然后进行到步骤512。
在步骤510中,选择分裂点。在至少一个实施例中,当在步骤504中没有发现内容定义分裂点时,指定搜索区域的中间作为分裂点。其他实施例可能更喜欢使用原始位掩码的更少限制的变化或选择仍然为内容定义的备选分裂点的其他方法。
在步骤512中,根据指定的分裂点分裂节点。该方法结束于步骤514。
图6根据本发明的实施例对内容定义节点分裂方法进行定义。图6显示内容定义分裂策略600,该策略是控制方法500的算法参数的示例。就是说,内容定义的节点分裂策略600指挥方法500的行为,诸如在处理器等上,如上面就文件系统100讨论的那样。
行2中的策略600(“condentdefinednodesplit”)表明要使用内容定义分裂。行3和行4表明叶和内部节点的最大允许扇出为320。每当节点(例如在插入序列302A、302B、402A、402B期间等)超过该最大扇出,就执行搜索以发现内容定义分裂点,如方法500的步骤504中那样。搜索在splitlo值和splithi值(例如预定搜索区域)之间范围中的节点。在本例中,splitlo指定该范围的下界(例如0.25×320=80),而splithi指定该搜索范围的上界(例如0.75×320=240)。当然,可以使用任何用户定义的或另外预定的搜索区域。
搜索该搜索区域以查找散列的分裂掩码(splitmask)比特中具有0的内容,如策略600的行7中所示的那样。在操作中,分裂掩码中设置比特的数目实质上为log2(搜索区域的大小)。在本例中,搜索区域的大小为160。这最大化了搜索区域内具有一个内容定义分裂点的概率。当然,可使用任何合适的位掩码(例如分裂掩码)。可通过splitalg(行2)选择内容定义分裂的其他变体。例如,某些变体可规定备份分裂点选择方法,可使用该方法在第一次通过搜索区域中的项目期间没有发现分裂点的情况下去选择分裂点。例如,可使用更少限制的位掩码,或者在这样的情形下可使用后退固定分裂点(例如中点分裂)。在某些实施例中,可在步骤504中的分裂点的搜索中和/或在上面图5的步骤510中选择分裂点中使用上面的变体。
在某些实施例中,将元数据“数据”与对应的内容地址分离。该元数据“数据”和内容地址则存储于不同的块中。因此,若组块在文件系统(例如文件系统200等)中移位,虽然后来生长的数据结构中的元数据“数据”将不同,但可消除复制内容地址块。
要将前面的具体实施方式理解为全部是说明性的和示范性的,而不是限制性的,并且公开于此的本发明的范围不由该具体实施方式确定,而是由根据专利法许可的全部范围所解释的权利要求来确定。要理解,显示和描述于此的实施例只是本发明的原理的说明,以及本领域技术人员不脱离本发明的范围和精神可实现各种改动。本领域技术人员不脱离本发明的范围和精神可实现各种其他特征的组合。
Claims (19)
1.一种内容定义节点分裂的方法,包括:
至少部分基于节点中项目的散列确定所述节点的分裂点;
基于确定的分裂点分裂所述节点。
2.如权利要求1所述的方法,还包括:
搜索所述节点的至少一部分以查找所述分裂点。
3.如权利要求2所述的方法,其中搜索所述节点的至少一部分以查找所述分裂点包括搜索预定搜索区域以查找唯一分裂点,以及至少部分基于节点中项目的散列确定所述节点的分裂点还包括设定所述唯一分裂点作为所述确定的分裂点。
4.如权利要求3所述的方法,其中搜索预定搜索区域以查找唯一分裂点包括搜索所述预定区域以查找第一相遇分裂点。
5.如权利要求1所述的方法,其中至少部分基于节点中项目的散列确定所述节点的分裂点包括:
搜索所述节点的至少一部分以查找满足预定条件的所述节点中项目的散列的预定位掩码。
6.如权利要求5所述的方法,还包括:
设定所述预定位掩码为实质上具有以2为底的节点集比特的被搜索部分的大小的对数的位掩码。
7.如权利要求5所述的方法,其中所述预定条件包括表明为0的比特的项目的散列的所述预定位掩码。
8.一种机器可读介质,具有存储于其上的程序指令,所述指令能够由处理器运行并定义以下步骤:
至少部分基于节点中项目的散列确定所述节点的分裂点;
基于确定的分裂点分裂所述节点。
9.如权利要求8所述的机器可读介质,其中所述指令还定义以下步骤:
搜索所述节点的至少一部分以查找所述节点中项目的散列中的预定位掩码。
10.如权利要求9所述的机器可读介质,其中所述用于搜索所述节点的至少一部分以查找所述分裂点的指令包括用于搜索预定搜索区域以查找第一相遇分裂点的指令,以及其中所述用于至少部分地基于所述节点中项目的散列确定所述节点的分裂点的指令还包括用于设定所述第一相遇分裂点作为所述确定的分裂点的指令。
11.如权利要求8所述的机器可读介质,其中所述指令还定义以下步骤:
搜索所述节点的至少一部分以查找满足预定选择准则的所述节点中项目的散列的预定位掩码。
12.如权利要求11所述的机器可读介质,其中所述指令还定义以下步骤:
设定所述预定位掩码为具有以2比特为底的所述节点的被搜索部分的大小的对数的位掩码。
13.如权利要求11所述的机器可读介质,其中所述指令还定义以下步骤:
将节点项目的散列的预定位掩码与计算出的节点项目的散列相比较以确定为0的比特。
14.一种用于内容定义节点分裂的装置包括:
用于至少部分基于节点中项目的散列确定所述节点的分裂点的单元;
用于基于确定的分裂点分裂所述节点的单元。
15.如权利要求14所述的装置,还包括:
用于搜索所述节点的至少一部分以查找所述分裂点的单元。
16.如权利要求15所述的装置,其中所述用于搜索所述节点的至少一部分以查找所述分裂点的单元包括用于搜索预定搜索区域以查找第一相遇分裂点的单元,以及所述用于至少部分基于所述节点中项目的散列确定所述节点的分裂点的单元还包括用于设定所述第一相遇分裂点为所述确定的分裂点的单元。
17.如权利要求14所述的装置,其中所述用于至少部分地基于所述节点中项目的散列确定所述节点的分裂点的单元包括:
用于搜索所述节点的至少一部分以查找满足预定选择准则的所述节点中组块的散列的预定位掩码的单元。
18.如权利要求17所述的装置,还包括:
用于设定所述预定位掩码为实质上具有以2比特为底的所述节点的被搜索部分的大小的对数的位掩码的单元。
19.如权利要求17所述的装置,还包括:
用于选择节点项目的散列的预定位掩码以确定为0的比特的单元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/237904 | 2008-09-25 | ||
US12/237,904 US20100082636A1 (en) | 2008-09-25 | 2008-09-25 | Methods and Apparatus for Content-Defined Node Splitting |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101685467A true CN101685467A (zh) | 2010-03-31 |
Family
ID=41508433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910172826A Pending CN101685467A (zh) | 2008-09-25 | 2009-08-28 | 用于内容定义节点分裂的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20100082636A1 (zh) |
EP (1) | EP2178003A2 (zh) |
JP (1) | JP2010079888A (zh) |
CN (1) | CN101685467A (zh) |
CA (1) | CA2675328A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107665096A (zh) * | 2016-07-29 | 2018-02-06 | 希捷科技有限公司 | 加权数据分条 |
CN111597146A (zh) * | 2020-05-20 | 2020-08-28 | 浙江大华技术股份有限公司 | 视频文件处理方法及装置、存储介质、电子装置 |
CN113393221A (zh) * | 2021-08-16 | 2021-09-14 | 迅管(深圳)科技有限公司 | 基于在线数据的企业生态链服务推送方法及系统 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5633646B2 (ja) * | 2011-06-03 | 2014-12-03 | 富士通株式会社 | 情報処理装置、データ管理方法およびデータ管理プログラム |
WO2013038632A1 (en) * | 2011-09-16 | 2013-03-21 | Nec Corporation | Storage system |
US20150026153A1 (en) * | 2013-07-17 | 2015-01-22 | Thoughtspot, Inc. | Search engine for information retrieval system |
US10496313B2 (en) | 2014-09-22 | 2019-12-03 | Hewlett Packard Enterprise Development Lp | Identification of content-defined chunk boundaries |
US10108633B2 (en) * | 2014-12-27 | 2018-10-23 | Ascava, Inc. | Using a distributed prime data sieve for efficient lossless reduction, search, and retrieval of data |
US11093163B2 (en) * | 2019-05-10 | 2021-08-17 | EMC IP Holding Company LLC | Efficient capacity management for a data storage system |
US11544272B2 (en) | 2020-04-09 | 2023-01-03 | Thoughtspot, Inc. | Phrase translation for a low-latency database analysis system |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US2313308A (en) | 1941-01-06 | 1943-03-09 | Cameron Iron Works Inc | Casing head |
US2314108A (en) | 1941-10-04 | 1943-03-16 | Silverman Ralph | Electric power megaphone system |
US4277708A (en) | 1979-06-25 | 1981-07-07 | Westinghouse Electric Corp. | Environment and brushes for high-current rotating electrical machinery |
US4611272A (en) * | 1983-02-03 | 1986-09-09 | International Business Machines Corporation | Key-accessed file organization |
US4811210A (en) * | 1985-11-27 | 1989-03-07 | Texas Instruments Incorporated | A plurality of optical crossbar switches and exchange switches for parallel processor computer |
US4775934A (en) * | 1986-06-17 | 1988-10-04 | Yeda Research And Development Co. | Method for concurrent logic program |
ATE51721T1 (de) * | 1986-07-08 | 1990-04-15 | Europ Computer Ind Res | Verfahren und system zur verarbeitung von logischen programmen. |
US6614789B1 (en) * | 1999-12-29 | 2003-09-02 | Nasser Yazdani | Method of and apparatus for matching strings of different lengths |
US6757686B1 (en) * | 2000-06-14 | 2004-06-29 | International Business Machines Corporation | Method and apparatus for representing database and query information using interval hash tree |
US6904430B1 (en) * | 2002-04-26 | 2005-06-07 | Microsoft Corporation | Method and system for efficiently identifying differences between large files |
-
2008
- 2008-09-25 US US12/237,904 patent/US20100082636A1/en not_active Abandoned
-
2009
- 2009-08-12 CA CA2675328A patent/CA2675328A1/en not_active Abandoned
- 2009-08-17 EP EP09167970A patent/EP2178003A2/en not_active Withdrawn
- 2009-08-26 JP JP2009195516A patent/JP2010079888A/ja not_active Withdrawn
- 2009-08-28 CN CN200910172826A patent/CN101685467A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107665096A (zh) * | 2016-07-29 | 2018-02-06 | 希捷科技有限公司 | 加权数据分条 |
CN107665096B (zh) * | 2016-07-29 | 2022-04-19 | 希捷科技有限公司 | 加权数据分条 |
CN111597146A (zh) * | 2020-05-20 | 2020-08-28 | 浙江大华技术股份有限公司 | 视频文件处理方法及装置、存储介质、电子装置 |
CN111597146B (zh) * | 2020-05-20 | 2023-04-07 | 浙江大华技术股份有限公司 | 视频文件处理方法及装置、存储介质、电子装置 |
CN113393221A (zh) * | 2021-08-16 | 2021-09-14 | 迅管(深圳)科技有限公司 | 基于在线数据的企业生态链服务推送方法及系统 |
CN113393221B (zh) * | 2021-08-16 | 2021-11-19 | 迅管(深圳)科技有限公司 | 基于在线数据的企业生态链服务推送方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
EP2178003A2 (en) | 2010-04-21 |
US20100082636A1 (en) | 2010-04-01 |
JP2010079888A (ja) | 2010-04-08 |
CA2675328A1 (en) | 2010-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101685467A (zh) | 用于内容定义节点分裂的方法和装置 | |
US8200633B2 (en) | Database backup and restore with integrated index reorganization | |
US11169978B2 (en) | Distributed pipeline optimization for data preparation | |
US20200210399A1 (en) | Signature-based cache optimization for data preparation | |
US20140310245A1 (en) | Partition level backup and restore of a massively parallel processing database | |
US10642815B2 (en) | Step editor for data preparation | |
KR20160100211A (ko) | 대용량 오디오 핑거프린트 데이터베이스의 온라인 실시간 업데이팅을 구성하기 위한 방법 및 장치 | |
US11853279B2 (en) | Data storage using vectors of vectors | |
JP6598997B2 (ja) | データ準備のためのキャッシュ最適化 | |
US20230394010A1 (en) | File system metadata deduplication | |
US9684677B2 (en) | Method for reliable and efficient filesystem metadata conversion | |
US20210056090A1 (en) | Cache optimization for data preparation | |
US11288447B2 (en) | Step editor for data preparation | |
US20220335030A1 (en) | Cache optimization for data preparation | |
US20090030929A1 (en) | System and method for providing a virtual item context | |
WO2016067107A1 (en) | Data storage using vectors of vectors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20100331 |