Quelle est la différence entre une base de données orientée graphe et une base de données relationnelle ?


Quelle est la différence entre une base de données orientée graphe et une base de données relationnelle ?

Les bases de données orientées graphe et les bases de données relationnelles stockent des éléments de données associés à des relations, mais ils représentent les relations entre les données de manière très différente. Les bases de données relationnelles stockent les données sous forme de tableau avec des lignes et des colonnes. Toutes les données sont également stockées dans des tables, et les relations entre les données sont stockées sous forme de références représentées renvoyant à la table d’origine (c’est-à-dire des clés étrangères). Au moment de l’exécution, une base de données relationnelle utilise des instructions JOIN pour résoudre explicitement ces références. Bien que la plupart des bases de données relationnelles puissent le faire efficacement à certaines échelles, ces opérations deviennent inefficaces lorsqu’un nombre important ou inconnu de ces références doit être traité, par exemple lorsque vous souhaitez rechercher un lien de parenté via un nombre inconnu de connexions, par exemple pour connaître le lien entre deux personnes sur un réseau social.

En revanche, une base de données orientée graphe stocke les données sous la forme d'un réseau d'entités et de relations. Les bases de données orientées graphe stockent explicitement les données d’entité et de relation au lieu de stocker les données sous forme de références. Au moment de l’exécution, une base de données orientée graphe exploite la théorie mathématique des graphes pour effectuer efficacement des opérations sur des entités et des relations. Étant donné que les relations entre les entités sont stockées de manière explicite au lieu d’être calculées, les bases de données orientées graphe sont plus efficaces pour les requêtes et la gestion de la mémoire pour les cas d’utilisation impliquant des interconnexions de données complexes, ce qui peut améliorer les performances des applications de manière significative.


À propos des bases de données relationnelles »
En savoir plus sur les bases de données orientées graphe
 

Modèle de données : base de données orientée graphe ou base de données relationnelle

Les bases de données orientées graphe et les bases de données relationnelles stockent des informations et représentent les relations entre les données. Cependant, le modèle relationnel hiérarchise les entités de données tandis que le modèle graphique hiérarchise les relations entre les entités.

Modèle de base de données relationnelle

Une base de données relationnelle utilise des tables de données qui organisent les informations en lignes et en colonnes. Les colonnes contiennent des attributs spécifiques de l'entité de données, tandis que les lignes représentent les enregistrements de données individuels. 

Le schéma fixe des bases de données relationnelles nécessite que vous définissiez dès le départ les relations entre les tables à l'aide de clés primaires et étrangères. 

Exemple

Envisagez une application de réseau social avec des profils de clients qui peuvent être amis les uns avec les autres. Un modèle type aura besoin de deux tables pour modéliser les données.
Le tableau des clients pourrait ressembler à ceci :


ID

Nom

Lieu

C1

Alejandro

États-Unis

C2

Ana

États-Unis

C3

Kwaku

États-Unis

C4

Pat

États-Unis

La table des amis pourrait ressembler à ceci :


ID client

ID d'ami

C1

C2

C1

C3

C2

C4

C2

C1

C3

C1

C3

C4

Au moment de la requête, si vous vouliez répondre à une question telle que « Quels sont les noms des amis d’Alejandro ? » le moteur de base de données trouverait d’abord la ligne dans la table Client correspondant à Alejandro.
 


ID

Nom

Lieu

C1

Alejandro

États-Unis

Ensuite, le moteur créerait une union de toutes les lignes de la table d’amis pour Alejandro en utilisant son identifiant.
 


ID

Nom

Lieu

ID client

ID d'ami

C1

Alejandro

États-Unis

C1

C2

C1

Alejandro

États-Unis

C1

C3

Désormais, pour chaque ligne, le moteur créerait une union vers la table des clients pour chaque identifiant d’ami.
 


ID

Nom

Lieu

ID client

ID d'ami

ID

Nom

Lieu

C1

Alejandro

États-Unis

C1

C2

C2

Ana

États-Unis

C1

Alejandro

États-Unis

C1

C3

C3

Kwaku

États-Unis

Enfin, le moteur renvoie les noms de ses amis.
 


Nom

Ana

Kwaku

Comme nous pouvons le constater, lorsque nous utilisons les connexions dans nos données relationnelles, nous finissons par créer une grande structure de données pour représenter les informations que nous cherchons à récupérer. Bien que les bases de données relationnelles soient optimisées pour minimiser l’impact de ces structures, à mesure que le nombre de jointures augmente, la quantité de données requise augmente de manière significative, ce qui réduit les performances et augmente l’utilisation de la mémoire.

Modèle de base de données orientée graphe

D’autre part, une base de données orientée graphe utilise une structure graphique avec des attributs, des relations et des objets pour représenter les données. Les nœuds sont des objets, les périphéries illustrent la relation entre ces nœuds et les propriétés décrivent les attributs des nœuds et des périphéries. Cette structure dynamique rend une base de données orientée graphe utile pour la représentation de données connectées. Elle offre une plus grande flexibilité en ce qui concerne les relations et les types de données.

Exemple

