Rilaxx tal-grafika relazzjonali DBMS EdgeDB 2.0

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

Minflok mudell ta 'dejta bbażat fuq tabella, EdgeDB juża sistema dikjarattiva bbażata fuq tipi ta' oġġetti. Minflok ċwievet barranin, rabta b'referenza tintuża biex tiddefinixxi r-relazzjoni bejn it-tipi (oġġett wieħed jista 'jintuża bħala proprjetà ta' oġġett ieħor).

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

L-indiċijiet jistgħu jintużaw biex iħaffu l-ipproċessar tal-mistoqsijiet. Karatteristiċi bħal tajpjar qawwi tal-proprjetà, restrizzjonijiet tal-valur tal-proprjetà, proprjetajiet ikkalkulati u proċeduri maħżuna huma wkoll appoġġjati. Karatteristiċi tal-iskema ta 'ħażna ta' oġġetti EdgeDB, li hija kemmxejn reminixxenti ta 'ORM, jinkludu l-abbiltà li tħallat skemi, torbot proprjetajiet minn oġġetti differenti, u appoġġ JSON integrat.

Għodod inkorporati huma pprovduti għall-ħażna tal-migrazzjoni tal-iskema - wara li tbiddel l-iskema speċifikata f'fajl esdl separat, mexxi biss il-kmand "edgedb migration create" u d-DBMS janalizza d-differenzi fl-iskema u jiġġenera b'mod interattiv skript għall-migrazzjoni lejn il- skema ġdida. L-istorja tal-bidliet fl-iskema tiġi segwita awtomatikament.

Biex tiġġenera mistoqsijiet, kemm il-lingwa tal-mistoqsijiet GraphQL kif ukoll il-lingwa EdgeDB proprjetarja, li hija adattament tal-SQL għal data ġerarkika, huma appoġġjati. Minflok listi, ir-riżultati tal-mistoqsijiet huma fformattjati b'mod strutturat, u minflok subqueries u JOINs, tista 'tispeċifika mistoqsija EdgeQL waħda bħala espressjoni fi mistoqsija oħra. Tranżazzjonijiet u ċikli huma appoġġjati.

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 } );

Fil-verżjoni l-ġdida:

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

Sors: opennet.ru

Żid kumment