EdgeDB, un DBMS de dades relacional de gràfics

fa poc es va donar a conèixer el llançament del DBMS «EdgeDB 2.0», que implementa el model de dades relacional de gràfics relacionals i el llenguatge de consultes EdgeQL, optimitzat per treballar amb dades jeràrquiques complexes.

EdgeDB és una base de dades de codi obert dissenyada com a successora espiritual de SQL i el paradigma relacional. El seu objectiu és resoldre alguns problemes de disseny difícils que fan que les bases de dades existents siguin innecessàriament oneroses dutilitzar.

Desenvolupat pel motor de consulta de Postgres sota el capó, EdgeDB pensa en lesquema de la mateixa manera que vostè: com a objectes amb propietats connectades per enllaços. És com una base de dades relacional amb un model de dades orientat a objectes o una base de dades gràfica amb un esquema estricte. En diem una base de dades relacional de grafs.

Sobre EdgeDB

El projecte s'està desenvolupant com a complement per a PostgreSQL. Les biblioteques client estan preparades per als llenguatges Python, Go, Rust i TypeScript/Javascript.

En lloc d'un model de dades basat en taules, EdgeDB utilitza un sistema declaratiu basat en tipus dobjectes. En lloc de claus foranes (foreign key) per determinar la relació entre els tipus s'utilitza l'enllaç de referència (un objecte es pot utilitzar com a propietat d'un altre objecte).

Els índexs es poden fer servir per accelerar el processament de consultes. També s'admeten funcions com la tipificació de propietats sòlides, les restriccions de valors de propietats, les propietats calculades i els procediments emmagatzemats. De les característiques de l'esquema d'emmagatzematge d'objectes EdgeDB, que recorda una mica ORM, es destaca la capacitat de barrejar esquemes, vincular propietats de diferents objectes i compatibilitat amb JSON integrat.

Es proporcionen eines integrades per migrar l'esquema d'emmagatzematge: després de canviar l'esquema especificat en un fitxer esdl separat, només cal executar l'ordre «edgedb migració create» i el DBMS analitzarà les diferències a l'esquema i generarà un script de forma interactiva. per migrar al nou esquema. L'historial de modificació de l'esquema es rastreja automàticament.

Per fer consultes, s'admet tant el llenguatge de consulta GraphQL com el seu propi llenguatge EdgeDB, que és una adaptació de SQL per a dades jeràrquiques. En lloc de llistes, els resultats de les consultes tenen un format estructurat i, en lloc de subconsultes i operacions JOIN, és possible especificar una consulta EdgeQL com una expressió dins una altra consulta. S'admeten transaccions i cicles.

Principals novetats d'EdgeDB 2.0

A la nova versió que es va presentar, s'ha afegit una interfície web integrada per a l'administració de la base de dades, que permet veure i editar dades, executar consultes d'EdgeQL i analitzar lesquema demmagatzematge utilitzat. La interfície s'inicia amb l'ordre «edgedb ui», i després està disponible en accedir a localhost.

l'expressió GROUP es va implementar per permetre la partició i agregació de dades i l'agrupació de dades mitjançant expressions EdgeQL arbitràries, de manera similar a l'agrupació en una operació SELECT.

Capacitat per controlar l'accés a nivell d'objecte, les regles d'accés es defineixen al nivell de l'esquema d'emmagatzematge i permeten restringir l'ús d'un conjunt específic d'objectes a les operacions de selecció, inserció, eliminació i actualització. Per exemple, podeu afegir una regla que permeti que només l'autor actualitzi una publicació.

També es destaca que es va afegir la capacitat d'usar variables globals a l'esquema d'emmagatzematge. Per enllaçar amb l'usuari, s'ha proposat una variable global nova.

Dels altres canvis que es destaquen:

  • S'ha preparat la biblioteca oficial de client per al llenguatge Rust.
  • S'ha estabilitzat el protocol binari EdgeDB, en què s'han tornat possible processar diverses sessions diferents simultàniament dins de la mateixa connexió de xarxa, reenviant a través d'HTTP, usant variables globals i estats locals.
  • S'ha afegit suport per a tipus que defineixen rangs de valors (rang).
  • S'ha afegit suport per a l'activació per socket, cosa que permet no mantenir el controlador del servidor a la memòria i iniciar-lo només quan intenta establir una connexió (útil per estalviar recursos en els sistemes de desenvolupament).

Finalment per als que estiguin interessats en conèixer més a l'respecte, han de saber que el codi està escrit a Python i Rust i es distribueix sota la llicència Apache 2.0.

Pots consultar més sobre això, al següent enllaç.


El contingut d'l'article s'adhereix als nostres principis de ètica editorial. Per notificar un error punxa aquí.

Sigues el primer a comentar

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.