La sortie de la base de données relationnelle-graphique EdgeDB 2.0

Le lancement de la base de donnĂ©es EdgeDB 2.0 a Ă©tĂ© annoncĂ©, mettant en Ɠuvre un modĂšle de donnĂ©es relationnel et graphique ainsi qu'un langage de requĂȘtes EdgeQL, optimisĂ©s pour travailler avec des donnĂ©es hiĂ©rarchiques complexes. Le code est Ă©crit en Python et Rust (pour le parser et les parties critiques en matiĂšre de performance) et est distribuĂ© sous la licence Apache 2.0. Le projet Ă©volue sous la forme d'une extension de PostgreSQL. Des bibliothĂšques clientes sont disponibles pour les langages Python, Go, Rust et TypeScript/Javascript. Un outil de ligne de commande est fourni pour gĂ©rer la base de donnĂ©es et exĂ©cuter des requĂȘtes de maniĂšre interactive (REPL).

EdgeDB utilise une approche dĂ©clarative basĂ©e sur des types d'objets plutĂŽt qu'un modĂšle de donnĂ©es basĂ© sur des tableaux. Au lieu de clĂ©s Ă©trangĂšres (foreign key) pour dĂ©finir les relations entre les types, un systĂšme de liaison par rĂ©fĂ©rences est utilisĂ© (un objet peut ĂȘtre employĂ© comme propriĂ©tĂ© d'un autre objet).

type Person { required property name -> str; } type Movie { required property title -> str; multi link actors -> Person; }

Pour accĂ©lĂ©rer le traitement des requĂȘtes, des index peuvent ĂȘtre utilisĂ©s. Des fonctionnalitĂ©s telles que la typage strict des propriĂ©tĂ©s, les contraintes de valeurs des propriĂ©tĂ©s, les propriĂ©tĂ©s calculĂ©es et les procĂ©dures stockĂ©es sont Ă©galement supportĂ©es. Parmi les caractĂ©ristiques du schĂ©ma de stockage orientĂ© objet d'EdgeDB, qui rappelle quelque peu les ORM, on note la possibilitĂ© de mĂ©langer les schĂ©mas, de lier des propriĂ©tĂ©s provenant de diffĂ©rents objets et le support intĂ©grĂ© de JSON.

Des outils intĂ©grĂ©s pour la migration du schĂ©ma de stockage sont fournis — aprĂšs modification du schĂ©ma, spĂ©cifiĂ© dans un fichier esdl sĂ©parĂ©, il suffit d'exĂ©cuter la commande « edgedb migration create » et la base de donnĂ©es analysera les diffĂ©rences de schĂ©ma et gĂ©nĂ©rera de maniĂšre interactive un script pour passer au nouveau schĂ©ma. L'historique des modifications de schĂ©ma est automatiquement suivi.

Pour la crĂ©ation de requĂȘtes, le langage de requĂȘte GraphQL ainsi que le langage propre Ă  EdgeDB, qui est une adaptation de SQL pour les donnĂ©es hiĂ©rarchiques, sont supportĂ©s. Au lieu de listes, les rĂ©sultats de la requĂȘte sont formatĂ©s de maniĂšre structurĂ©e, et au lieu de sous-requĂȘtes et d'opĂ©rations JOIN, il est possible d'indiquer une requĂȘte EdgeQL en tant qu'expression au sein d'une autre requĂȘte. Les transactions et les boucles sont pris en charge.

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 } );

Dans la nouvelle version :

  • Une interface web intĂ©grĂ©e pour l'administration de la base de donnĂ©es a Ă©tĂ© ajoutĂ©e, permettant de visualiser et d'Ă©diter les donnĂ©es, d'exĂ©cuter des requĂȘtes EdgeQL et d'analyser le schĂ©ma de stockage appliquĂ©. L'interface se lance avec la commande «edgedb ui», aprĂšs quoi elle est accessible via localhost.
    La sortie de la base de données relationnelle-graphique EdgeDB 2.0
  • La fonction «GROUP» a Ă©tĂ© implĂ©mentĂ©e, permettant de partitionner et d'agrĂ©ger des donnĂ©es ainsi que d'effectuer des regroupements de donnĂ©es selon des expressions EdgeQL arbitraires, similaire au regroupement dans l'opĂ©ration SELECT.
  • Gestion des accĂšs au niveau des objets. Les rĂšgles d'accĂšs sont dĂ©finies au niveau du schĂ©ma de stockage et permettent de limiter l'utilisation d'un ensemble spĂ©cifique d'objets dans les opĂ©rations de sĂ©lection, d'insertion, de suppression et de mise Ă  jour. Par exemple, une rĂšgle peut autoriser la mise Ă  jour d'un article uniquement par son auteur.
  • Ajout de la possibilitĂ© d'utiliser des variables globales dans le schĂ©ma de stockage. Une nouvelle variable globale current_user a Ă©tĂ© proposĂ©e pour lier Ă  l'utilisateur.
  • Ajout de la prise en charge des types dĂ©finissant des plages de valeurs (range).
  • Une bibliothĂšque cliente officielle pour le langage Rust a Ă©tĂ© prĂ©parĂ©e.
  • Le protocole binaire EdgeDB a Ă©tĂ© stabilisĂ©, permettant la gestion simultanĂ©e de plusieurs sessions diffĂ©rentes au sein d'une seule connexion rĂ©seau, le passage via HTTP, l'utilisation de variables globales et d'Ă©tats locaux.
  • Ajout du support de l'activation par socket, permettant de ne pas garder le traitement du serveur en mĂ©moire et de ne l'exĂ©cuter que lors de la tentative d'Ă©tablissement d'une connexion (utile pour Ă©conomiser des ressources sur les systĂšmes des dĂ©veloppeurs).

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster