АРХІТЕКТУРА СИСТЕМИ ДЕДУБЛІКАЦІЇ ТА РОЗПОДІЛУ ДАНИХ У ХМАРНИХ СХОВИЩАХ ПІД ЧАС РЕЗЕРВНОГО КОПІЮВАННЯ - Русин, Богдан Павлович; Погрелюк, Любомир Володимирович; Висоцька, Вікторія Анатоліївна; Осипов, Михайло Михайлович; Варецький, Ярема Юрійович; Капшій, Олег Вірославович (Інформаційні технології та комп’ютерна інженерія, 2019)
Розроблена та детально описана концептуальна модель системи. Розроблена інтелектуальна система дедуплікації та розподілу даних у хмарному сховищі, описано опис програмного забезпечення, розглядаються етапи роботи користувача. Було проведено тестування роботи спроектованої системи. Описано кілька контрольних зразків, проаналізовано результати. Метою системи є дедублікації та розподілу даних у хмарних сховищах таким чином, щоб в кінцевому результаті резервного копіювання даних усунути повторюючі частини даних використовуючи потужності розподіленого обчислення та хмарних сховищ. Підібравши правильний підхід до розподілення завдань і даних під час дедублікації, можливо використати весь потенціал хмарних розподілених систем для збільшення швидкості резервного копіювання та його пропускної здатності. Проаналізовано (наведено недоліки та переваги використання різних підходів) та обрані ефективні методи вирішення задач: гібридну дедублікацію на рівні блоків, розбиття потоку даних на основі цифрового відбитку Рабіна, розподіл даних на основі хеш значень блоків дедублікації та використання розподіленого індексу. Дедублікація на рівні блоків передбачає два типи розбиття потоків даних на блоки, це розбиття з фіксованою довжиною та змінною на основі алгоритму. Розбиття з фіксованої довжиною досить тривіальне і швидке відносно складності алгоритму, проте недоліком є зміщення даних на початку потоку, оскільки блоки які будуть слідувати після змін будуть вважатися як нові. Проте у випадку з розбиттям блоків зі змінною довжиною, точку власне розбиття визначає алгоритм. Даний алгоритм повинен працювати з безкінечними потоками даних використовуючи кільцеву хеш функцію. Алгоритм поглинає кожен вхідний байт даних з потоку, і як тільки значення кільцевої хеш функції відповідає заданому раніше шаблону, це і слугує точкою розбиття потоку на блоки. Таким чином, при змінені або зміщені даних на пару байтів, новим буде вважатись лише той блок даних який охоплює дані. Проте для того щоб відслідковувати зміни і правильно виставляти точки розбиття необхідно перевіряти вхідні дані на певний заданий цифровий шаблон – хеш значення. Поширеною практикою є обчислення хеш значення кожен раз на отримання вхідного байту в потоці даних. Точкою розбиття стане той момент, коли отримане хеш значення відповідатиме заданому шаблону. Щоб робити такі обчислення ефективно, було придумано алгоритм кільцевого хешу. Один із найпоширеніших алгоритмів кільцевого хешу є цифровий відбиток Рабіна. В ході аналізу засобів вирішення задач було обрано мову програмування Rust для написання клієнтської частини, мову програмування Scala для серверної частини, інструментарій Akka для менеджменту розподілених обчислень та Amazon S3 в якості хмарного сховища.