## Титульный Представляю Вашему вниманию дипломную работу на тему "Макет расширяемой программной системы информационного поиска в базах данных, имеющих различную организацию". --- ## Актуальность На сегодняшний день, с ростом объемов накопленной информации, становится актуальна проблема, когда при наличии всей интересующей информации, крайне сложно извлекать её из разрозненных и несогласованных источников данных, не имеющих единой структуры: данные хранятся в разных местах физически, в разных таблицах, коллекциях, и одинаковые по своему смыслу сущности в разных источниках могут быть названы по разному. --- ## Цель Целью моей работы является разработка макета расширяемой системы информационного поиска, использующей разнородные источники данных, форматы и модели их представления. Передо мной были поставлены следующие задачи: - Изучить существующие подходы к построению подобных систем, - Разработать архитектуру программной системы, - Подготовить базы данных различной структуры и организации, - Реализовать подсистему информационного поиска и пользовательский интерфейс к ней. --- ## ХД В области бизнес-аналитики существует такая концепция как хранилище данных, призванная решить в целом схожие проблемы, однако решения из этой области не подходят для решения некоторых специфичных сценариев, присущим, например задачам информационного поиска среди утечек персональных данных и разведки по открытым источникам (OSINT). Хранилища данных можно классифицировать на классические ХД, и на виртуальные ХД. Классические ХД устроены следующим образом как показано на слайде, то есть: из источников данных заблаговременно и регулярно извлекаются данные, причем в процессе извлечения данные преобразуются таким образом чтобы устранить несогласованность. Затем они поступают на хранение в хранилище, откуда и запрашиваются пользователем. --- ## ВХД Виртуальные хранилища данных отличаются тем что данные запрашиваются у источников непосредственно в момент запроса. Такой подход имеет как минимум два значимых преимущества: - Он более естественным образом масштабируется, так как, как правило, источники данных уже располагаются на независимых узлах, а основная нагрузка приходится именно на них. В таком случае не требуется дополнительных усилий для, скажем, шардирования хранилища. - Некоторые источники данных могут не предполагать возможности извлечения из них данных заблаговременно, например если источником выступает API социальной сети с ограничением по числу запросов --- ## Архитектура Разработанная система имеет трехслойную архитектуру, где - Самый верхний слой - прикладной - это множество приложений, использующих внешний интерфейс разработанной системы информационного поиска. Такими могут выступать как непосредственно пользовательские интерфейсы, так и иные системы, использующие разработанную в качестве источника данных. - Слой бизнес-логики, который и занимается устранением несогласованности данных в источниках - Слой источников данных --- ## Внешний программный интерфейс При выборе технологии внешнего программного интерфейса я установил следующие критерии: - HTTPS протокол в силу его широкой поддержки и безопасности к атакам человек-по-середине - JSON в качестве формата сериализации в силу его так же широкой поддержки, относительно низкой избыточности и при этом человекочитаемости - Возможность использования интерфейса посредством лишь стандартных средств. Это исключает, скажем, gRPC где существует необходимость использования механизма кодогенерации - Наглядность, в том плане что для разработчика-пользователя интерфейса должно уходить меньше времени на его изучение. --- ## Подготовка баз данных Далее я подготовил 5 баз данных различной структуры и огранизации общим объемом в более чем 900 миллионов записей. В целях тестирования часть была загружена в mysql, часть - в postgresql. --- ## Подсистема информационного поиска: архитектура (всё согласно рисунку) --- ## Подсистема информационного поиска: поток данных (всё согласно рисунку) --- ## Демонстрация (видео) Вы так же можете сами