關係圖DBMS EdgeDB 2.0發布

EdgeDB 2.0 DBMS 發布,它實現了關係圖資料模型和 EdgeQL 查詢語言,並針對複雜的分層資料進行了最佳化。 該程式碼是用 Python 和 Rust(解析器和效能關鍵部分)編寫的,並根據 Apache 2.0 許可證分發。 該專案正在作為 PostgreSQL 的附加元件進行開發。 客戶端程式庫適用於 Python、Go、Rust 和 TypeScript/Javascript。 提供 DBMS 管理和互動式查詢執行 (REPL) 的命令列工具。

EdgeDB 使用基於物件類型的聲明性系統,而不是基於表格的資料模型。 透過引用連結取代外鍵來定義類型之間的關係(一個物件可以用作另一個物件的屬性)。

type Person { 必需的屬性名稱 -> str; } type Movie { 必要的屬性 title -> str; 多連結參與者 -> 人; }

索引可用於加速查詢處理。 也支援強屬性類型、屬性值限制、運算屬性和預存程序等功能。 EdgeDB 物件儲存方案的功能有點讓人想起 ORM,包括混合模式、連結不同物件的屬性以及整合 JSON 支援的能力。

提供了內建模式遷移的內建工具 - 在更改單獨的 esdl 檔案中指定的模式後,只需執行「edgedb migration create」命令,DBMS 將分析模式中的差異並互動式產生用於遷移到新架構。 自動追蹤架構更改的歷史記錄。

為了產生查詢,支援 GraphQL 查詢語言和專有的 EdgeDB 語言(這是針對分層資料的 SQL 的改編版)。 查詢結果不是列表,而是以結構化​​方式格式化,並且您可以將一個 EdgeQL 查詢指定為另一個查詢中的表達式,而不是子查詢和 JOIN。 支援交易和週期。

select Movie { title, actor: { name } } filter .title = "The Matrix" insert Movie { title := "The Matrix Resurrections", Actor := ( 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”命令啟動,之後在存取本機主機時變得可用。
    關係圖DBMS EdgeDB 2.0發布
  • 已實作「GROUP」表達式,可讓您使用任意 EdgeQL 表達式對資料進行分區和聚合以及對資料進行分組,類似於 SELECT 操作中的分組。
  • 能夠控制物件層級的存取。 存取規則是在儲存架構層級定義的,允許您限制在取得、插入、刪除和更新作業中使用特定物件集的能力。 例如,您可以新增一條規則,僅允許作者更新出版品。
  • 新增了在儲存方案中使用全域變數的功能。 建議使用一個新的全域變數 current_user 來綁定到使用者。
  • 新增了對定義值範圍的類型的支援。
  • Rust 語言的官方客戶端程式庫已經準備好了。
  • EdgeDB 二進位協定已經穩定,使得可以在同一網路連線中同時處理多個不同的會話,透過 HTTP 轉發,使用全域變數和本機狀態。
  • 新增了對套接字啟動的支持,它允許您不將伺服器處理程序保留在記憶體中,並且僅在嘗試建立連接時運行它(對於節省開發人員系統上的資源很有用)。

來源: opennet.ru

添加評論