A primeira versión estable do gráfico relacional DBMS EdgeDB

Está dispoñible a primeira versión estable do DBMS EdgeDB, que é un complemento para PostgreSQL coa implementación do modelo de datos de gráficos relacionais e da linguaxe de consulta EdgeQL, optimizada para traballar con datos xerárquicos complexos. O código está escrito en Python e Rust e distribúese baixo a licenza Apache 2.0. As bibliotecas cliente están preparadas para Python, Go, Rust e TypeScript/Javascript. Ofrece ferramentas de liña de comandos para a xestión de DBMS e a execución de consultas interactivas (REPL).

En lugar dun modelo de datos baseado en táboas, EdgeDB usa un sistema declarativo baseado en tipos de obxectos. En lugar de chaves foráneas, utilízase a ligazón por referencia para definir a relación entre os tipos (un obxecto pódese usar como propiedade doutro). tipo Persoa { nome da propiedade requirida -> str; } type Movie { título da propiedade necesaria -> str; actores múltiples enlaces -> Persoa; }

Os índices pódense utilizar para acelerar o procesamento de consultas. Tamén se admiten funcións como a escritura de propiedades fortes, as restricións de valor da propiedade, as propiedades calculadas e os procedementos almacenados. As características do esquema de almacenamento de obxectos EdgeDB, que lembra un pouco a un ORM, inclúen a capacidade de mesturar esquemas, vincular propiedades de diferentes obxectos e compatibilidade con JSON integrado.

Proporciónanse ferramentas integradas para almacenar a migración do esquema: despois de cambiar o esquema especificado nun ficheiro esdl separado, só tes que executar o comando "edgedb migration create" e o DBMS analizará as diferenzas no esquema e xerará de forma interactiva un script para migrar ao novo esquema. O historial de cambios no esquema realízase automaticamente.

Para xerar consultas, admítense tanto a linguaxe de consulta GraphQL como a propia de EdgeDB, que é unha adaptación de SQL para datos xerárquicos. En lugar de listas, os resultados das consultas teñen formato de forma estruturada e, en lugar de subconsultas e JOIN, pode especificar unha consulta EdgeQL como expresión dentro doutra consulta. Admítense transaccións e ciclos. select Movie { title, actors: { name } } filter .title = "The Matrix" inserir Movie { title := "The Matrix Resurrections", actores := (seleccione Person filter .name en { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } para o número na unión {0, 1, 2, 3} (seleccione { número, número + 0.5 });

Fonte: opennet.ru

Engadir un comentario