Os desenvolvedores do SGBD EdgeDB anunciaram a renomeação do projeto para Gel. Simultaneamente, foi lançado um novo e significativo release — Gel 6.0. A razão para a mudança de nome é o desejo de se livrar de conotações enganosas geradas pelo uso da palavra 'edge', que faz com que muitos percebam o projeto como um SGBD para computação de borda ou como um SGBD orientado a grafos. A renomeação afetou apenas os elementos da marca. A estrutura do projeto, os objetivos e a equipe permaneceram os mesmos. As utilidades e bibliotecas nesta nova versão foram renomeadas, mas para garantir a compatibilidade retroativa, a possibilidade de usar os antigos nomes foi mantida através de links simbólicos e wrappers.
O projeto se desenvolve como uma camada sobre o PostgreSQL, implementando um modelo de dados relacional-grafado e a linguagem de consulta EdgeQL, otimizada para trabalhar com dados hierárquicos complexos. O código é escrito em Python e Rust (parser e partes críticas de desempenho) e é distribuído sob a licença Apache 2.0. Bibliotecas de cliente estão disponíveis para Python, Go, Rust, .NET, Elixir e TypeScript/Javascript. Um conjunto de ferramentas de linha de comando é fornecido para gerenciar o SGBD e executar consultas interativas (REPL).
Em vez de um modelo de dados baseado em tabelas, o Gel utiliza um sistema declarativo baseado em tipos de objeto. Em vez de chaves externas (foreign key) para definir relacionamentos entre tipos, são usadas referências (um objeto pode ser utilizado como propriedade de outro objeto).
type Person { required name: str; } type Movie { required title: str; multi actors: Person; }
Recursos como tipagem estrita de propriedades, restrições de valores de propriedades, propriedades calculadas e procedimentos armazenados são suportados. Entre as características do esquema de armazenamento de objetos do Gel, que lembra um ORM, destaca-se a capacidade de mesclar esquemas, vincular propriedades de diferentes objetos e o suporte integrado para JSON. Índices podem ser utilizados para acelerar o processamento de consultas.
Ferramentas integradas para migração de esquemas são fornecidas — após a alteração do esquema definido em um arquivo esdl separado, basta executar o comando 'gel migration create' e o SGBD analisará as diferenças no esquema, gerando interativamente um script para a transição para o novo esquema. A história das alterações do esquema é acompanhada automaticamente.
Para formular consultas, é suportada a linguagem de consultas GraphQL e uma linguagem própria chamada EdgeQL, que é uma adaptação do SQL para dados hierárquicos. Em vez de listas, os resultados das consultas são apresentados de forma estruturada, e, em vez 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’ } ) }
Principais mudanças na Gel 6.0:
- Foi adicionada a possibilidade de usar consultas SQL tradicionais ao se conectar a bancos de dados via protocolo Gel ou no modo de protocolo PostgreSQL. Espera-se que o suporte a SQL facilite a migração para Gel de projetos existentes, que agora podem ser gradualmente transferidos do SQL, continuando a usar clientes SQL antigos e ORM SQL. Projetos que originalmente utilizam EdgeQL poderão aproveitar funcionalidades adicionais disponíveis no SQL, mas ainda não implementadas no EdgeQL, como funções de janela, consultas recursivas e bloqueios explícitos.
- Foi adicionada a opção de atualização em local, que não requer a criação e reenvio do dump do banco de dados ao migrar para um novo release significativo. Ao atualizar de EdgeDB 5.x para Gil 6.0, deve-se usar o método antigo, mas na transição de Gil 6.x para 7.0, o reenvio do dump não será necessário.
- Foi garantido o armazenamento de estatísticas sobre o desempenho das consultas, que estão disponíveis através de objetos sys::QueryStats.
- Adicionada a extensão PostGIS do PostgreSQL para o armazenamento de dados espaciais utilizados em sistemas de informações geográficas.
- Foi adicionada a biblioteca std::net para enviar solicitações de rede (HTTP suportado) de forma assíncrona.
- Em adição ao ext::auth, foi adicionada a configuração para provedores OpenID Connect.
- Na extensão ext::ai, a lista de modelos de linguagem de grande escala suportados da OpenAI, Anthropic e Mistral foi atualizada.
- Foi disponibilizada a possibilidade de conectar manipuladores adicionais para comandos na utilidade gel.
- A semântica em EdgeQL foi simplificada para encontrar caminhos entre os nós do gráfico.
- No gel.toml, foi adicionada a configuração '[[watch]]', permitindo a execução de scripts ao modificar arquivos específicos.
- O ORM Drizzle implementou suporte para Gel.
Fonte: opennet.ru