En utilisant le même exemple de données de réseaux sociaux que ci-dessus, notre base de données orientée graphe stockerait les données à l’aide de 3 nœuds, chacun avec 4 propriétés et 2 périphéries.

Voyons maintenant comment une base de données orientée graphe traite la requête « Quels sont les noms des amis d’Alejandro ? ».

Tout d’abord, nous recherchons notre nœud client représentant Alejandro (surligné ci-dessous).

Ensuite, nous traverserons ou nous nous déplacerons entre les périphéries de nos amis. La navigation dans une base de données orientée graphe est similaire à l’exécution d’une instruction JOIN dans une base de données relationnelle, sauf si cela est explicitement demandé, les informations du début de la requête ne sont pas conservées. Dans l’exemple ci-dessous, seules les périphéries des deux amis sont conservées en mémoire.

Troisièmement, nous continuons notre traversée vers les nœuds adjacents.

Enfin, le moteur renvoie les noms de ses amis.
 


Nom

Ana

Kwaku

Comme nous pouvons le constater, les deux moteurs sont capables de renvoyer les mêmes informations, mais lors de la traversée de nombreuses connexions, le stockage explicite des relations dans une base de données orientée graphe lui permet de traiter cette demande plus efficacement. Bien que cet avantage ne soit pas significatif pour les requêtes simples, comme celle présentée ici, cette optimisation, associée à la structure des langages de requêtes graphiques, peut réduire de manière significative la complexité et l’utilisation de la mémoire pour le traitement des questions qui nécessitent un grand nombre, voire un nombre inconnu, de ces traversées de relations.

Principales différences : base de données orientée graphe et base de données relationnelle

Au-delà de leurs différents modèles de données, les bases de données orientées graphe et les bases de données relationnelles présentent de nombreuses différences qui les distinguent en termes de fonction et d'utilité.

Interrogation

Les bases de données orientées graphe utilisent des langages de requête personnalisés optimisés pour rechercher et récupérer rapidement les données connectées. Ces langages, tels que TinkerPop Gremlin, OpenCypher et SPARQL, sont spécialement conçus pour simplifier l’écriture de requêtes qui exploitent des interconnexions de données complexes, telles que celles requises pour des opérations telles que l’accès récursif aux données, la recherche de chemin et les algorithmes graphiques.

En revanche, les bases de données relationnelles utilisent le langage SQL pour récupérer et manipuler des données. Avec SQL, les utilisateurs peuvent effectuer différents types de requêtes, telles que SELECT, INSERT, UPDATE et DELETE, sur des tables. Les bases de données relationnelles excellent dans la gestion de données structurées avec des relations bien définies entre les tables. Elles sont particulièrement efficaces pour effectuer des filtrages, des agrégations et des jointures complexes sur plusieurs tables.

Performances

Les bases de données orientées graphe stockent à la fois des objets et des relations sous forme de données et utilisent des index pour parcourir efficacement les entités associées. Étant donné que les bases de données orientées graphe stockent les relations sous forme de données, la base de données peut naviguer rapidement entre les entités sans avoir à calculer dynamiquement ces connexions. La connexion directe entre les nœuds permet un accès immédiat, ce qui vous permet d’interroger et de suivre rapidement les relations. Ces fonctionnalités rendent les bases de données orientées graphe très efficaces.

Les bases de données relationnelles utilisent également des recherches d’index et des jointures calculées de façon dynamique pour identifier les relations entre les entités. Vous pouvez joindre plusieurs tables, mais cela prend du temps car le système doit analyser des index plus importants sur un plus grand nombre de données. De ce fait, une base de données relationnelle n’offre pas les mêmes performances qu’une base de données orientée graphe pour les cas d’utilisation nécessitant un grand nombre de connexions pour récupérer les données requises.

Simplicité d'utilisation

Les bases de données orientées graphe sont centrées sur les relations, ce qui facilite leur utilisation lorsque vous utilisez des données connectées. Ces bases de données sont excellentes pour les requêtes à sauts multiples, dans lesquelles vous pouvez parcourir des chemins comportant de multiples relations. Vous pouvez également utiliser des langages de requêtes de graphe tels que SPARQL, Gremlin ou OpenCypher pour exprimer des requêtes qui explorent des données interconnectées à l’aide d’une syntaxe simple et spécifique aux graphes.

Les bases de données relationnelles utilisent le langage SQL, ce qui peut sembler anormal lorsque vous gérez des requêtes à sauts multiples. Si une requête comporte plusieurs jointures et s'étend sur des sous-requêtes imbriquées, l'écriture du code SQL devient difficile. Si vous ne faites pas attention, cela peut facilement se traduire par des requêtes volumineuses difficiles à lire et à gérer.

Cela dit, les bases de données relationnelles sont matures et populaires dans divers cas d'utilisation. Vous pouvez accéder à plusieurs outils et ressources ainsi qu'à l'assistance de la communauté pour optimiser votre système.

Quand utiliser : base de données orientée graphe ou base de données relationnelle

Les bases de données orientées graphe et les bases de données relationnelles présentent de nombreux cas d'utilisation efficaces. Comme ils ont différents modèles de données et plusieurs distinctions fondamentales, ils excellent dans différents domaines.

