Ukukhutshwa kwegrafu yobudlelwane DBMS EdgeDB 2.0

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

Esikhundleni semodeli yedatha esekelwe kwitafile, i-EdgeDB isebenzisa inkqubo yokubhengeza esekelwe kwiintlobo zezinto. Esikhundleni sezitshixo zangaphandle, ukudibanisa ngereferensi kusetyenziselwa ukuchaza ubudlelwane phakathi kweentlobo (into enye ingasetyenziswa njengepropati yenye into).

type Person { required property name -> str; } type Movie { required property title -> str; multi link actors -> Person; }

Izalathisi zingasetyenziselwa ukukhawulezisa ukusetyenzwa kwemibuzo. Iimpawu ezinjengokuchwethezwa kwepropathi eyomeleleyo, izithintelo zexabiso lepropati, iipropathi ezibaliweyo, kunye neenkqubo ezigciniweyo nazo ziyaxhaswa. Iimpawu zeskimu sokugcina into ye-EdgeDB, ekhumbuza ngandlela-thile i-ORM, iquka ukukwazi ukuxuba i-schemas, iipropati zekhonkco ezivela kwizinto ezahlukeneyo, kunye nenkxaso ye-JSON edibeneyo.

Izixhobo ezakhelwe-ngaphakathi zibonelelwe ukugcina ukufuduka kwe-schema - emva kokutshintsha i-schema echazwe kwifayile ye-esdl eyahlukileyo, sebenzisa nje "i-edgedb migration create" umyalelo kwaye i-DBMS iya kuhlalutya iyantlukwano kwi-schema kwaye isebenzisane ivelise iskripthi sokufudukela kwi-schema. iskimu esitsha. Imbali yotshintsho lweschema ilandelwa ngokuzenzekelayo.

Ukuvelisa imibuzo, zombini ulwimi lwemibuzo yeGraphQL kunye nolwimi lwe-EdgeDB lobunikazi, oluyi-adaptation ye-SQL yedatha ye-hierarchical, iyaxhaswa. Esikhundleni soluhlu, iziphumo zemibuzo zifomathwa ngendlela ecwangcisiweyo, kwaye endaweni ye-subqueries kunye ne-JOIN, ungakhankanya umbuzo omnye we-EdgeQL njengentetho ngaphakathi komnye umbuzo. Iintengiselwano kunye nemijikelo ziyaxhaswa.

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’ } ) } for number in {0, 1, 2, 3} union ( select { number, number + 0.5 } );

Kwinguqulelo entsha:

  • Добавлен встроенный web-интерфейс для администрирования БД, позволяющий просматривать и редактировать данные, выполнять запросы EdgeQL и анализировать применяемую схему хранения. Интерфейс запускается командой «edgedb ui», после выполнения которой становится доступен при обращении к localhost.
    Ukukhutshwa kwegrafu yobudlelwane DBMS EdgeDB 2.0
  • Реализовано выражение «GROUP», позволяющее секционировать и агрегировать данные и выполнять группировку данных по произвольным выражениям EdgeQL по аналогии с группировкой в операции SELECT.
  • Возможность управления доступом на уровне объектов. Правила доступа определяются на уровне схемы хранения и позволяют ограничить возможность использования определённого набора объектов в операциях выборки, вставки, удаления и обновления. Например, можно добавить правило, разрешающее обновление публикации только автору.
  • Добавлена возможность использования глобальных переменных в схеме хранения. Для привязки к пользователю предложена новая глобальная переменная current_user.
  • Добавлена поддержка типов, определяющих диапазоны значений (range).
  • Подготовлена официальная клиентская библиотека для языка Rust.
  • Стабилизирован бинарный протокол EdgeDB, в котором появилась возможность обработки одновременно нескольких разных сеансов в рамках одного сетевого соединения, проброса через HTTP, использования глобальных переменных и локальных состояний.
  • Добавлена поддержка активации по сокету, позволяющая не держать серверный обработчик в памяти и запускать его только при попытке установки соединения (полезно для экономии ресурсов на системах разработчиков).

umthombo: opennet.ru

Yongeza izimvo