A primeira versão estável do gráfico relacional DBMS EdgeDB

Está disponível a primeira versão estável do SGBD EdgeDB, que é um complemento do PostgreSQL com a implementação do modelo de dados gráficos relacionais e da linguagem de consulta EdgeQL, otimizada para trabalhar com dados hierárquicos complexos. O código é escrito em Python e Rust e é distribuído sob a licença Apache 2.0. Bibliotecas clientes são preparadas para Python, Go, Rust e TypeScript/Javascript. Fornece ferramentas de linha de comando para gerenciamento de DBMS e execução de consulta interativa (REPL).

Em vez de um modelo de dados baseado em tabela, o EdgeDB usa um sistema declarativo baseado em tipos de objetos. Em vez de chaves estrangeiras, a ligação por referência é usada para definir o relacionamento entre os tipos (um objeto pode ser usado como propriedade de outro objeto). type Person {nome da propriedade necessária -> str; } type Movie { título de propriedade obrigatório -> str; atores multilink -> Pessoa; }

Os índices podem ser usados ​​para acelerar o processamento de consultas. Recursos como digitação forte de propriedades, restrições de valores de propriedades, propriedades computadas e procedimentos armazenados também são suportados. Os recursos do esquema de armazenamento de objetos EdgeDB, que lembra um pouco um ORM, incluem a capacidade de misturar esquemas, vincular propriedades de diferentes objetos e suporte JSON integrado.

Ferramentas integradas são fornecidas para armazenar a migração de esquema - após alterar o esquema especificado em um arquivo esdl separado, basta executar o comando “edgedb migração create” e o SGBD analisará as diferenças no esquema e gerará interativamente um script para migração para o novo esquema. O histórico de alterações de esquema é rastreado automaticamente.

Para gerar consultas, são suportadas tanto a linguagem de consulta GraphQL quanto a linguagem própria do EdgeDB, que é uma adaptação do SQL para dados hierárquicos. Em vez de listas, os resultados da consulta são formatados de forma estruturada e, em vez de subconsultas e JOINs, você pode especificar uma consulta EdgeQL como uma expressão dentro de outra consulta. Transações e ciclos são suportados. select Movie {title, atores: {nome } } filter .title = "The Matrix" insert Movie { title := "The Matrix Resurrections", atores := ( select Person filter .name in { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } para número na união {0, 1, 2, 3} ( selecione { número, número + 0.5 } );

Fonte: opennet.ru

Adicionar um comentário