EdgeDB, un SGBD de données relationnelles de graphes

Récemment la sortie du SGBD « EdgeDB 2.0 » a été annoncée, qui implémente le modèle de données relationnelles de graphe relationnel et le langage de requête EdgeQL, optimisé pour travailler avec des données hiérarchiques complexes.

EdgeDB est une base de données open source conçue comme un successeur spirituel de SQL et du paradigme relationnel. Son objectif est de résoudre certains problèmes de conception difficiles qui rendent les bases de données existantes inutilement lourdes à utiliser.

Propulsé par le moteur de requête Postgres sous le capot, EdgeDB considère le schéma de la même manière que vous : comme des objets avec des propriétés connectées par des liaisons. C'est comme une base de données relationnelle avec un modèle de données orienté objet ou une base de données de graphes avec un schéma strict. Nous l'appelons une base de données relationnelle de graphes.

À propos de EdgeDB

Le projet est développé en tant que plugin pour PostgreSQL. Les bibliothèques clientes sont préparées pour les langages Python, Go, Rust et TypeScript/Javascript.

Au lieu d'un modèle de données basé sur des tables, EdgeDB utilise un système déclaratif basé sur les types d'objets. Au lieu de clés étrangères (clé étrangère) pour déterminer la relation entre les types, la liaison de référence est utilisée (un objet peut être utilisé comme propriété d'un autre objet).

Les index peuvent être utilisés pour accélérer le traitement des requêtes. Aussi des fonctionnalités telles que le typage de propriété fort sont prises en charge, les contraintes de valeur de propriété, les propriétés calculées et les procédures stockées. Certaines des fonctionnalités du schéma de stockage d'objets EdgeDB, qui rappellent quelque peu ORM, incluent la possibilité de mélanger des schémas, de lier les propriétés de différents objets et la prise en charge du JSON intégré.

Des outils intégrés sont fournis pour migrer le schéma de stockage : après avoir modifié le schéma spécifié dans un fichier esdl séparé, exécutez simplement la commande "edgedb migration create" et le SGBD analysera les différences dans le schéma et générera un script de manière interactive. pour migrer vers le nouveau schéma. L'historique des modifications de schéma est suivi automatiquement.

Pour les requêtes, le langage de requête GraphQL et le comme son propre langage EdgeDB, qui est une adaptation de SQL pour les données hiérarchiques. Au lieu de listes, les résultats de requête ont un format structuré, et au lieu de sous-requêtes et de JOIN, une requête EdgeQL peut être spécifiée en tant qu'expression dans une autre requête. Les transactions et les cycles sont pris en charge.

Principales nouveautés d'EdgeDB 2.0

Dans la nouvelle version qui a été présentée, une interface Web intégrée a été ajoutée pour l'administration de la base de données permet d'afficher et de modifier des données, d'exécuter des requêtes EdgeQL et analyser le schéma de stockage utilisé. L'interface est démarrée avec la commande "edgedb ui", après quoi elle est disponible en accédant à localhost.

Expression "GROUP" a été implémenté pour permettre le partitionnement et l'agrégation des données et le regroupement de données à l'aide d'expressions EdgeQL arbitraires, similaire au regroupement dans une opération SELECT.

Possibilité de contrôler l'accès au niveau de l'objet, les règles d'accès sont définies au niveau du schéma de stockage et vous permettent de restreindre 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, vous pouvez ajouter une règle qui autorise uniquement l'auteur à mettre à jour une publication.

Il est également souligné que possibilité supplémentaire d'utiliser des variables globales dans le schéma de stockage. Pour se lier à l'utilisateur, une nouvelle variable globale a été proposée.

Parmi les autres changements qui ressortent:

  • La bibliothèque cliente officielle pour le langage Rust a été préparée.
  • Le protocole binaire EdgeDB a été stabilisé, dans lequel il est devenu possible de traiter simultanément plusieurs sessions différentes au sein de la même connexion réseau, en les transmettant via HTTP, en utilisant des variables globales et des états locaux.
  • Ajout de la prise en charge des types qui définissent des plages de valeurs (plage).
  • Ajout de la prise en charge de l'activation des sockets, qui permet de ne pas garder le pilote du serveur en mémoire et de ne le démarrer que lors de la tentative d'établissement d'une connexion (utile pour économiser des ressources sur les systèmes de développement).

Enfin pour ceux qui souhaitent en savoir plus, ils doivent savoir que le code est écrit en Python et Rust et est publié sous la licence Apache 2.0.

Vous pouvez en savoir plus sur lien suivant


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.