EdgeDB, a graph relational data DBMS

Recently the release of the DBMS «EdgeDB 2.0» was announced, which implements the relational graph relational data model and EdgeQL query language, optimized for working with complex hierarchical data.

EdgeDB is an open source database designed as a spiritual successor to SQL and the relational paradigm. Its goal is to solve some difficult design problems that make existing databases unnecessarily burdensome to use.

Powered by the Postgres query engine under the hood, EdgeDB thinks of schema the same way you do: as objects with properties connected by bindings. It is like a relational database with an object-oriented data model or a graph database with a strict schema. We call it a relational database of graphs.

About EdgeDB

The project is being developed as a plugin for PostgreSQL. The client libraries are prepared for the Python, Go, Rust and TypeScript/Javascript languages.

Instead of a table-based data model, EdgeDB uses a declarative system based on object types. Instead of foreign keys (foreign key) to determine the relationship between types reference binding is used (an object can be used as a property of another object).

Indexes can be used to speed up query processing. Also features such as strong property typing are supported, property value constraints, computed properties, and stored procedures. Some of the features of the EdgeDB object storage schema, somewhat reminiscent of ORM, include the ability to mix schemas, bind properties of different objects, and support for embedded JSON.

Built-in tools are provided to migrate the storage schema: After changing the schema specified in a separate esdl file, just run the command “edgedb migration create” and the DBMS will analyze the differences in the schema and generate a script interactively. to migrate to the new schema. Schema modification history is tracked automatically.

For querying, both the GraphQL query language and the as its own language EdgeDB, which is an adaptation of SQL for hierarchical data. Instead of lists, query results have a structured format, and instead of subqueries and JOINs, an EdgeQL query can be specified as an expression within another query. Transactions and cycles are supported.

Main new features of EdgeDB 2.0

In the new version that was presented, integrated web interface has been added for database administration allows to view and edit data, run EdgeQL queries and analyze the storage scheme used. The interface is started with the "edgedb ui" command, after which it is available by accessing localhost.

Expression "GROUP" was implemented to allow data partitioning and aggregation and grouping data using arbitrary EdgeQL expressions, similar to grouping in a SELECT operation.

Ability to control access at the object level, access rules are defined at the storage schema level and allow you to restrict the use of a specific set of objects in select, insert, delete, and update operations. For example, you can add a rule that allows only the author to update a post.

It is also highlighted that added ability to use global variables in the storage scheme. To bind to the user, a new global variable has been proposed.

Of the other changes that stand out:

  • The official client library for the Rust language has been prepared.
  • The EdgeDB binary protocol has been stabilized, in which it has become possible to process several different sessions simultaneously within the same network connection, forwarding over HTTP, using global variables and local states.
  • Added support for types that define ranges of values ​​(range).
  • Added support for socket activation, which allows not to keep the server driver in memory and to start it only when trying to establish a connection (useful for saving resources on development systems).

Finally for those interested in knowing more about it, they should know that the code is written in Python and Rust and is released under the Apache 2.0 license.

You can find out more about it at following link


Leave a Comment

Your email address will not be published. Required fields are marked with *

*

*

  1. Responsible for the data: Miguel Ángel Gatón
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.