EdgeDB,一个图关系数据DBMS

最近 宣布发布 DBMS «EdgeDB 2.0», 它实现了关系图关系数据模型和 EdgeQL 查询语言,针对处理复杂的分层数据进行了优化。

EdgeDB 是一个开源数据库,旨在作为 SQL 和关系范式的精神继承者。 它的目标是解决一些困难的设计问题,这些问题使现有数据库的使用变得不必要地繁重。

由后台的 Postgres 查询引擎提供支持,EdgeDB 以与您相同的方式考虑模式:作为具有通过绑定连接的属性的对象。 它就像具有面向对象数据模型的关系数据库或具有严格模式的图形数据库。 我们称之为图的关系数据库。

关于 EdgeDB

该项目正在开发为 PostgreSQL 的插件。 客户端库是为 Python、Go、Rust 和 TypeScript/Javascript 语言准备的。

EdgeDB 不是基于表的数据模型 使用基于对象类型的声明性系统。 使用引用绑定代替外键(foreign key)来确定类型之间的关系(一个对象可以用作另一个对象的属性)。

索引可用于加速查询处理。 还 支持强属性类型等功能、属性值约束、计算属性和存储过程。 EdgeDB 对象存储模式的一些特性,有点让人想起 ORM,包括混合模式、绑定不同对象的属性以及支持嵌入式 JSON 的能力。

提供内置工具进行迁移 存储架构:更改单独的esdl文件中指定的架构后,只需运行命令“edgedb migration create”,DBMS将分析架构中的差异并交互生成脚本。 迁移到新架构。 架构修改历史被自动跟踪。

对于查询,GraphQL 查询语言和 作为自己的语言 EdgeDB,它是对分层数据的 SQL 的改编。 查询结果不是列表,而是结构化格式,而不是子查询和 JOIN,EdgeQL 查询可以指定为另一个查询中的表达式。 支持事务和周期。

EdgeDB 2.0 主要新特性

在推出的新版本中, 添加了集成的 Web 界面 用于数据库管理 允许查看和编辑数据,运行 EdgeQL 查询 并分析使用的存储方案。 该界面使用“edgedb ui”命令启动,之后通过访问 localhost 即可使用。

表达 实施“GROUP”以允许数据分区和聚合 并使用任意 EdgeQL 表达式对数据进行分组,类似于 SELECT 操作中的分组。

在对象级别控制访问的能力, 访问规则在存储模式级别定义,允许您限制在选择、插入、删除和更新操作中使用特定对象集。 例如,您可以添加仅允许作者更新帖子的规则。

还强调了 增加了使用全局变量的能力 在存储方案中。 为了绑定到用户,提出了一个新的全局变量。

在其他突出的变化中:

  • Rust 语言的官方客户端库已经准备好。
  • EdgeDB 二进制协议已经稳定,它可以在同一个网络连接中同时处理多个不同的会话,通过 HTTP 转发,使用全局变量和本地状态。
  • 添加了对定义值范围(范围)的类型的支持。
  • 添加了对套接字激活的支持,它允许不将服务器驱动程序保留在内存中,并且仅在尝试建立连接时才启动它(对于节省开发系统上的资源很有用)。

最后 对于那些有兴趣了解更多信息的人,他们应该知道代码是用 Python 和 Rust 编写的,并且是在 Apache 2.0 许可下发布的。

您可以在以下位置了解更多信息 以下链接。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。