СОДЕРЖАНИЕ 2
ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ 3
ВВЕДЕНИЕ 4
Глава 1. ВЫБОР СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ 6
1.1 Реляционная СУБД PostgreSQL 8
1.2 Документо-ориентированная СУБД MongoDB 9
1.3 Г рафовая СУБД Neo4j 11
1.4 Сравнение производительности выбранных СУБД 12
1.5 Анализ результатов 16
Глава 2. СТРУКТУРА РАЗРАБАТЫВАЕМОГО СЕРВИСА 19
2.1 Архитектура приложения 19
2.2 Структура базы данных 21
Глава 3. РАЗРАБОТКА ПРОГРАММНОЙ ЧАСТИ ПРИЛОЖЕНИЯ 23
3.1 Слой DAO 23
3.1.1 JCypherRepository 24
3.1.2 Neo4jDriverRepository 27
3.2 Наполнение базы данных 29
3.3 Поиск авиарейсов 31
3.3.1 Написание запроса Cypher 32
3.3.2 Разработка репозитория 34
3.4 Разработка публичного API 39
ЗАКЛЮЧЕНИЕ 43
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 44
В настоящее время большая часть повседневных процессов автоматизирована. Хорошим примером подобной автоматизации являются системы онлайн бронирования авиаперелетов. Они помогают клиентам искать авиарейсы, указав лишь желаемые даты для путешествия, при этом оставляя за собой выбор авиакомпании, основываясь на протяженности перелета, количестве пересадок и цене билетов.
Основной проблемой подобных сервисов является тот факт, что у них нет прямого доступа к списку всех авиарейсов. Эти данные хранятся у трех крупных мировых компаний. Большинство российских предприятий для получения информации об авиарейсах используют сервис SabreSonic . Каждое обращение к данному сервису авиакомпании оплачивают по заданным тарифам, что, впоследствии, приводит к образованию наценок на авиабилеты.
Решение проблемы дорогостоящего поиска авиарейсов с увеличением скорости поиска для авиакомпаний, предоставляющих подобные услуги для пользователей, представляет собой актуальную задачу.
Следовательно, для того, чтобы создать систему быстрого, но в то же время недорогого поиска авиарейсов, необходимо разработать подход, существенно сокращающий количество обращений к SabreSonic, сохраняя при этом высокие показатели скорости поиска.
Целью дипломной работы является разработка сервиса для поиска авиарейсов, использующего подходы в хранении и получении информации отличные от тех, что используются в современных авиакомпаниях.
Поиск авиарейсов должен производиться по максимально доступному количеству параметров без утяжеления запросов к базе данных.
Разрабатываемый сервис должен предоставлять возможность для доступа через программный интерфейс для легкого внедрения в уже разработанные сайты и мобильные приложения,
На текущий момент не существует общедоступных сервисов, однозначно решающих данную проблему. Авиакомпании разрабатывают подобные сервисы самостоятельно и не предусматривают их продажи сторонним компаниям, т.к. это прямым образом влияет на прибыльность предприятия.
Для достижения цели были решены следующие задачи:
1. Выбор максимально эффективной СУБД для использования в проекте для поиска авиарейсов.
2. Разработка наиболее выгодного алгоритма для процедур получения информации об авиарейсах и последующего поиска маршрутов.
3. Создание публичного АР1для взаимодействия с разработанным сервисом сторонними клиентами.
В первой главе данной дипломной работе описана процедура выбора СУБД для разрабатываемого приложения. Производится сравнение реляционных, документо-ориентированных и графовых систем управления базами данных с последующим анализом производительности систем в контексте поставленной задачи.
Во второй главе автор описывает архитектуру разрабатываемого приложения. Обсуждается порядок взаимодействия компонентов системы, а так же структура сущностей выбранной СУБД для последующей манипуляции с данными.
В третьей главе дипломной работы описывается программная часть приложения. Автор описывает основные моменты реализации каждого из компонентов системы, а так же настройку их взаимодействия.
В дипломной работе рассмотрена важная проблема большинства авиакомпаний - дорогостоящая поддержка систем поиска авиарейсов. Решение данной проблемы нацелено в первую очередь на помощь авиакомпаниям, однако высокая скорость поиска важна также и для пользователей систем подобного класса.
Результатом работы является готовый к использованию сервис, который отвечает следующим требованиям:
1. Возможность поиска авиарейсов по широкому спектру параметров.
2. Поддержание высокой скорости поиска
3. Уменьшение количества обращений к Sabre
4. Возможность работы при отказе систем Sabre
Использованное решение существенно сокращает количество обращений к базам данных SabreSonic, что позволяет авиакомпании уменьшить затраты на обслуживание систем поиска авиарейсов.
Использование графовой БД дало сильный прирост к скорости выборки данных по сравнению с реляционными базами данных, в то же время сохраняя простоту разработки и поддержки программных средств для доступа к БД.
Описанное решение протестировано на тестовых данных авиакомпании и сейчас находится на стадии внедрения в существующие механизмы поиска.
В данной работе были использованы передовые технологии открытого стека Java: Spring Framework, Neo4j, Quartz, JAX-WS, Apache CXF, Tomcat 8. Данные технологии обеспечивают кроссплатформенную совместимость.