ការចេញផ្សាយស្ថេរភាពដំបូងនៃក្រាហ្វទំនាក់ទំនង 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; }

សន្ទស្សន៍អាចត្រូវបានប្រើដើម្បីបង្កើនល្បឿនដំណើរការសំណួរ។ លក្ខណៈពិសេសដូចជាការវាយបញ្ចូលអចលនទ្រព្យខ្លាំង ការរឹតបន្តឹងតម្លៃអចលនទ្រព្យ លក្ខណៈសម្បត្តិដែលបានគណនា និងនីតិវិធីដែលបានរក្សាទុកក៏ត្រូវបានគាំទ្រផងដែរ។ លក្ខណៈពិសេសនៃគម្រោងផ្ទុកវត្ថុ EdgeDB ដែលនឹកឃើញខ្លះៗពី ORM រួមមានសមត្ថភាពក្នុងការលាយគ្រោងការណ៍ ភ្ជាប់លក្ខណសម្បត្តិពីវត្ថុផ្សេងៗគ្នា និងការគាំទ្រ JSON រួមបញ្ចូលគ្នា។

ឧបករណ៍ដែលភ្ជាប់មកជាមួយត្រូវបានផ្តល់ជូនសម្រាប់ការរក្សាទុកការធ្វើចំណាកស្រុកគ្រោងការណ៍ - បន្ទាប់ពីផ្លាស់ប្តូរគ្រោងការណ៍ដែលបានបញ្ជាក់នៅក្នុងឯកសារ esdl ដាច់ដោយឡែកគ្រាន់តែដំណើរការពាក្យបញ្ជា "edgedb migration create" ហើយ DBMS នឹងវិភាគភាពខុសគ្នានៅក្នុងគ្រោងការណ៍ និងបង្កើតស្គ្រីបអន្តរកម្មសម្រាប់ការផ្លាស់ប្តូរទៅ គ្រោងការណ៍ថ្មី។ ប្រវត្តិនៃការផ្លាស់ប្តូរគ្រោងការណ៍ត្រូវបានតាមដានដោយស្វ័យប្រវត្តិ។

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

ប្រភព: opennet.ru

បន្ថែមមតិយោបល់