Lançamento do SGBD relacional e gráfico EdgeDB 2.0

Foi lançado o EdgeDB 2.0, um SGBD que implementa um modelo de dados relacional e gráfico, juntamente com a linguagem de consulta EdgeQL, otimizada para trabalhar com dados hierárquicos complexos. O código é escrito em Python e Rust (componente do analisador e partes críticas para desempenho) e distribuído sob a licença Apache 2.0. O projeto é desenvolvido como uma extensão do PostgreSQL. Bibliotecas cliente estão disponíveis para as linguagens Python, Go, Rust e TypeScript/Javascript. Um conjunto de ferramentas de linha de comando é fornecido para gerenciar o SGBD e executar consultas de forma interativa (REPL).

Em vez de um modelo de dados baseado em tabelas, o EdgeDB utiliza um sistema declarativo baseado em tipos de objetos. Em vez de chaves externas (foreign key) para definir relacionamentos entre tipos, são utilizadas referências de ligação (um objeto pode ser usado 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.

O suporte para a formação de consultas inclui 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 das consultas são apresentadas de forma estruturada, e, ao invés de subconsultas e operações JOIN, é possível especificar uma consulta EdgeQL como uma 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 } );

Na nova versão:

  • Adicionado uma interface web interna para administração do banco de dados, permitindo visualizar e editar dados, executar consultas EdgeQL e analisar o esquema de armazenamento. A interface é iniciada com o comando «edgedb ui», que fica disponível ao acessar localhost.
    Lançamento do SGBD relacional e gráfico EdgeDB 2.0
  • Implementada a expressão «GROUP», que permite segmentar e agregar dados, realizando agrupamento de dados com base em expressões EdgeQL arbitrárias, semelhante ao agrupamento na operação SELECT.
  • Possibilidade de gerenciamento de acesso a nível de objetos. As regras de acesso são definidas a nível de esquema de armazenamento e permitem limitar o uso de um determinado conjunto de objetos nas operações de seleção, inserção, exclusão e atualização. Por exemplo, pode-se adicionar uma regra que permite a atualização de uma publicação apenas ao autor.
  • Adicionada a possibilidade de uso de variáveis globais no esquema de armazenamento. Para vinculação ao usuário, foi proposta uma nova variável global chamada current_user.
  • Adicionada suporte a tipos que definem intervalos de valores (range).
  • Preparada a biblioteca cliente oficial para a linguagem Rust.
  • Estabilizado o protocolo binário do EdgeDB, que agora pode processar simultaneamente várias sessões diferentes dentro de uma única conexão de rede, além de suportar passagem através de HTTP, uso de variáveis globais e estados locais.
  • Foi adicionado suporte para ativação por socket, permitindo que o manipulador do servidor não permaneça na memória e seja acionado apenas quando houver uma tentativa de conexão (útil para economizar recursos em sistemas de desenvolvedores).

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