@antobra

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

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

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

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

Войти через центр авторизации
Похожие вопросы