Skip to content

AlexanderMeynik/data_deduplication_service

Repository files navigation

Сервис дедупликации данных

Цель работы состоит в реализации системы оптимального хранения данных за счет использования подхода дедупликации данных и проведении тестирования для измерения производительности созданного прототипа.

Описание проекта

Данный проект выполнялся в рамках курсовой работы по дисциплине "Системы анализа больших данных". Основные работы над данной частью проекта производились с сентября по ноябрь 2024 года. Целью всего проекта является сбор и анализ метаданных статей с платформы

Основная страница с документацией

Документация doxygen

Стек технологий

  1. C++ 20
  2. PostgreSQL 15 сайт
  3. libpqxx 7.9 GitHub
  4. libglog GitHub
  5. gtest/gmock 1.15.2 GitHub
  6. FFF(Fake Function Framework) GitHub
  7. libssl сайт
  8. Асинхронный пул потоков из библиотеки Leopard GitHub
  9. Qt6 Widgets сайт
  10. Docker 27.1 сайт
  11. Doxygen сайт

Описание провдимых мероприятий

  1. Реализован механизм runtime преобразования PostgreSQL типов по значению OID(см. models.h);
  2. Применён Model/View подход для визуализации данных;
  3. Реализован набор workflow для сборки проекта, тестирования, временных измерений и равёртывания документации;
  4. Были изучены особенности написания документации на базе Doxygen.
  5. Применены подходы блочной вставки и потоковых запросов для ускорения вставки файла в БД.
  6. Создан docker образ и workflow для сборки данного образа и отправки его в HUB.
  7. Разработан потокобезпоасный шаблонный класс массива таймеров для сбора временных метрик.
  8. Произведено smoke тестирование
  9. полученной реализации таймера и сервисов работы с файлами;

Задачи

  • решить проблему с подключением к бд
  • создать простую схему для дедупликации
  • Доработать данную схему базы данных
    • Добавить методы для сбора метрик(процент сжатия, распределение по числу блоков)
    • Убрать ненужные/избыточные колонки, нормализовать/уточнить взаимосвязи между таблицами
    • добавить методы блочной передачи, чтобы передавать не сразу весь файл, а по фрагментам
    • Реализовать процедуры удаления файлов из бд
  • реализовать создание схемы выше в разных вариантах(размер сегмента, функция хэширования) при помощи динамических sql запросов
    • Реализовать процедуру создания базы данных
    • Реализовать процедуру заполнения схем новой бд
    • добавить возможность выбирать функцию хэширования
  • добавить источник данных
    • Источник данных директория(любая)
    • Подобрать данные для проверки работы сервиса
  • реализовать сервис для сбора данных из директорий/архивов и их восстановления, внутри будет использован dbService
    • Доработать набор запросов для взаимодействия с файлами/директориями
    • Доделать реализации для стратегий работы с бд
    • Использовать более безопасный вариант подлючения к бд
      • Подключения и все связанные с ним ресурсы должны быть освобождены после заврешеняи рабоыт программы
      • Незавершённые транзакции должны быть отменены/завершены
  • определить стек технологий
    • Доработать стек ниже
  • Ужать логи для запросов, стандартизировать их содержимое
    • Ввести единое соответствие между кодами возврата и типом ошибки
    • Убрать лишние(\n,\r\n ...) символы из записей логгера
    • Создать конфигурацию для логов
    • Убрать тексты запросов из записей
  • Произвести миграцию со старой версии libpqxx на новую
  • Тестирование
    • Собрать и установить gtest/gmock
    • создать конфигурации для тестирования
    • CI/CD
    • Сохранять логи в качестве артефактов
  • Исправить основные issue в репозитории
  • ввести набор критериев и метрик, зависимости между которыми будут подлежать исследованию
  • Создать релиз для приложения

About

Course project dedicated to creation of data deduplication service based of segmentation and hashing.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages