@antobra

Чанки: разбить и собрать, как это работает?

Недавно для меня стало открытием, что некоторые компании, хранящие файлы юзеров, разбивают каждый файл на чанки определенного размера, ищет такие же в своей базе, если такого нет, то сохраняет, если такой есть, то отбрасывает. (чтобы не дублировать информацию). В итоге одна запись по загруженным файлам в БД имеет список ссылок на все чанки, которые все вместе создают тот самый файл, который юзер загружал.
Тогда у меня возник вопрос, который хотел задать понимающим в этом людям. Как эти чанки склеиваются перед выдачей юзеру? Ведь по логике запрос от пользователя выглядит так: запрос в БД по запрашиваемому файлу, получаем список ссылок на все чанки по кластеру/серверам и как то выдаем файл(ы). Как происходит склеивание или выдача? И происходит ли? Один сервер копируют чанки к себе и выдают склеенными?
Благодарю за время и ответ
  • Вопрос задан
  • 2117 просмотров
Решения вопроса 1
2ord
@2ord
Речь, судя по всему, о дедупликации данных.
Каждый файл можно разбить на N равных отрезков данных и 1 остаточной длины. Если пронумеровать эти отрезки последовательно, сохранив в БД номера их последовательностей с их полученных хэшами и файлами-отрезками, именованными хэшами, то для восстановления содержимого файла будет достаточно найти в БД все принадлежащие заданному файлу куски данных, считывая их соответствующие данные из файлов-отрезков. Не важно на каких узлах хранилищ хранятся эти файлы-отрезки, а важно то что есть лишь 1 сервер, склеивающий в 1 целый файл.

Дедупликация подходит в случаях частого повторения кусков контента. Допустим, много повторений может найтись среди архивов документов (дубликаты целых файлов или некоторых частей). Порой, дедупликация может дать хороший выигрыш когда одни и те же видео файлы находятся в разных уголках архива. Хотя шансов найти дубликаты кусков среди разных видео файлов очень малы.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы