Primeiro lançamento estável do banco de dados relacional e gráfico EdgeDB

Está disponível o primeiro lançamento estável do SGBD EdgeDB, que é uma camada sobre o PostgreSQL com implementação do modelo de dados relacional e gráfico e da linguagem de consulta EdgeQL, otimizados para trabalhar com dados hierárquicos complexos. O código é escrito nas linguagens Python e Rust e é distribuído sob a licença Apache 2.0. As bibliotecas cliente estão disponíveis para as linguagens Python, Go, Rust e TypeScript/Javascript. Ferramentas de linha de comando para gerenciar o SGBD e executar consultas interativamente (REPL) são fornecidas.

Em vez do modelo de dados baseado em tabelas, o EdgeDB utiliza um sistema declarativo baseado em tipos de objeto. Em vez de chaves estrangeiras (foreign key) para definir a relação entre os tipos, é utilizada a vinculação por referências (um objeto pode ser utilizado como propriedade de outro objeto). type Person { required property name -> str; } type Movie { required property title -> str; multi link actors -> Person; }

Para acelerar o processamento de consultas, podem ser utilizados índices. Também são suportadas funcionalidades como tipagem estrita de propriedades, restrições de valores de propriedades, propriedades calculadas e procedimentos armazenados. Entre as características do esquema de armazenamento orientado a objetos do EdgeDB, que se assemelha ao ORM, destaca-se a capacidade de misturar esquemas, vincular propriedades de diferentes objetos e suporte integrado a JSON.

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

Para a formação de consultas, são suportadas tanto a linguagem de consultas GraphQL quanto a própria linguagem EdgeDB, que é uma adaptação do SQL para dados hierárquicos. Em vez de listas, os resultados da consulta são apresentados de forma estruturada, e em vez de subconsultas e operações JOIN, é possível especificar uma consulta EdgeQL como expressão dentro de outra consulta. Transações e loops são suportados. select Movie { title, actors: { name } } filter .title = "The Matrix" insert Movie { title := "The Matrix Resurrections", actors := ( select Person filter .name in { ‘Keanu Reeves’, ‘Carrie-Anne Moss’, ‘Laurence Fishburne’ } ) } for number in {0, 1, 2, 3} union ( select { number, number + 0.5 } );

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster