AccueilActualités informatiqueBases de données : EdgeDB 1.0 doit concurrencer SQL

Bases de données : EdgeDB 1.0 doit concurrencer SQL

Après plusieurs années de développement, l’équipe derrière EdgeDB a achevé la version 1.0 de la base de données open source. Elle se caractérise par le fait qu’elle associe un schéma de type graphique à un noyau relationnel, ce qui devrait permettre d’éviter les difficultés bien connues que posent les langages de programmation modernes orientés objet lorsqu’ils sont utilisés avec des bases de données. Son langage d’interrogation EdgeQL doit être une alternative plus concise et plus facile à utiliser que SQL (Structured Query Language). Après la première étape 1.0, la planification d’EdgeDB 2.0 a déjà commencé.

Sommaire

EdgeDB est basée sur une extension du modèle de données relationnel, appelée modèle grapho-relationnel. Celui-ci vise à contourner le décalage d’impédance qui se produit lors du stockage d’objets issus d’un langage de programmation orienté objet dans une base de données relationnelle, tout en conservant les bases solides et les performances du modèle relationnel.

La base de données open source EdgeDB met en œuvre le frontal complet de la base de données, y compris le protocole, le langage de requête et la définition des schémas, ainsi que les bibliothèques et les outils clients. PostgreSQL fait office de backend exploité par EdgeDB, ce dont les utilisateurs ne devraient pas s’apercevoir, selon l’équipe EdgeDB.

Le langage de requête EdgeQL utilisé dans EdgeDB est censé être aussi puissant que SQL et surpasser le langage de requête, dont les origines remontent aux années 1970, dans certains domaines tels que la clarté, la concision et l’utilisation intuitive. L’une des particularités d’EdgeQL est que ses concepteurs cherchent à combler les différences entre le paradigme relationnel de SQL et la manière orientée objet des langages de programmation modernes. EdgeDB répond à cette contradiction en modélisant les données de manière relationnelle.

Parmi les caractéristiques d’EdgeQL, on peut citer le fait que, grâce au modèle graphique-relationnel, les relations entre les données sont un concept de première classe, ce qui rend les jointures superflues, et que tout est une expression et qu’il n’existe qu’une seule classe de valeurs.

L’équipe EdgeDB montre à l’aide d’un exemple comment EdgeQL et SQL se distinguent. L’exemple affiche tous les films dans lesquels l’actrice Zendaya a tenu un rôle, calcule pour chacun de ces films une note moyenne de la critique et obtient en outre une liste des 5 meilleurs acteurs et actrices dans les films en fonction de leur ordre dans les crédits.

Dans EdgeQL, les lignes suivantes sont nécessaires pour cela :

select
  Movie {
    title,
    rating := math::mean(.ratings.score)
    actors: {
      name
    } order by @credits_order
      limit 5,
  }
filter
  "Zendaya" in .actors.name

En revanche, il existe une formulation SQL standard :

SELECT
  title,
  Actors.name AS actor_name,
  (SELECT avg(score)
   FROM Movie_Reviews
   WHERE movie_id = Movie.id) AS rating
FROM
  Movie
  CROSS JOIN LATERAL (
    SELECT name
    FROM
      Movie_Actors
      INNER JOIN Person
        ON Movie_Actors.person_id = Person.id
      WHERE Movie_Actors.movie_id = Movie.id
      ORDER BY Movie_Actors.credits_order
      FETCH FIRST 5 ROWS ONLY
   ) AS Actors
WHERE
  'Zendaya' IN (
    SELECT Person.name
    FROM
      Movie_Actors
      INNER JOIN Person
        ON Movie_Actors.person_id = Person.id
  )

Après la sortie réussie de la première étape importante EdgeDB 1.0, l’équipe de développement est déjà dans les starting-blocks pour la prochaine version majeure : EdgeDB 2.0 devrait sortir dans quelques mois. Parmi les nouveautés, il y aura un service cloud avec de nombreuses fonctionnalités.

Lire aussi

Toutes les autres informations concernant EdgeDB 1.0 sont disponibles dans l’annonce. Pour une vue d’ensemble, consultez le site web du projet et son dépôt GitHub.

Plus d'articles