Phát hành đồ thị quan hệ DBMS EdgeDB 2.0

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

Thay vì mô hình dữ liệu dựa trên bảng, EdgeDB sử dụng hệ thống khai báo dựa trên các loại đối tượng. Thay vì khóa ngoại, liên kết bằng tham chiếu được sử dụng để xác định mối quan hệ giữa các loại (một đối tượng có thể được sử dụng làm thuộc tính của đối tượng khác).

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

Các chỉ mục có thể được sử dụng để tăng tốc độ xử lý truy vấn. Các tính năng như gõ thuộc tính mạnh, hạn chế giá trị thuộc tính, thuộc tính được tính toán và thủ tục lưu trữ cũng được hỗ trợ. Các tính năng của sơ đồ lưu trữ đối tượng EdgeDB, phần nào gợi nhớ đến ORM, bao gồm khả năng kết hợp các lược đồ, liên kết các thuộc tính từ các đối tượng khác nhau và hỗ trợ JSON tích hợp.

Các công cụ tích hợp được cung cấp để lưu trữ di chuyển lược đồ - sau khi thay đổi lược đồ được chỉ định trong một tệp esdl riêng biệt, chỉ cần chạy lệnh “tạo di chuyển edgedb” và DBMS sẽ phân tích sự khác biệt trong lược đồ và tạo ra một tập lệnh tương tác để di chuyển sang lược đồ mới. Lịch sử thay đổi lược đồ được tự động theo dõi.

Để tạo truy vấn, cả ngôn ngữ truy vấn GraphQL và ngôn ngữ EdgeDB độc quyền, là ngôn ngữ chuyển thể từ SQL cho dữ liệu phân cấp, đều được hỗ trợ. Thay vì danh sách, kết quả truy vấn được định dạng theo cách có cấu trúc và thay vì truy vấn con và THAM GIA, bạn có thể chỉ định một truy vấn EdgeQL làm biểu thức trong một truy vấn khác. Giao dịch và chu kỳ được hỗ trợ.

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

Trong phiên bản mới:

  • Добавлен встроенный web-интерфейс для администрирования БД, позволяющий просматривать и редактировать данные, выполнять запросы EdgeQL и анализировать применяемую схему хранения. Интерфейс запускается командой «edgedb ui», после выполнения которой становится доступен при обращении к localhost.
    Phát hành đồ thị quan hệ DBMS EdgeDB 2.0
  • Реализовано выражение «GROUP», позволяющее секционировать и агрегировать данные и выполнять группировку данных по произвольным выражениям EdgeQL по аналогии с группировкой в операции SELECT.
  • Возможность управления доступом на уровне объектов. Правила доступа определяются на уровне схемы хранения и позволяют ограничить возможность использования определённого набора объектов в операциях выборки, вставки, удаления и обновления. Например, можно добавить правило, разрешающее обновление публикации только автору.
  • Добавлена возможность использования глобальных переменных в схеме хранения. Для привязки к пользователю предложена новая глобальная переменная current_user.
  • Добавлена поддержка типов, определяющих диапазоны значений (range).
  • Подготовлена официальная клиентская библиотека для языка Rust.
  • Стабилизирован бинарный протокол EdgeDB, в котором появилась возможность обработки одновременно нескольких разных сеансов в рамках одного сетевого соединения, проброса через HTTP, использования глобальных переменных и локальных состояний.
  • Добавлена поддержка активации по сокету, позволяющая не держать серверный обработчик в памяти и запускать его только при попытке установки соединения (полезно для экономии ресурсов на системах разработчиков).

Nguồn: opennet.ru

Thêm một lời nhận xét