选择用于取消重复数据的存储的制作方法_4

文档序号:9575551阅读:来源:国知局
标识(ID),使得从每个组成员170返回的记录与相同的合作实体相关(但是标识符不一定具有任何暗示的时间顺序);2.)每组成员的独特标识符,这是基于在组成员上创建的合作实体的划分的创建时间来排序的(例如,本地组成员数据库行标识);以及3.)在该组成员上创建的合作实体的划分的创建时间戳。应当注意,在严格足以允许使用时间戳的容限内,组成员170上的时钟被同步或者被时间对准。例如,根据一些实现,可以使用客户端的网络时间协议(NTP)同步。
[0062]无序组范围独特标识允许客户端应用134识别在组成员170中匹配的记录,即识另IJ“缝合点”。每组成员排序的独特标识符允许客户端应用134从每个组成员170中检索结果的下一页/前一页,并且因此,实现每个组成员170的向前/向后滑动窗口,这可以在多波合并操作中使用。创建时间戳允许客户端应用134判定客户端应用需要在多大程度上向下搜索每个组成员的结果以找到缝合点。
[0063]作为更具体的示例,图10描绘了从组成员I (经由列1011中描绘的页面)、组成员2 (经由列1012中描绘的页面)和组成员3 (经由列1014中描绘的页面)中检索的页面。来自组成员的结果在页面边界1030和1032处被分离。图10还描绘了结果的列1020。对于下面的示例,客户端应用134从每个组成员170中检索被计时的多达两个组成员对象的页面,并且在结果列1020中向用户返回被计时的两个合作对象的页面。
[0064]更具体地,为了返回结果(A,B)的第一页面,客户端应用134从组成员I读取一个结果页面,其包含前两个对象(按交叉组创建时间的顺序):A和B ;从组成员2读取两个结果页面;并且从组成员3读取两个结果页面。对于该示例,合作对象B和C实际上是在相同时间从两个不同的客户端创建的;但是由于定时差异,相对于组成员2,在组成员I上以不同的顺序创建合作对象B和C。为此,为了确定用于合作对象B的记录是否可以被找到的目的,从组成员2读取额外的结果页面。当记录组成员I在其中具有关于合作对象在哪些组成员上被创建的信息时,客户端应用134知道存在用于合作对象B的记录。此外,客户端应用134知道,来自组成员2的返回结果的第一页面仍然在创建的合作对象周围,所以客户端应用确定加载额外页面以找到其是实际的。
[0065]对于结果的第一页面,组成员3的结果不包括合作对象B的记录。为了返回结果(C,D)的第二页面,客户端应用从组成员I读取结果的一个其他页面,其包含接下来的两个对象:C和D。此外,对于该结果的第二页面,如果针对每个组成员170缓存两到三个页面,当针对对象C和D的信息在已经缓存的两个页面中可用时,不从组成员2读取其他页面。从这些缓存的结果,客户端应用134知道其无法找到用于组成员3的合作对象C或D的记录。
[0066]为了返回结果(E,F)的第三页面,客户端应用134从组成员I读取结果的另一页面,其包含接下来两个对象:E和F。客户端应用还从组成员2读取一个结果页面,其包含接下来的两个对象:E和F。当对象E在第一页面(缓存)中时,不针对组成员3检索其他结果页面。此外,客户端应用134知道其无法从用于组成员I的记录中的创建信息中找到用于组对象F的记录。
[0067]为了返回结果(X,Y)的第三页面,客户端应用134读取后面的内容,不从组成员I检索其他结果页面(即,已经达到末尾);不针对组成员2检索其他结果页面(S卩,已经达到末尾);并且从组成员3检索结果的另一页面,其包含接下来的两个对象.-X和Y。
[0068]为了返回结果(Z)的第四页面的目的,客户端应用134读取后面的内容。没有来自组成员I的另一结果页面(即,已经到达末尾);没有来自组成员2的另一结果页面(S卩,已经到达末尾);以及来自组成员3的另一结果页面,其包含接下来的对象:Z。
[0069]根据示例性实现,针对每个合作对象创建和维护清单。通常,本文中称为“对象清单”的清单描述了在组成员当中存储的用于给定合作对象的数据的细节。以该方式,清单允许系统跟踪并且将分布的各个数据项整合成一个粘着合作对象。根据本文公开的示例性实现,该对象清单在组成员170当中分布。
[0070]更具体地,参考图11,根据示例性实现,技术1100包括:在多个组成员170或存储上存储(框1102)对象的取消重复数据,以及分布(框1104)清单,清单描述了存储当中的合作对象的存储。以该方式,对于每个存储,技术1100包括存储(框1106)用于清单的数据,该清单描述了在该存储上的块的存储。
[0071]与单个主清单不同,在组成员170当中分布对象清单可以有助于避免单点故障。换言之,通过单个清单,清单可能丢失或损坏,这可能使合作对象无用,不论底层数据对象的状态如何。然而,通过分布对象清单,每个组成员的对象清单(整体分布式对象清单的一部分)是完全自我描述的。换言之,每个组成员170具有其数据块适合于较大合作对象内的知识。通过以该方式存储分布式数据,在可以提高鲁棒性、冗余度和灵活性的同时,可以减小开销。
[0072]参考图12,根据示例性实现,通过分布存储在各个组成员170上的清单1240 (图12中描绘为四个相应组成员170的示例的成员清单1240-1、1240-2、1240-3和1240-4)来创建主清单1200。每个成员清单1240进而包括条目,其中,每一个描述存储在该组成员上的关联合作对象的块。例如,对于图12的示例的组成员1,成员清单1240-1包含多个条目1244 (在图12中作为示例示出的条目1244-1和1244-2),其描述了相应块的存储。继续该示例,组成员节点2、3和4分别存储相应条目1246、1248和1250。总的来说,条目1244、1246、1248和1250形成主清单1210的条目1220。
[0073]因此,如图12所示,主清单1210包括各种条目1220 (在图12中作为特定示例示出的条目1220-1、1220-2、1220-3和1220-4),其对应于在组成员中分布的条目。
[0074]通常,每个条目(其中“条目”指存储在组成员上或作为成员清单1240的一部分收集的条目)包含四个信息字段:1.)第一字段,指定关联数据块驻留在合作对象中的位置;2.)第二字段,指定数据块驻留在成员对象中的位置;3.)第三字段,指示块的大小(例如,以字节为单位);和4.)第四字段,包含标识关联块被存储的特定组成员的数据。
[0075]因此,如图12所示,通过分布式主清单1200,每个组成员170包含成员清单1240,其仅描述了成员本地存储的块。
[0076]与主清单1210的给定条目1220相反,相应的成员清单条目包含较少的信息。例如,与主清单条目1220相比,当存储在组成员上的所有数据具有相同的节点标识符时,成员清单条目不标识节点。替代地,字段被添加到组成员的对象存储,描述了哪些组成员构成了合作对象的整个组。这具有允许组成员能够联系其他组成员中的任何一个以找出哪些组成员存储用于给定合作对象的数据的附加优点。另外,不存在成员清单条目中的成员偏移。在这方面,当其取决于关于如何存储其数据的组成员时,组成员仅使用合作偏移。
[0077]在写入操作期间,每个组成员170在其成员清单1240中记录其所拥有的数区域以及相应块驻留的位置。当重构用于具体读取操作的组触媒块时,可以使用竞价原理的推论。另一消息可以被添加到该协议,使得客户端应用134可以从每个组块中检索针对给定合作对象存储的数据块(例如,偏移和大小)。
[0078]因此,本文公开的方法联合组成员当中的给定合作对象的主清单以及用户数据,由此排除在其他位置的单个位置处的主清单的存储。联合的方法可以有助于使用较少的协议消息来用于读取操作,并且根据示例性实现,当清单与每个组成员170上的数据紧密耦合时,没有用于写入的其他消息。
[0079]此外,对象的主清单的丢失可能会导致整个对象的丢失,而独立成员清单的丢失可能仅导致对象的部分丢失。此外,本文描述的方法避免了增加冗余,因为冗余可能相对复杂。例如,冗余主清单将跟踪每个冗余块被存储的位置。而且,如果主清单被存储在多于一个的位置中,则每个清单将被彼此同步。考虑到清单副本中的一个
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1