如何创建一个作为文件存储,检索和处理系统的重复数据删除引擎?

时间:2016-09-10 11:27:31

标签: data-structures

如何创建用作文件存储,检索和处理系统的重复数据删除引擎。它必须将一些文件作为输入,以8字节大小的块从中获取数据,并将其存储在我们选择的一些有效数据结构中。数据结构应该是健壮的,不得存储重复的块。相反,它必须引用重复的原始块。

1 个答案:

答案 0 :(得分:0)

这取决于细节。

  1. 你的大块有多大?块大小是8字节,或者为什么8字节大小很重要?
  2. 您期望有多少个不同的块,所有可能的块变体的副本是否适合内存?
  3. 如果所有可能都适合内存,您可以简单地为每个块创建哈希码并将它们存储在哈希映射或树中,并引用到磁盘的位置,其中找到完整的块。然后,如果您查看新块,则计算hascode。如果哈希码不在地图中,则会得到一个以前从未见过的新块。如果哈希码与hashmap中的条目匹配,则必须查找引用的块并比较两个块以查看它们是否相同。

    如果块 适合内存,你仍然可以使用hashmap方法,只需缓冲内存中的唯一块,而不必从磁盘加载它们。你也可以是一个批评指数。使用critbit索引,您可以使用完整的块作为键,从而创建有序的块集合。好处是关键字树可以使用前缀共享,因此它可以存储比通常适合内存的块更多的块;如果chink仅在最后几个字节中不同,则它将仅为两个块存储前导字节一次。