De earste stabile release fan 'e relasjonele grafyk 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; }

Yndeksen kinne brûkt wurde om queryferwurking te fersnellen. Funksjes lykas sterk typen fan eigendom, beheiningen foar eigendomwearde, berekkene eigenskippen, en opsleine prosedueres wurde ek stipe. Skaaimerken fan it EdgeDB-objekt opslachskema, dat wat tinkt oan in ORM, omfetsje de mooglikheid om skema's te mingjen, eigenskippen te keppeljen fan ferskate objekten, en yntegreare JSON-stipe.

Ynboude ark wurde levere foar it opslaan fan skemamigraasje - nei it feroarjen fan it skema spesifisearre yn in apart esdl-bestân, fier gewoan it kommando "edgedb migration create" út en de DBMS sil de ferskillen yn it skema analysearje en ynteraktyf in skript generearje foar migraasje nei de nij skema. De skiednis fan skemawizigingen wurdt automatysk folge.

Для формирования запросов поддерживается как язык запросов 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 } );

Boarne: opennet.ru

Add a comment