20 марта 2011 г.

Дедупликация фиксированными и изменяющимися блоками

Очень простой и понятный пример того, какие преимущества дает использование дедупликация блоками динамически изменяющегося размера. Взято здесь.

Итак, в текстовый файл мы записали  фразу “deduplication technologies are becoming more an more important now.” и прогнали по ней два алгоритма дедупликации: один с фиксированным размером блока (для простоты взят размер в 8 символов), а другой с изменяющимся. Получаем  такой расклад:


Ох ты, а в тексте-то ошибка.  :(  Надо срочно ее исправить и дописать букву "d" в слово "end". Однако, это приведет к тому, что весь последующий текст сдвинется на один символ. Соответственно, это приведет к изменению 4 блоков фиксированного размера.


А вот в случае динамически изменяющихся размеров, "пострадает" только 1 блок. Количество информации, которое необходимо записать на хранилище в этом случае значительно меньше. Сочетая такие алгоритмы с методом дедупликации на клиенте, мы, к тому же, заметно разгружаем сеть передачи данных.

EMC Avamar использует дедупликацию на клиенте блоками изменяющегося размера. Алгоритм называется “sticky byte factoring”. Размер блока динамически вычисляется по предетерменированным паттернам данных и может варьироваться от 1byte до 64Kbyte (в среднем 24Kbyte). Для вычисления хэш-сумм (их там несколько типов: атомарные для каждого блока, композитные для групп блоков и корневые для всего объекта) используется специальная катящаяся (rolling) хэш-функция. Не смотря на то, что на ее вход поступают данные различного размера, результат ее работы (хэш-сумма) всегда имеет фиксированную длину 20byte. В общем, лихо закручен сюжет, я в подробностях  даже не пытался разобраться...   может вы попробуете?   ;)  здесь кое-что есть для затравки...

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.