Llançament del gràfic relacional DBMS EdgeDB 2.0

Es presenta el llançament del SGBD EdgeDB 2.0, que implementa el model de dades de gràfics relacionals i el llenguatge de consulta EdgeQL, optimitzat per treballar amb dades jeràrquiques complexes. El codi està escrit en Python i Rust (analitzador i parts crítiques per al rendiment) i es distribueix sota la llicència Apache 2.0. El projecte s'està desenvolupant com a complement per a PostgreSQL. Les biblioteques de client estan preparades per a Python, Go, Rust i TypeScript/Javascript. Proporciona eines de línia d'ordres per a la gestió de SGBD i l'execució de consultes interactives (REPL).

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

tipus Persona { nom de propietat obligatori -> str; } tipus Movie { títol de propietat obligatori -> str; actors multi-enllaç -> Persona; }

Els índexs es poden utilitzar per accelerar el processament de consultes. També s'admeten funcions com ara l'escriptura de propietats forta, les restriccions del valor de la propietat, les propietats calculades i els procediments emmagatzemats. Les característiques de l'esquema d'emmagatzematge d'objectes EdgeDB, que recorda una mica a un ORM, inclouen la capacitat de barrejar esquemes, enllaçar propietats de diferents objectes i suport JSON integrat.

Es proporcionen eines integrades per emmagatzemar la migració de l'esquema: després de canviar l'esquema especificat en un fitxer esdl independent, només cal que executeu l'ordre "edgedb migration create" i el SGBD analitzarà les diferències en l'esquema i generarà de manera interactiva un script per migrar a l'esquema. nou esquema. L'historial de canvis d'esquema es fa un seguiment automàtic.

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

seleccioneu la pel·lícula { title, actors: { nom } } filter .title = "The Matrix" inseriu la pel·lícula { title := "The Matrix Resurrections", actors := ( seleccioneu el filtre de persona .name a { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } per al número en {0, 1, 2, 3} unió (seleccioneu { nombre, número + 0.5 });

En la nova versió:

  • S'ha afegit una interfície web integrada per a l'administració de bases de dades, que us permet veure i editar dades, executar consultes EdgeQL i analitzar l'esquema d'emmagatzematge utilitzat. La interfície s'inicia mitjançant l'ordre "edgedb ui", després de la qual està disponible quan s'accedeix a localhost.
    Llançament del gràfic relacional DBMS EdgeDB 2.0
  • S'ha implementat l'expressió "GROUP", que us permet particionar i agregar dades i agrupar dades mitjançant expressions EdgeQL arbitràries, de manera similar a l'agrupació en una operació SELECT.
  • Capacitat de controlar l'accés a nivell d'objecte. Les regles d'accés es defineixen al nivell d'esquema d'emmagatzematge i us permeten limitar la capacitat d'utilitzar un determinat conjunt d'objectes en les operacions de recollida, inserció, supressió i actualització. Per exemple, podeu afegir una regla que permeti que només l'autor actualitzi una publicació.
  • S'ha afegit la possibilitat d'utilitzar variables globals a l'esquema d'emmagatzematge. S'ha proposat una nova variable global current_user per vincular-se a l'usuari.
  • S'ha afegit suport per a tipus que defineixen intervals de valors.
  • S'ha preparat una biblioteca client oficial per a la llengua Rust.
  • S'ha estabilitzat el protocol binari EdgeDB, que permet processar diverses sessions diferents simultàniament dins de la mateixa connexió de xarxa, reenviant via HTTP, utilitzant variables globals i estats locals.
  • S'ha afegit suport per a l'activació del sòcol, que permet no mantenir el gestor del servidor a la memòria i executar-lo només quan s'intenta establir una connexió (útil per estalviar recursos en sistemes de desenvolupadors).

Font: opennet.ru

Afegeix comentari