EdgeDB, um DBMS de dados relacionais de gráfico

Faz pouco foi anunciado o lançamento do SGBD «EdgeDB 2.0», que implementa o modelo de dados relacionais de gráfico relacional e a linguagem de consulta EdgeQL, otimizada para trabalhar com dados hierárquicos complexos.

EdgeDB é um banco de dados de código aberto projetado como um sucessor espiritual do SQL e do paradigma relacional. Seu objetivo é resolver alguns problemas de design difíceis que tornam os bancos de dados existentes desnecessariamente onerosos de usar.

Alimentado pelo mecanismo de consulta Postgres sob o capô, o EdgeDB pensa no esquema da mesma maneira que você: como objetos com propriedades conectadas por associações. É como um banco de dados relacional com um modelo de dados orientado a objetos ou um banco de dados gráfico com um esquema estrito. Nós o chamamos de banco de dados relacional de gráficos.

Sobre o EdgeDB

O projeto está sendo desenvolvido como um plugin para PostgreSQL. As bibliotecas cliente são preparadas para as linguagens Python, Go, Rust e TypeScript/Javascript.

Em vez de um modelo de dados baseado em tabela, EdgeDB usa um sistema declarativo baseado em tipos de objetos. Em vez de chaves estrangeiras (chave estrangeira) para determinar a relação entre os tipos de referência, a vinculação é usada (um objeto pode ser usado como propriedade de outro objeto).

Os índices podem ser usados ​​para acelerar o processamento de consultas. Também recursos como a tipagem de propriedade forte são suportados, restrições de valor de propriedade, propriedades computadas e procedimentos armazenados. Alguns dos recursos do esquema de armazenamento de objetos EdgeDB, que lembram um pouco o ORM, incluem a capacidade de misturar esquemas, vincular propriedades de diferentes objetos e suporte para JSON incorporado.

Ferramentas integradas são fornecidas para migrar o esquema de armazenamento: Após alterar o esquema especificado 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 de forma interativa. para migrar para o novo esquema. O histórico de modificação do esquema é rastreado automaticamente.

Para consulta, tanto a linguagem de consulta GraphQL quanto a como sua própria linguagem EdgeDB, que é uma adaptação do SQL para dados hierárquicos. Em vez de listas, os resultados da consulta têm um formato estruturado e, em vez de subconsultas e JOINs, uma consulta EdgeQL pode ser especificada como uma expressão em outra consulta. Transações e ciclos são suportados.

Principais novos recursos do EdgeDB 2.0

Na nova versão apresentada, interface web integrada foi adicionada para administração de banco de dados permite visualizar e editar dados, executar consultas EdgeQL e analisar o esquema de armazenamento utilizado. A interface é iniciada com o comando "edgedb ui", após o qual fica disponível acessando localhost.

Expressão "GROUP" foi implementado para permitir o particionamento e agregação de dados e agrupar dados usando expressões EdgeQL arbitrárias, semelhante ao agrupamento em uma operação SELECT.

Capacidade de controlar o acesso no nível do objeto, as regras de acesso são definidas no nível do esquema de armazenamento e permitem restringir o uso de um conjunto específico de objetos em operações de seleção, inserção, exclusão e atualização. Por exemplo, você pode adicionar uma regra que permite que apenas o autor atualize uma postagem.

Destaca-se também que capacidade adicional de usar variáveis ​​globais no esquema de armazenamento. Para vincular ao usuário, uma nova variável global foi proposta.

Das outras mudanças que se destacam:

  • A biblioteca cliente oficial para a linguagem Rust foi preparada.
  • O protocolo binário EdgeDB foi estabilizado, no qual tornou-se possível processar várias sessões diferentes simultaneamente dentro da mesma conexão de rede, encaminhando por HTTP, usando variáveis ​​globais e estados locais.
  • Adicionado suporte para tipos que definem intervalos de valores (intervalo).
  • Adicionado suporte para ativação de socket, que permite não manter o driver do servidor na memória e iniciá-lo apenas ao tentar estabelecer uma conexão (útil para economizar recursos em sistemas de desenvolvimento).

Finalmente para aqueles interessados ​​em saber mais sobre isso, eles devem saber que o código está escrito em Python e Rust e é lançado sob a licença Apache 2.0.

Você pode saber mais sobre isso em link a seguir


Seja o primeiro a comentar

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.