СУБД EdgeDB переименована в Gel. Выпуск Gel 6.0

Разработчики СУБД EdgeDB объявили о переименовании проекта в Gel. Одновременно сформирован новый значительный релиз – Gel 6.0. В качестве причины смены имени упоминается желание избавиться от вводящих в заблуждение коннотаций, вызванных использованием слова “еdge”, из-за которого многие воспринимают проект как СУБД для edge-вычислений или как графо-ориентированную СУБД. Переименование затронуло только элементы бренда. Структура проекта, цели и команда остались прежними. Утилиты и библиотеки в новом выпуске переименованы, но для обеспечения обратной совместимости сохранена возможность использования старых имён через символические ссылки и обвязки.

Проект развивается в форме надстройки над PostgreSQL, реализующей реляционно-графовую модель данных и язык запросов EdgeQL, оптимизированный для работы со сложными иерархическими данными. Код написан на языках Python и Rust (парсер и критичные к производительности части), и распространяется под лицензией Apache 2.0. Клиентские библиотеки подготовлены для языков Python, Go, Rust, .NET, Elixir и TypeScript/Javascript. Предоставляется инструментарий командной строки для управления СУБД и интерактивного выполнения запросов (REPL).

Вместо модели данных на основе таблиц в Gel применяется декларативная система на основе объектных типов. Вместо внешних ключей (foreign key) для определения связи между типами применяется связывание ссылками (один объект может использоваться как свойство другого объекта).

type Person { required name: str; } type Movie { required title: str; multi actors: Person; }

Поддерживаются такие возможности как строгая типизация свойств, ограничения значений свойств, вычисляемые свойства и хранимые процедуры. Из особенностей объектной схемы хранения Gel, которая чем-то напоминает ORM, отмечается возможность смешивания схем, связывания свойств из разных объектов и интегрированная поддержка JSON. Для ускорения обработки запросов могут применяться индексы.

Предоставляются встроенные инструменты для миграции схемы хранения – после изменения схемы, задаваемой в отдельном esdl-файле, достаточно выполнить команду “gel migration create” и СУБД проанализирует различия в схеме и в интерактивном режиме сгенерирует скрипт для перехода на новую схему. Автоматически отслеживается история изменения схемы.

Для формирования запросов поддерживается язык запросов GraphQL и собственный язык EdgeQL, представляющий собой адаптацию SQL для иерархических данных. Вместо списков результаты запроса оформляются в структурированном виде, а вместо подзапросов и операций JOIN предоставляется возможность указания одного запроса EdgeQL в качестве выражения внутри другого запроса. Поддерживаются транзакции и циклы.

select Movie { title, actors: { name } } filter .title = “The Matrix” insert Movie { title := “The Matrix Resurrections”, actors := ( select Person filter .name in { ‘Keanu Reeves’, ‘Carrie-Anne Moss’, ‘Laurence Fishburne’ } ) }

Основные изменения в Gel 6.0:

  • Добавлена возможность использования традиционных SQL-запросов при подключении к СУБД при помощи протокола Gel или в режиме протокола PostgreSQL. Предполагается, что поддержка SQL упростит миграцию на Gel существующих проектов, которые теперь можно постепенно переводить с SQL, продолжая использовать старые SQL-клиенты и SQL ORM. Проекты, изначально использующие EdgeQL, смогут задействовать дополнительные возможности, которые есть в SQL, но пока не реализованы в EdgeQL, такие как оконные функции, рекурсивные запросы и явные блокировки.
  • Добавлена поддержка обновления по месту, не требующая создания и перезаливки дампа БД при переходе на новый значительный релиз. При обновлении с EdgeDB 5.x до Gil 6.0 необходимо использовать старый метод, но при переходе на c Gil 6.x на 7.0 перезаливка дампа не потребуется.
  • Обеспечено сохранение статистики о производительности запросов, которая доступна через объекты sys::QueryStats.
  • Добавлена поддержка PostgreSQL-расширения PostGIS для хранения пространственных данных, используемых в географических информационных системах.
  • Добавлена библиотека std::net для отправки сетевых запросов (поддерживается HTTP) в асинхронном режиме.​
  • В дополнение ext::auth​ добавлена поддержка настройки провайдеров OpenID Connect.
  • В дополнении ext::ai​ обновлён список список поддерживаемых больших языковых моделей от OpenAI, Anthropic и Mistral.
  • Предоставлена возможность подключения дополнительных обработчиков для команд в утилите gel.
  • В EdgeQL упрощена семантика для нахождения путей между узлами графа.
  • В gel.toml добавлена настройка “[[watch]]”, позволяющая запускать скрипты при изменении указанных файлов.
  • В ORM Drizzle реализована поддержка Gel.

Release. Ссылка here.