Ntọhapụ kwụsiri ike nke mbụ nke eserese mmekọrịta DBMS EdgeDB

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

Вместо модели данных на основе таблиц в EdgeDB применяется декларативная система на основе объектных типов. Вместо внешних ключей (foreign key) для определения связи между типами применяется связывание ссылками (один объект может использоваться как свойство другого объекта). type Person { required property name -> str; } type Movie { required property title -> str; multi link actors -> Person; }

Enwere ike iji ndenye aha iji mee ka nhazi ajụjụ dị ngwa. A na-akwadokwa atụmatụ dị ka mpịnye ihe onwunwe siri ike, mmachi uru ihe onwunwe, akụrụngwa agbakọtara na usoro echekwara. Akụkụ nke atụmatụ nchekwa ihe EdgeDB, nke dịtụ icheta ORM, gụnyere ike ịgwakọta schemas, njikọ njikọ sitere na ihe dị iche iche, yana nkwado JSON jikọtara ọnụ.

A na-enye ngwá ọrụ arụrụ arụ ọrụ maka ịchekwa schema njem - mgbe ịgbanwere atụmatụ akọwapụtara na faịlụ esdl dị iche, mee iwu "edgedb migration create" na DBMS ga-enyocha ọdịiche dị na atụmatụ ahụ wee mepụta edemede maka ịkwaga na . ọhụrụ schema. A na-enyocha akụkọ mgbanwe schema ozugbo.

Для формирования запросов поддерживается как язык запросов GraphQL, так и собственный язык EdgeDB, представляющий собой адаптацию 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’ } ) } for number in {0, 1, 2, 3} union ( select { number, number + 0.5 } );

isi: opennet.ru

Tinye a comment