Agence web » Actualités du digital » Qu'est-ce qu'une base de données graphique et à quoi sert-elle?

Qu'est-ce qu'une base de données graphique et à quoi sert-elle?

Eduard Muzhevskyi / Shutterstock

Les bases de données graphiques sont un type spécial de base de données stockant des structures de données complexes qu'il serait impossible de stocker dans une base de données relationnelle traditionnelle. Ils sont surtout utilisés pour les réseaux sociaux, car ils sont beaucoup plus performants pour certaines requêtes.

Qu'est-ce qu'une base de données graphique?

Les bases de données graphiques sont le plus souvent utilisées pour les données hautement interconnectées et pour les situations où le contenu des données lui-même importe moins que la structure globale.

Le cas d'utilisation le plus simple pour les données de graphique est pour les réseaux sociaux. Considérez un réseau de personnes; chaque personne a une liste d'amis et a des relations avec d'autres personnes. Chaque personne fait également des publications, souvent des centaines d'entre elles. Chaque publication pourrait avoir des milliers de personnes interagissant avec elle. Donc, bien que le tweet ne contienne que 280 caractères, il y a tellement plus à stocker à ce sujet.

Ce n'est certainement pas le seul cas d'utilisation, juste le plus digeste – les bases de données graphiques sont utilisées pour toutes sortes de choses. Un autre exemple est la détection de fraude; dites que vous êtes une banque et souhaitez signaler les comptes suspects. Il peut être un peu compliqué pour deux comptes distincts d'avoir la même adresse ou de partager des numéros de téléphone. Avec une base de données graphique, vous pouvez créer un graphique de la connexion entre les deux comptes et identifier des problèmes comme celui-ci beaucoup plus efficacement qu'une base de données relationnelle.

Dans une base de données graphique, chaque objet est appelé un nœud. Un nœud peut avoir un nombre illimité de propriétés, très similaire au fonctionnement d'une base de données de documents. Une base de données de documents stockerait simplement chaque nœud en tant que document distinct dans une collection (tableau) de documents, sans tenir compte de la façon dont ils se connectent.

Dans une base de données graphique, les connexions entre les nœuds sont appelées bordset ils peuvent connecter deux nœuds de n'importe où dans le tableau. Les arêtes définissent les relations entre les nœuds et peuvent avoir des types spécifiques. Par exemple, deux amis seraient connectés avec un bord «Amis», mais un utilisateur serait connecté à un message avec un bord «Publié» ou «Aimé».

Qu'est-ce qui les rend plus rapides?

Ce n'est pas que des bases de données relationnelles comme MySQL ne peut pas stocker des structures de type graphique – des liens comme ceux-ci sont toujours des concepts de base pour les tables SQL. Les liens forment des connexions entre les tables, ce qui permet de stocker et de mettre à jour les données dans des tables distinctes tout en conservant un lien ailleurs dans la base de données, très similaire au fonctionnement des pointeurs en C. Dans l'exemple de réseau social, vous ne voudriez pas stocker le nom de chaque ami qu'un utilisateur donné a comme ami peut changer son nom, vous stockez donc à la place l'ID de l'ami, puis effectuez une recherche chaque fois que vous avez besoin des bonnes données. Peut-être que vous mettez en cache les résultats pour prendre une certaine charge de la base de données, mais la plupart des systèmes fonctionneront de la même manière.

Le stockage d'un ensemble de liens (comme une liste d'amis) est correct, mais le problème survient lorsque vous commencez à effectuer tout type d'analyse complexe. L'exemple classique est la recherche d'amis d'amis. Pour obtenir une liste de tous ceux qui ont un ami commun avec la personne donnée, vous devez parcourir la liste d'amis de la personne donnée, puis parcourir la liste d'amis de chaque ami, puis effectuer une recherche pour chaque enregistrement. Vous devez également vous assurer que vous ne renvoyez pas les enregistrements en double, ce qui constitue une boucle supplémentaire.

Si vous connaissez Big O Notation, vous pouvez déjà voir le problème ici. C’est un problème de complexité exponentielle; faire plusieurs boucles imbriquées comme celle-ci casse l'ordinateur très rapidement. Ce n'est pas non plus une manière intelligente de résoudre ce problème.

Jetez un œil à cette référence de neo4j exécutant la requête amis d'amis, par rapport à une base de données relationnelle traditionnelle (comme MySQL):

En profondeur 2, il s'agit d'une simple requête pour les deux bases de données. À la profondeur 3, MySQL devient incapable d'exécuter cette requête dans un délai normal, ce qui prend 30 secondes pour renvoyer une réponse. À son crédit, il parvient à renvoyer la requête de profondeur 4 après 25 minutes, bien que la profondeur 5 plante la base de données.

La base de données graphique n'a aucun problème à renvoyer l'une de ces requêtes, tous les temps d'exécution étant inférieurs à 2 secondes, ce qui la rend des milliers de fois plus rapide.

Comment fait-il cela? Mathématiques très compliquées, surtout. Les graphiques sont une structure mathématique dans l'âme, et il y a beaucoup de théorie derrière, que nous ne sommes absolument pas qualifiés pour discuter en détail. Mais les graphiques relationnels sont assez simples à comprendre visuellement, ce qui facilite le travail avec les bases de données graphiques.

Si vous voulez commencer à travailler avec un, vous devrez choisir et installer une base de données de graphiques. Neo4j est gratuit et open source, et une option très populaire. AWS possède sa base de données Neptune, que vous pouvez essayer gratuitement, mais que vous devez héberger sur AWS. Certaines bases de données multimodèles prennent en charge les graphiques en option, comme Microsoft SQL Server, Oracle Database et ArrangoDB.

★★★★★