首页 > 解决方案 > 使用 Java 实现云中的重复数据删除

问题描述

我正在尝试使用 Java 在云中实现重复数据删除程序。

我不确定如何继续实施。

首先,我想对文件大小、日期和文件名进行简单的文件比较。但是,这是无效的,因为文件可能具有相同的内容但名称不同。

我决定了一个简单的算法,即文件上传 -> 文件分块 -> Rabin-karp 哈希 -> 确定是否可以上传文件。

这会很好还是有任何改进?

我在哪里可以找到更多关于这方面的信息?我曾尝试在互联网上四处寻找,但找不到任何东西。其中大部分只是分解为某些实现,但没有解释或有关文件分块或 Rabin-karp 散列的详细信息。

我想知道关于这个程序我应该研究哪些 Java 库。

标签: javahashduplicates

解决方案


如果你陈述你的问题限制,那会更容易。假设如下:

  • 最小的不可分割的数据单位是文件
  • 文件相当小,可以放入内存中用于计算哈希
  • 您的文件位于某个云存储桶或您可以将它们全部列出的地方。这也消除了相同的文件名。

您可能可以缩小问题的范围。

  1. 使用一些快速散列算法(如基本 CRC 校验和)遍历所有文件中的所有文件并构建映射。(可以很容易地并行化)。
  2. 过滤掉所有有冲突的文件。您可以轻松地忽略其余文件,出于所有实际目的,这些文件应该是相当合理的数据块。
  3. 使用加密哈希(或最坏的情况,匹配整个文件)运行剩余的文件子集并识别匹配项。

这可以根据基础数据进行细化。

但是,这就是我处理问题并给出其结构的方式;这个问题可以很容易地以并行方式划分和解决。请随意详细说明,以便我们能够找到一个好的解决方案。


推荐阅读