Bases de données orientées graphe

Les bases de données orientées graphe fournissent un schéma flexible qui permet des modifications dynamiques et des adaptations des données. L'accent mis sur les relations entre les données le rend utile dans les analyses, les recherches sémantiques ou les moteurs de recommandation. Une base de données orientée graphe constitue le meilleur choix dans les scénarios suivants :

  • Vous travaillez avec des données qui entretiennent des relations complexes, comme celles des réseaux sociaux, de la détection des fraudes, des graphiques de connaissances, des graphiques de sécurité ou des moteurs de recommandation personnalisés.
  • Vous avez besoin d'un schéma évolutif, car vous pouvez modifier les périphéries, les nœuds et les propriétés sans perturber le reste de la structure de la base de données
  • Vous travaillez avec des données interconnectées et devez effectuer plusieurs sauts, ou un nombre inconnu, de sauts entre les relations (requêtes de type ami d’ami).

Les bases de données orientées graphe sont flexibles, évolutives, dynamiques et présentent très bien les relations entre les données.

Base de données relationnelle

Les bases de données relationnelles offrent un schéma structuré offrant une excellente prise en charge de l'intégrité des données. Une base de données relationnelle constitue le meilleur choix dans les scénarios suivants :

  • Vous avez besoin de la conformité ACID et de niveaux élevés d'intégrité et de cohérence des données, comme dans le cas des transactions financières
  • Vous travaillez avec des données hautement structurées qui s'intègrent parfaitement au modèle de données tabulaire, comme dans le cas de la gestion des ressources d'entreprise
  • Vos données ont des relations limitées

Résumé des différences : base de données relationnelle et base de données orientée graphe

 
Bases de données relationnelles

Bases de données orientées graphe

Modèle

Tableau avec lignes et colonnes.

Nœuds interconnectés avec des données représentées sous forme de nœuds et de périphéries

Opérations

Les opérations SQL telles que la création, la lecture, la mise à jour et la suppression (CRUD).

Les opérations incluent le CRUD et les opérations de traversée de graphes.

Performances

Les bases de données relationnelles font face à des requêtes complexes lorsqu'elles traversent des relations, ce qui peut ralentir les performances.

Une base de données orientée graphe excelle dans la représentation et l’interrogation des relations entre les données connectées.

Simplicité d'utilisation

Les bases de données relationnelles fonctionnent bien avec de grands jeux de données et des données structurées. Elles éprouvent des difficultés lorsqu'il s'agit de requêtes à sauts multiples.

Une base de données orientée graphe est facile à utiliser lorsqu'il s'agit de données centrées sur les relations. À l'aide d'un langage de requête graphique, vous pouvez rapidement interroger des données sur plusieurs sauts.
     

Comment AWS peut-il vous aider à répondre à vos besoins en matière de bases de données orientées graphe et de bases de données relationnelles ?

Amazon Web Services (AWS) propose des solutions pour les cas d'utilisation de bases de données relationnelles et de bases de données orientées graphe.

 

Bases de données relationnelles

Amazon Relational Database Service (Amazon RDS) est un service géré qui facilite la configuration, l’utilisation et la mise à l’échelle d’une base de données relationnelle dans le cloud. Ce service offre une capacité économique et redimensionnable, tout en assurant la gestion des tâches chronophages d’administration de base de données. Amazon RDS prend en charge plusieurs moteurs de base de données, tels que ceux-ci :

Amazon Aurora est un service de base de données relationnelle moderne offrant des performances et une haute disponibilité à grande échelle. Il propose également des éditions entièrement compatibles avec MySQL et PostgreSQL. Amazon Aurora est aussi un service entièrement géré qui automatise les tâches d'administration chronophages comme l'approvisionnement matériel, la configuration de base de données, l'application de correctifs et les sauvegardes, tout en fournissant la sécurité, la disponibilité et la fiabilité des bases de données commerciales à 1/10 du coût.

Bases de données orientées graphe

Amazon Neptune est un moteur de base de données orientée graphe spécialisé et hautes performances.. Il est optimisé pour stocker des milliards de relations et interroger le graphique avec une latence de quelques millisecondes.
Neptune prend en charge les modèles de graphes populaires, à savoir le graphe de propriétés et le Resource Description Framework (RDF) du W3C. Il prend également en charge les langages de requête tels que Gremlin et SPARQL, ce qui vous permet de créer des requêtes qui parcourent des jeux de données hautement connectés.
Neptune propose plusieurs fonctionnalités :

  • Il est hautement disponible grâce aux réplicas de lecture, à la restauration à un instant dans le passé, à la sauvegarde continue et à la réplication à travers les zones de disponibilité.
  • Il est sécurisé avec prise en charge du chiffrement au repos.
  • Il est entièrement géré. Vous n'avez donc plus besoin de vous soucier des tâches de gestion des bases de données, comme la mise en service de matériel, l'application de correctifs logiciels, l'installation, la configuration ou les sauvegardes.

Commencez à utiliser des bases de données orientées graphe et des bases de données relationnelles sur AWS en créant un compte dès aujourd’hui.