Статья опубликована в рамках: CXX Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 12 декабря 2022 г.)
Наука: Информационные технологии
Скачать книгу(-и): Сборник статей конференции
дипломов
ИССЛЕДОВАНИЕ ВОЗМОЖНОСТЕЙ GRAPHQL ДЛЯ РАЗРАБОТКИ ПРИЛОЖЕНИЙ
EXPLORING GRAPHQL CAPABILITIES FOR APPLICATION DEVELOPMENT
Anton Iurkov
undergraduate, Department of System Modeling and Computer-Aided Design, Moscow Aviation Institute,
Russia, Moscow
Pavel Keino
Scientific Supervisor, Associate Professor, Department of System Modeling and Computer-Aided Design, Moscow Aviation Institute,
Russia, Moscow
АННОТАЦИЯ
GraphQL - язык запросов данных и язык манипулирования данных, который создан с целью андерфетчинга и оверфетчинга данных, полученных при обычных REST запросах. В GraphQL можно выбирать именно те данные, которые будут использованы в будущем.
ABSTRACT
Graphql is a data query language and a data manipulation language that was created for the purpose of underfetching and overfetching data obtained with normal REST queries. In GraphQL, you can choose exactly the data that will be used in the future.
Ключевые слова: CMS, система, разработка, платформа/
Keywords: CMS, system, development, platform/
GraphQL набирает все большую популярность у разработчиков засчет его простоты и легкости использования. Для его использования достаточно установить GraphQL сервер, например, для Java Spring Framework есть несколько схожих реализаций. Для получения ответа от GraphQL сервера необходимо послать POST запрос на путь graphql с необходимым RequestBody. В одном теле запроса может находиться сразу несколько запросов к нескольким таблицам базы данных.
Так как можно выбирать, какие поля запросить и какие нет, это решает проблему андерфетчинга (то есть недостаточности данных при запросе) или оверфетчинга (когда есть лишние неиспользуемые данные).
Но несмотря на такие плюсы, как возможность самому выбирать поля, решение двух вышеперечисленных проблем, при стандартной реализации есть одна знаменитая проблема - n+1 проблема. Она возникает, когда при 1:n маппинге таблиц вместо одного запроса ORM посылает n запросов выборки по id каждого элемента, то есть по каждому id. Эта проблема решается добавляем аннотаций к n:1 полям. Тогда множество запросов будут объединены в один с использованием join'ов. Создание и обработку таких запросов берет на себя ORM, и в случае Spring Framework - Spring Data JPA.
GraphQL поддерживает не только выборку данных, но и создание новых сущностей в таблице. GraphQL использует все средства ORM для этого и отправляет на ORM запрос, который потом работает как обычно при работе с БД. Дополнительным преимуществом GraphQL является поддержка серверной обработки запросов GraphQL через HTTP, WebSocket и RSocket. Это позволяет гибко и современно настраивать сервер.
Сейчас у GraphQL есть большой потенциал, проект активно развивается и сейчас все больше компаний используют его в своих проектах.
Список литературы:
- Документация по GraphQL [электронный ресурс] – Режим доступа. – URL: https://docs.spring.io/spring-graphql/docs/current-SNAPSHOT/reference/html/
- Исследование ORM и GraphQL [электронный ресурс] – Режим доступа. – URL: https://habr.com/ru/company/haulmont/blog/451986/
дипломов
Оставить комментарий