La primera versión estable del gráfico relacional DBMS EdgeDB

Está disponible la primera versión estable del DBMS EdgeDB, que es un complemento de PostgreSQL con la implementación del modelo de datos de gráficos relacionales y el lenguaje de consulta EdgeQL, optimizado para trabajar con datos jerárquicos complejos. El código está escrito en Python y Rust y se distribuye bajo la licencia Apache 2.0. Las bibliotecas cliente están preparadas para Python, Go, Rust y TypeScript/Javascript. Proporciona herramientas de línea de comandos para la gestión de DBMS y la ejecución de consultas interactivas (REPL).

En lugar de un modelo de datos basado en tablas, EdgeDB utiliza un sistema declarativo basado en tipos de objetos. En lugar de claves externas, se utiliza el enlace por referencia para definir la relación entre tipos (un objeto se puede utilizar como propiedad de otro objeto). escriba Persona {nombre de propiedad requerido -> str; } tipo Película { título de propiedad requerido -> str; actores de múltiples enlaces -> Persona; }

Los índices se pueden utilizar para acelerar el procesamiento de consultas. También se admiten funciones como tipos de propiedad estrictos, restricciones de valor de propiedad, propiedades calculadas y procedimientos almacenados. Las características del esquema de almacenamiento de objetos EdgeDB, que recuerda un poco a un ORM, incluyen la capacidad de mezclar esquemas, vincular propiedades de diferentes objetos y soporte JSON integrado.

Se proporcionan herramientas integradas para almacenar la migración del esquema: después de cambiar el esquema especificado en un archivo esdl separado, simplemente ejecute el comando "edgedb migración crear" y el DBMS analizará las diferencias en el esquema y generará interactivamente un script para migrar al esquema. nuevo esquema. Se realiza un seguimiento automático del historial de cambios de esquema.

Para generar consultas, se admiten tanto el lenguaje de consulta GraphQL como el lenguaje propietario EdgeDB, que es una adaptación de SQL para datos jerárquicos. En lugar de listas, los resultados de las consultas tienen formato estructurado y, en lugar de subconsultas y JOIN, puede especificar una consulta EdgeQL como una expresión dentro de otra consulta. Se admiten transacciones y ciclos. seleccione Película { título, actores: { nombre } } filtro .título = "The Matrix" inserte Película { título := "The Matrix Resurrections", actores := (seleccione Persona filtro .nombre en { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } para el número en la unión {0, 1, 2, 3} (seleccione {número, número + 0.5});

Fuente: opennet.ru

Añadir un comentario