Кто и зачем создает аналог SQL для запросов к графовым базам данных, когда выйдет официальная версия стандарт и при чем здесь Cypher из Neo4j.
Что такое GQL и кто его разрабатывает
В рамках продвижения нашего курса по графовым алгоритмам в бизнес-приложениях мы часто рассказываем про инструменты хранения и анализа графовых данных. В частности, здесь рассматривали 5 языков запросов к графам, используемыми в популярных NoSQL-СУБД этой категории. Многообразие графовых баз данных привело к появлению множества языков запросов, каждый из которых используется внутри конкретного решения. Подобная ситуация когда-то наблюдалась и в области реляционных СУБД, пока в 1986 году не вышла первая официальная версия стандарта ANSI SQL, который сегодня используется во всех реляционных и многих NoSQL-базах.
В начале 2017 года началась работа по созданию GQL (Graph Query Language) — международного стандартного языка для запросов графов. Работа ведется под эгидой ISO SC32/WG3 и отражена в манифесте GQL от мая 2018 года. GQL позиционируется как надежный язык декларативных графовых запросов, основанный на SQL и объединяющий проверенные идеи существующих языков openCypher, PGQL, GSQL и G-CORE, включая запросы на поиск путей, компоновку графа (включение представлений) и поддержку схемы. Публикацию стандарта планируется завершить в апреле 2024 года и выпустить под названием ISO/IEC 39075 Информационные технологии. Языки баз данных. GQL.
Ожидается, что стандарт GQL будет состоять из нескольких частей, которые включают:
- спецификации из SQL/Framework и SQL/Foundation (ISO/IEC JTC1 9075:2016, части 1 и 2), в т.ч. некоторые скалярные типы данных, а также операции, функции и предикаты для них, модель транзакции (уровень изоляции, COMMIT, ROLLBACK и пр.), модель безопасности, модель клиента и модель сеанса;
- шаблоны сопоставления графов (Graph Pattern Matching, GPM) c Property Graph Queries в SQL (SQL/PGQ:2023);
- специальные возможности GQL, включая типы данных только для графов (вершина, ребро, путь);
- графовые операции, не включенные в SQL:/PGQ:2023 (создание графа, вставка вершины/ребра, обновление и удаление), запросы;
- графовый аналог SQL/Schemata.
SQL/PGQ содержит две основные возможности:
- Синтаксис для создания графового представления свойств поверх существующих таблиц SQL;
- Синтаксис для включения запроса графа свойств (GPM) в функцию GRAPH_TABLE в предложении SQL FROM.
Проект стандарта GQL основан на языке графовых шаблонов сопоставления и представляет собой полноценный язык БД, включая поддержку вариантов с фиксированной и гибкой схемой, а также
- DML-запросы на создание, чтение, обновление и удаление вершин/ребер графа;
- DDL-запросы на создание типа графа и самого графа.
Помимо SQL/PGQ в основе GQL лежит openCypher – реализация языка Cypher, который разработан в популярной графовой СУБД Neo4j. В 2015 году был открыт исходный код Cypher, который затем трансформировался язык openCypher для включения возможностей обработки графов в различноые приложения и базы данных. Хотя Cypher был изначально разработан в Neo4j, сегодня этот язык и его реализация в виде openCypher используется более чем в 10 продуктах (ArcadeDB, AnzoGraph DB, Katana Graph, Memgraph) и востребован десятками тысяч разработчиков, а также специалистами по Data Science и аналитиками данных. Подобно SQL, Cypher и openCypher являются декларативными языками, позволяя пользователям просто указать, какие данные нужно получить, без объявления деталей реализации.
Узнайте больше про использование графовых алгоритмов и средств работы с ними для практического применения в реальных проектах аналитики больших данных на специализированных курсах нашего лицензированного учебного центра обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
Источники