---
# System prepended metadata

title: Untitled

---

## Титульный
Представляю Вашему вниманию дипломную работу на тему "Макет расширяемой программной системы информационного поиска в базах данных, имеющих различную организацию".

---
## Актуальность
На сегодняшний день, с ростом объемов накопленной информации, становится актуальна проблема, когда при наличии всей интересующей информации, крайне сложно извлекать её из разрозненных и несогласованных источников данных, не имеющих единой структуры: данные хранятся в разных местах физически, в разных таблицах, коллекциях, и одинаковые по своему смыслу сущности в разных источниках могут быть названы по разному.

--- 
## Цель
Целью моей работы является разработка макета расширяемой системы информационного поиска, использующей разнородные источники данных, форматы и модели их представления.

Передо мной были поставлены следующие задачи: 
- Изучить существующие подходы к построению подобных систем,
- Разработать архитектуру программной системы,
- Подготовить базы данных различной структуры и организации,
- Реализовать подсистему информационного поиска и пользовательский интерфейс к ней.

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

Хранилища данных можно классифицировать на классические ХД, и на виртуальные ХД. Классические ХД устроены следующим образом как показано на слайде, то есть: из источников данных заблаговременно и регулярно извлекаются данные, причем в процессе извлечения данные преобразуются таким образом чтобы устранить несогласованность. Затем они поступают на хранение в хранилище, откуда и запрашиваются пользователем.

---
## ВХД
Виртуальные хранилища данных отличаются тем что данные запрашиваются у источников непосредственно в момент запроса. Такой подход имеет как минимум два значимых преимущества:
- Он более естественным образом масштабируется, так как, как правило, источники данных уже располагаются на независимых узлах, а основная нагрузка приходится именно на них. В таком случае не требуется дополнительных усилий для, скажем, шардирования хранилища.
- Некоторые источники данных могут не предполагать возможности извлечения из них данных заблаговременно, например если источником выступает API социальной сети с ограничением по числу запросов

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


---
## Внешний программный интерфейс

При выборе технологии внешнего программного интерфейса я установил следующие критерии: 
- HTTPS протокол в силу его  широкой поддержки и безопасности к атакам человек-по-середине
- JSON в качестве формата сериализации в силу его так же широкой поддержки, относительно низкой избыточности и при этом человекочитаемости
- Возможность использования интерфейса посредством лишь стандартных средств. Это исключает, скажем, gRPC где существует необходимость использования механизма кодогенерации
- Наглядность, в том плане что для разработчика-пользователя интерфейса должно уходить меньше времени на его изучение.

---
## Подготовка баз данных
Далее я подготовил 5 баз данных различной структуры и огранизации общим объемом в более чем 900 миллионов записей. В целях тестирования часть была загружена в mysql, часть - в postgresql.

---
## Подсистема информационного поиска: архитектура
(всё согласно рисунку)

---
## Подсистема информационного поиска: поток данных
(всё согласно рисунку)

---
## Демонстрация
(видео)
Вы так же можете сами 