Тема: РАЗРАБОТКА МЕХАНИЗМОВ ПОДДЕРЖКИ РАБОТЫ С РЕЛЯЦИОННЫМИ И ГРАФОВЫМИ БАЗАМИ ДАННЫХ В СПЕЦИФИКАЦИИ GRAPHQL ДЛЯ ФРЕЙМВОРКА DJANGO
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
1. ОСНОВНЫЕ ПОДХОДЫ К ИСПОЛЬЗОВАНИЮ GRAPHQL И
ГРАФОВЫХ БАЗ ДАННЫХ 5
1.1 Разновидности API в протоколе HTTP 5
1.2 Спецификация GraphQL API 7
1.3 Графовая база данных Neo4j 8
1.4 Поиск в глубину в графовой базе данных Neo4j 9
1.5 Совместная работа GraphQL API и Neo4j. Аналоги 10
2. РАЗРАБОТКА БИБЛИОТЕКИ NEOMODEL 12
2.1 Проектирование разработки 12
2.2 Расширенные критерии поиска 13
2.3 Выборка объектов по критериям отношений 14
2.4 Пагинация объектов в neomodel-next 15
3. РАЗРАБОТКА БИБЛИОТЕКИ GRAPHENE-NEO4J 17
3.1 Проектирование разработки библиотеки 17
3.2 Автоматическое определение полей для GraphQL-типов 17
3.3 Реализация функций фильтрации, сортировки и пагинации 20
3.4 Система middleware аутентификации 24
3.5 Автоматическая генерация GraphQL-типов 27
4. ИНТЕГРАЦИЯ ФУНКЦИИ РЕКУРСИВНОГО ПОИСКА В
СПЕЦИФИКАЦИЮ GRAPHQL 29
4.1 Синтаксис 29
4.2 Реализация рекурсивного поиска в graphql-core 30
ЗАКЛЮЧЕНИЕ 33
СПИСОК ЛИТЕРАТУРЫ 34
ГЛОССАРИЙ 37
ПРИЛОЖЕНИЕ. ИСХОДНЫЙ КОД NEOMODEL-NEXT 39
📖 Введение
• REST API [2]
• JSON API [3]
• GraphQL API [4]
Перечисленные стандарты API обеспечивают передачу данных между узлами сети со своим набором правил. Спецификации REST и JSON API - это довольно устоявшиеся форматы, предназначенные для обмена данными, которые имеют ряд своих недостатков. GraphQL API разрабатывался с целью решения этих недостатков.
В спецификации GraphQL решаются проблемы over-fetching^ и under- fetching’a данных. Клиенту предоставляется возможность выборочно получать атрибуты у сущности и её смежные отношения, в отличие от REST и JSON API [5]. В спецификации GraphQL используется древовидная структура построения запроса по отношениям, которая, в свою очередь, отражает схожесть со схемой графовой базы данных, построенной на ER-сущностях проекта.
В настоящий момент, графовые СУБД используются в проектах и активно набирают популярность за счет удобного представления данных в формате графа, имеют возможность масштабирования и обладают высокой производительностью в операциях с графами [6].
Графовые СУБД показывают наибольшую производительность для вычисления задачи поиска в глубину, относительно реляционных баз данных [7].
Актуальность задачи поиска в глубину подчеркивается, например, тем фактом, что среди двух десятков самых популярных веб-сайтов 2018 года алгоритм поиска в глубину используется в 10 из них. Одним из примеров является реализация функционала ответа на комментарий в древовидной структуре в социальных сетях и форумах [8]. Функции алгоритма поиска в глубину можно применить в приложении графической оболочки GraphiQL - как результат получения настроек для пользовательской схемы данных.
Основная проблема заключается в том, что на данный момент не реализована интеграция спецификации GraphQL с графовой СУБД Neo4j, то есть нет реализованных инструментов для работы с графами, поддерживающих, например, указанную выше функцию рекурсивного поиска для объектов из базы данных.
Объект исследования - библиотека graphene-neo4j, позволяющая интегрировать спецификацию GraphQL API в работу с графовой СУБД Neo4j.
Предмет исследования - процесс разработки библиотеки, поддерживающей работу с графовыми базами данных в спецификации GraphQL.
Целью дипломной работы является разработка соответствующей библиотеки для серверного фреймворка Django.
Для достижения поставленной цели необходимо решение следующих задач:
1. исследование предметной области:
о изучение концепций и сервисов предоставления API;
о исследование спецификации GraphQL и существующих библиотек;
о исследование функционала и настроек СУБД Neo4j.
2. анализ и проектирование библиотек;
3. разработка библиотек:
о кастомизация OGM-библиотеки для графовой базы Neo4j;
о разработка библиотеки graphene-neo4j;
о интеграция технологии рекурсивного поиска в библиотеку graphql-core.
4. проведение анализа и тестирование библиотек.
✅ Заключение
Библиотека предоставляет готовый набор функций для разработки GraphQL API, в которых присутствует:
• автоматическое определение и работа с ER-сущностями;
• функции фильтрации, сортировки и пагинации, настраиваемые со стороны клиента;
• GraphQL-типы для предоставления информации о реберных соединениях из графой базы данных;
• система middleware-аутентификации.
В спецификацию GraphQL интегрирован модуль поиска в глубину, выполняемый через использование директивы @recursive с возможностью указания глубины рекурсии depth. Библиотека graphene-neo4j имеет возможность автоматически генерировать исходный код GraphQL среды для ER- сущностей, что позволяет ускорить разработку серверной части веб-приложения.
Результаты выпускной квалификационной работы имеют практическое применение в сервисах предоставления API, в которых за основу используется графовая база данных Neo4j.
Полученные результаты представлены на XI Международной научной конференции «Электронная Казань 2019» и описаны в публикации «Интеграция спецификации GraphQL с графовыми базами данных в фреймворках вебразработки»



