Les dĂ©veloppeurs de la base de donnĂ©es EdgeDB ont annoncĂ© le changement de nom du projet en Gel. En mĂȘme temps, une nouvelle version majeure a Ă©tĂ© lancĂ©e â Gel 6.0. La raison de ce changement de nom est de se dĂ©barrasser des connotations trompeuses provoquĂ©es par l'utilisation du mot « edge », qui amĂšne beaucoup de gens Ă percevoir le projet comme une base de donnĂ©es pour le calcul en pĂ©riphĂ©rie ou comme une base de donnĂ©es orientĂ©e graphe. Le changement de nom ne concerne que les Ă©lĂ©ments de marque. La structure, les objectifs et l'Ă©quipe du projet restent les mĂȘmes. Les utilitaires et les bibliothĂšques dans cette nouvelle version ont Ă©tĂ© renommĂ©s, mais pour garantir la compatibilitĂ© ascendante, il a Ă©tĂ© conservĂ© la possibilitĂ© d'utiliser les anciens noms via des liens symboliques et des wrappers.
Le projet Ă©volue sous la forme d'une surcouche Ă PostgreSQL, mettant en Ćuvre un modĂšle de donnĂ©es relationnel-graphique et un langage de requĂȘtes EdgeQL, optimisĂ© pour le traitement de donnĂ©es hiĂ©rarchiques complexes. Le code est Ă©crit en Python et Rust (analyseur et parties critiques pour la performance) et est distribuĂ© sous la licence Apache 2.0. Des bibliothĂšques cliente sont disponibles pour les langages Python, Go, Rust, .NET, Elixir et TypeScript/Javascript. Un outil en ligne de commande est fourni pour gĂ©rer la base de donnĂ©es et exĂ©cuter des requĂȘtes de maniĂšre interactive (REPL).
Au lieu d'un modĂšle de donnĂ©es basĂ© sur des tables, Gel utilise un systĂšme dĂ©claratif basĂ© sur des types d'objets. Au lieu de clĂ©s Ă©trangĂšres pour dĂ©finir les relations entre les types, un systĂšme de liaison via des rĂ©fĂ©rences est utilisĂ© (un objet peut ĂȘtre utilisĂ© comme propriĂ©tĂ© d'un autre objet).
type Person { required name: str; } type Movie { required title: str; multi actors: Person; }
Des fonctionnalitĂ©s telles que la typage strict des propriĂ©tĂ©s, les restrictions sur les valeurs des propriĂ©tĂ©s, les propriĂ©tĂ©s calculĂ©es et les procĂ©dures stockĂ©es sont prises en charge. Parmi les particularitĂ©s du schĂ©ma de stockage des objets de Gel, qui rappelle en quelque sorte ORM, on note la possibilitĂ© de mĂ©langer les schĂ©mas, de lier des propriĂ©tĂ©s de diffĂ©rents objets et un support intĂ©grĂ© de JSON. Des index peuvent ĂȘtre utilisĂ©s pour accĂ©lĂ©rer le traitement des requĂȘtes.
Des outils intĂ©grĂ©s pour la migration de schĂ©ma sont fournis â aprĂšs avoir modifiĂ© le schĂ©ma spĂ©cifiĂ© dans un fichier esdl sĂ©parĂ©, il suffit d'exĂ©cuter la commande « gel migration create » et la base de donnĂ©es analysera les diffĂ©rences dans le schĂ©ma et gĂ©nĂ©rera de maniĂšre interactive un script pour passer au nouveau schĂ©ma. L'historique des modifications du schĂ©ma est suivi automatiquement.
Pour former des requĂȘtes, le langage de requĂȘtes GraphQL et le langage propriĂ©taire EdgeQL, qui est une adaptation de SQL pour des donnĂ©es hiĂ©rarchiques, sont pris en charge. Au lieu de listes, les rĂ©sultats de la requĂȘte sont prĂ©sentĂ©s sous une forme structurĂ©e, et au lieu de sous-requĂȘtes et d'opĂ©rations JOIN, il est possible d'indiquer une requĂȘte EdgeQL comme expression Ă l'intĂ©rieur d'une autre requĂȘte. Les transactions et les boucles sont prises en charge.
sĂ©lectionnez Movie { titre, acteurs: { nom } } filtre .titre = «The Matrix» insĂ©rer Movie { titre := «The Matrix Resurrections», acteurs := ( sĂ©lectionner Personne filtre .nom dans { âKeanu Reevesâ, âCarrie-Anne Mossâ, âLaurence Fishburneâ } ) }
Les principales modifications dans Gel 6.0 :
- La possibilitĂ© d'utiliser des requĂȘtes SQL traditionnelles lors de la connexion Ă une base de donnĂ©es via le protocole Gel ou en mode protocole PostgreSQL a Ă©tĂ© ajoutĂ©e. Il est prĂ©vu que la prise en charge de SQL simplifie la migration des projets existants vers Gel, qui peuvent maintenant ĂȘtre progressivement transfĂ©rĂ©s de SQL tout en continuant Ă utiliser anciens clients SQL et ORM SQL. Les projets initialement utilisant EdgeQL pourront exploiter des fonctionnalitĂ©s supplĂ©mentaires disponibles dans SQL mais pas encore mises en Ćuvre dans EdgeQL, telles que les fonctions de fenĂȘtre, les requĂȘtes rĂ©cursives et les verrouillages explicites.
- Le support de la mise Ă jour sur place a Ă©tĂ© ajoutĂ©, ce qui ne nĂ©cessite pas la crĂ©ation et le re-tĂ©lĂ©versement d'un dump de la base de donnĂ©es lors du passage Ă une nouvelle version significative. Lors de la mise Ă jour d'EdgeDB 5.x Ă Gil 6.0, l'ancienne mĂ©thode doit ĂȘtre utilisĂ©e, mais lors du passage de Gil 6.x Ă 7.0, le re-tĂ©lĂ©versement du dump ne sera pas nĂ©cessaire.
- La conservation des statistiques de performance des requĂȘtes, accessible via les objets sys::QueryStats, est assurĂ©e.
- Le support de l'extension PostgreSQL PostGIS pour le stockage de données spatiales utilisées dans les systÚmes d'information géographique a été ajouté.
- Une bibliothĂšque std::net pour envoyer des requĂȘtes rĂ©seau (HTTP supportĂ©) en mode asynchrone a Ă©tĂ© ajoutĂ©e.
- En complément de ext::auth, le support de la configuration des fournisseurs OpenID Connect a été ajouté.
- Dans le complément ext::ai, la liste des modÚles de langage de grande taille pris en charge par OpenAI, Anthropic et Mistral a été mise à jour.
- La possibilité de connecter des gestionnaires supplémentaires pour les commandes dans l'utilitaire gel a été fournie.
- La sĂ©mantique d'EdgeQL pour trouver des chemins entre les nĆuds du graphe a Ă©tĂ© simplifiĂ©e.
- Dans gel.toml, une configuration «[[watch]]» a été ajoutée pour permettre l'exécution de scripts lors de la modification des fichiers spécifiés.
- Le support de Gel a Ă©tĂ© mis en Ćuvre dans l'ORM Drizzle.
Source : opennet.ru
