关系图 DBMS EdgeDB 的第一个稳定版本

EdgeDB DBMS 的第一个稳定版本现已推出,它是 PostgreSQL 的附加组件,实现了关系图数据模型和 EdgeQL 查询语言,针对复杂的分层数据进行了优化。 该代码是用 Python 和 Rust 编写的,并根据 Apache 2.0 许可证分发。 客户端库适用于 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 } );

来源: opennet.ru

添加评论