如何创建用作文件存储,检索和处理系统的重复数据删除引擎。它必须将一些文件作为输入,以8字节大小的块从中获取数据,并将其存储在我们选择的一些有效数据结构中。数据结构应该是健壮的,不得存储重复的块。相反,它必须引用重复的原始块。
答案 0 :(得分:0)
这取决于细节。
如果所有可能不都适合内存,您可以简单地为每个块创建哈希码并将它们存储在哈希映射或树中,并引用到磁盘的位置,其中找到完整的块。然后,如果您查看新块,则计算hascode。如果哈希码不在地图中,则会得到一个以前从未见过的新块。如果哈希码与hashmap中的条目匹配,则必须查找引用的块并比较两个块以查看它们是否相同。
如果块 适合内存,你仍然可以使用hashmap方法,只需缓冲内存中的唯一块,而不必从磁盘加载它们。你也可以是一个批评指数。使用critbit索引,您可以使用完整的块作为键,从而创建有序的块集合。好处是关键字树可以使用前缀共享,因此它可以存储比通常适合内存的块更多的块;如果chink仅在最后几个字节中不同,则它将仅为两个块存储前导字节一次。