EdgeDB : un nouveau système de gestion de base de données relationnel-objet open source
Bientôt disponible en préversion technologique
Le 2018-04-17 03:22:26, par Ludovic Barry, Membre expert
EdgeDB est un nouveau système de gestion de base de données open source dont la première préversion technologique est prévue pour bientôt, d'après ses concepteurs. Ces derniers présentent EdgeDB comme « la base de données relationnelle objet de nouvelle génération ».
Rappelons que dans un système de base de données relationnel-objet (SGBDRO), l'information est représentée sous forme d'objets comme dans la programmation orientée objet. Un SGBDRO rend les objets de la base de données accessibles aux langages orientés-objet comme s'il s'agissait d'objets de ces langages. Il étend les capacités du langage de programmation de façon transparente au niveau de la persistance des données, du contrôle des actions concurrentes, de la récupération de données, des requêtes associatives, etc.
EdgeDB se veut toutefois différent de l'existant. Au lieu du modèle relationnel, il implémente un modèle graphe objet. Dans ce modèle, les données sont décrites et stockées sous la forme d'objets et de relations fortement typés ou de liens entre eux. Les objets et les liens peuvent contenir des propriétés : un ensemble de valeurs scalaires nommées.
D'après ses concepteurs, EdgeDB n'est ni une base de données orientée graphe, ni une base de données orientée document, ni une base de données orientée objet traditionnelle. Il dispose d'un langage de requête expressif, EdgeQL, dont l'objectif est de faire d'offrir et surpasser les capacités SQL modernes, telles que les sous-requêtes, l'agrégation avancée et les fonctions de fenêtrage. Entre autres fonctionnalités, il supporte le polymorphisme qui permet la composition des types, les types de données abstraites et les requêtes polymorphes. Il permet aussi la composition des schémas et l'introspection. Enfin, il prend en charge GraphQL qui est un langage de requête pour les API permettant d'exécuter des requêtes côté serveur. EdgeDB est également basé sur PostgreSQL et hérite de toutes ses forces : fiabilité, conformité ACID et performance.
L'exemple ci-dessous montre à quoi ressemble une simple requête dans EdgeQL. La requête retournera une liste de tous les utilisateurs avec le nom « Alice » avec tous les utilisateurs qu'elle suit :
Voici à quoi ressemble une requête SQL comparable :
Source : Blog EdgeDB
Et vous ?
Qu'en pensez-vous ?
Rappelons que dans un système de base de données relationnel-objet (SGBDRO), l'information est représentée sous forme d'objets comme dans la programmation orientée objet. Un SGBDRO rend les objets de la base de données accessibles aux langages orientés-objet comme s'il s'agissait d'objets de ces langages. Il étend les capacités du langage de programmation de façon transparente au niveau de la persistance des données, du contrôle des actions concurrentes, de la récupération de données, des requêtes associatives, etc.
EdgeDB se veut toutefois différent de l'existant. Au lieu du modèle relationnel, il implémente un modèle graphe objet. Dans ce modèle, les données sont décrites et stockées sous la forme d'objets et de relations fortement typés ou de liens entre eux. Les objets et les liens peuvent contenir des propriétés : un ensemble de valeurs scalaires nommées.
D'après ses concepteurs, EdgeDB n'est ni une base de données orientée graphe, ni une base de données orientée document, ni une base de données orientée objet traditionnelle. Il dispose d'un langage de requête expressif, EdgeQL, dont l'objectif est de faire d'offrir et surpasser les capacités SQL modernes, telles que les sous-requêtes, l'agrégation avancée et les fonctions de fenêtrage. Entre autres fonctionnalités, il supporte le polymorphisme qui permet la composition des types, les types de données abstraites et les requêtes polymorphes. Il permet aussi la composition des schémas et l'introspection. Enfin, il prend en charge GraphQL qui est un langage de requête pour les API permettant d'exécuter des requêtes côté serveur. EdgeDB est également basé sur PostgreSQL et hérite de toutes ses forces : fiabilité, conformité ACID et performance.
L'exemple ci-dessous montre à quoi ressemble une simple requête dans EdgeQL. La requête retournera une liste de tous les utilisateurs avec le nom « Alice » avec tous les utilisateurs qu'elle suit :
Voici à quoi ressemble une requête SQL comparable :
Source : Blog EdgeDB
Et vous ?
-
ShepardMembre expérimentéJe pense que l'idée est bonne, en tout cas pas mauvaise.
J'ai toutefois quelques interrogations. Tout d'abord, "EdgeDB est également basé sur PostgreSQL et hérite de toutes ses forces". L'une des forces de PostgreSQL c'est son respect du standard SQL, qui fait qu'une requête développée pour MS SQL Server (par exemple) ne demandera que peu d'ajustements. La syntaxe PostgreSQL est-elle donc supportée en entier ? (Pour tous les tuples qui n'utilisent pas la fonctionnalité "objet", ça a du sens).
Ensuite, on parle de relationnel-objet (pas de relationnel-structure). Selon Wikipedia, "un objet est un conteneur symbolique et autonome qui contient des informations et des mécanismes". On parle dans la news des informations, mais pas des mécanismes (autrement dit les méthodes). Je suis curieux de voir les possibilités à ce niveau, en admettant qu'il y en ait bien.
Pour finir, ce modèle a-t-il été implémenté avec des use-case concrets à l'esprit ?
Il faudra vraiment que je me renseigne en tout cas, si ce n'est pas encore prometteur selon moi, ça éveille au moins l'intérêt !
Merci pour la news !le 18/04/2018 à 12:57 -
pachotExpert éminentSemble mieux pour naviguer user -> followee
Mais une base relationnelle permet d’interroger les mêmes données en suivant différents axes de navigation. C’est la raison pour laquelle elles ont remplacé les bases hiérarchiques (ou équivalent, comme les bases relationnelles object qui semblaient être le futur il y a 20 ans).le 18/04/2018 à 12:55 -
abriotdeMembre chevronnéMême siCa a l'air 100 fois mieux que du SQLle 18/04/2018 à 13:38
-
SQLproRédacteurLa raison de la disparition des SGBD "Objet" est lié à l'impossibilité de trouver une méthode générique d'indexation. Inventé dans les années 80 ou le paradigme objet était à la mode, il y en a eut de nombreux : Versant, Gemstone, O², caché, ObjectStore... et j'en passe; On avait même inventé un nouveau langage d'interrogation : OQL.
Tous ont disparus du fait de performances catastrophiques en lecture et donc de blocages sans nom du point de vu des mises à jour....
Le sujet n'abordant aucune informations sur l'indexation, je serais curieux es performances et des aspects transactionnels !
A +le 19/04/2018 à 15:22 -
Le grisMembre avertiça semble prometteur en tout cas! Wait and See!le 18/04/2018 à 14:47
-
bilbotMembre avertiIl ne te reste plus qu'à faire un bench pour le démolirle 20/04/2018 à 10:11
-
xidocMembre à l'essaiEdgeDB est sorti en version stable 1.0 ce vendredi 11 février 2022.
Est-ce que vous avez testé et pouvez donner votre avis. En particulier ceux qui doutaient.
Est-ce que d'après la roadmap, cela semble intéressant ?
https://www.edgedb.com/roadmaple 13/02/2022 à 2:29 -
Matthieu76Membre éclairéJe ne n'y connais pas trop mais ça à l'air quand même 100 fois mieux que le SQL.le 18/04/2018 à 11:54
-
Matthieu76Membre éclairéDans l'un de mes projet en C++ je dois sauvegarder des objects contenant des listes de listes d'objets de différentes classes avec de l'héritage multiple et des variables static et tout le tralala et bin à sauvegarder en SQL c'est juste l'horreur !!! Du coup j'ai fini par sérialiser mes objets et les sauvegarder dans des fichiers textes. Dans ce cas, cette techno pourrait faire gagner beaucoup de temps.
Mais sinon je vois pas trop la différence avec le NoSQL, ce n'est pas le but du NoSQL de sauvegarder des objets ? (je ne connais pas très bien ce langage)le 18/04/2018 à 14:16