Дедупликация данных в облаке с Java - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь реализовать программу дедупликации данных в облаке с помощью Java.

Я не уверен, как приступить к реализации.

Во-первых, я хотел сделать простое сравнение файлов по размеру, дате и имени файла. Однако это неэффективно, поскольку файл может иметь то же содержимое, но с другим именем.

Я выбрал простой алгоритм, который загрузка файла -> чанкинг файла -> хэширование Рабина-Карпа -> определить, можно ли загрузить файл.

Это будет хорошо или есть улучшения?

Где бы я мог узнать больше информации об этом? Я пытался просматривать Интернет, но ничего не могу найти. Большинство из них просто разбиты на определенные реализации, но без объяснения или подробностей о фрагментации файла или хэшировании Рабина-Карпа.

Я хотел бы знать, какие библиотеки Java следует изучить в отношении этой программы.

1 Ответ

0 голосов
/ 05 июня 2019

Было бы проще, если бы вы указали свои проблемы ограничения.Предполагая следующее:

  • Наименьшая неделимая единица данных - это файл
  • Файлы достаточно малы для размещения в памяти для вычисления хэшей
  • Ваши файлы находятся в некоторыхОблако ведро или что-то, где вы можете перечислить их все.Кроме того, это устраняет идентичные имена файлов.

Вы, вероятно, можете сузить свою проблему.

  1. Итерировать по всем файлам во всех файлах, используя некоторый алгоритм быстрого хеширования, такой как базовый CRCКонтрольная сумма и построить карту.(Может быть легко распараллелено).
  2. Отфильтровать все файлы, которые столкнулись.Вы можете легко опустить остальные файлы, которые для всех практических целей должны быть довольно разумной частью данных.
  3. Запустите этот оставшийся набор файлов с криптографическим хешем (или в худшем случае, сопоставьте файлы целиком) и определите совпадения.

Это можно уточнить в зависимости от базовых данных.

Однако именно так я бы подошел к проблеме и дал ее структуру;эта проблема может быть легко разделена и решена параллельно.Не стесняйтесь разрабатывать больше, чтобы мы могли найти хорошее решение.

...