ការចេញផ្សាយក្រាហ្វទំនាក់ទំនង DBMS EdgeDB 2.0

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

ជំនួសឱ្យគំរូទិន្នន័យផ្អែកលើតារាង EdgeDB ប្រើប្រព័ន្ធប្រកាសដោយផ្អែកលើប្រភេទវត្ថុ។ ជំនួសឱ្យសោបរទេស ការភ្ជាប់ដោយសេចក្តីយោងត្រូវបានប្រើដើម្បីកំណត់ទំនាក់ទំនងរវាងប្រភេទ (វត្ថុមួយអាចត្រូវបានប្រើជាទ្រព្យសម្បត្តិនៃវត្ថុមួយផ្សេងទៀត) ។

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

នៅក្នុងកំណែថ្មី៖

  • Добавлен встроенный web-интерфейс для администрирования БД, позволяющий просматривать и редактировать данные, выполнять запросы EdgeQL и анализировать применяемую схему хранения. Интерфейс запускается командой «edgedb ui», после выполнения которой становится доступен при обращении к localhost.
    ការចេញផ្សាយក្រាហ្វទំនាក់ទំនង DBMS EdgeDB 2.0
  • Реализовано выражение «GROUP», позволяющее секционировать и агрегировать данные и выполнять группировку данных по произвольным выражениям EdgeQL по аналогии с группировкой в операции SELECT.
  • Возможность управления доступом на уровне объектов. Правила доступа определяются на уровне схемы хранения и позволяют ограничить возможность использования определённого набора объектов в операциях выборки, вставки, удаления и обновления. Например, можно добавить правило, разрешающее обновление публикации только автору.
  • Добавлена возможность использования глобальных переменных в схеме хранения. Для привязки к пользователю предложена новая глобальная переменная current_user.
  • Добавлена поддержка типов, определяющих диапазоны значений (range).
  • Подготовлена официальная клиентская библиотека для языка Rust.
  • Стабилизирован бинарный протокол EdgeDB, в котором появилась возможность обработки одновременно нескольких разных сеансов в рамках одного сетевого соединения, проброса через HTTP, использования глобальных переменных и локальных состояний.
  • Добавлена поддержка активации по сокету, позволяющая не держать серверный обработчик в памяти и запускать его только при попытке установки соединения (полезно для экономии ресурсов на системах разработчиков).

ប្រភព: opennet.ru

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