Utilisation Massive
! Changez de base de données !
Et si on prenait 1000 noeuds ?
L'objectif de cet exercice est d'observer le comportement du logiciel lorsque l'on a affaire à beaucoup de données :
L'idée est donc de simuler de manière minimaliste un réseau social. |
Vous allez avoir besoin du script cypher suivant pour extraire les 3 csvs qui vont suivre :
Question
Devant cette masse de données, on peut se demander quels sont les nœuds qui communiquent le plus ?
Formalisme :
Les nœuds sont de la forme : (n:Node {name: 'node_X' }) avec X allant de 1 à 1000
Les relations sont de la forme : (n1)-[:SUIVRE { type: 'suivi' }]->(n2) ou (n1)-[:COMMUNIQUER{ type: 'communication' }]->(n2)
Penser à utiliser LIMIT, c'est conseiller.
Il est sans doute question de se servir de "ORDER BY"
Question
Dans une masse de données comme celle-ci, il pourrait être intéressant de trouver les plus court chemin entre les noeuds.
Il existe une fonction Cypher/Neo4J pour ça : shortestPath qui renvoie la liste des noeuds du plus court chemin d'un noeud donné à un autre.
Pour l'utiliser, il faut la lancer dans un match et lui donner une relation en paramètre.
On lui donne une relation ainsi que les deux nœuds précédemment matchés comme ceci : shortestPath((X)-[R*]->(Y)) avec X, Y des noeuds et R une relation.
L'étoile '*' désigne le fait que l'on cherche l'ensemble des plus courts chemins.
Voici la requête :
MATCH (n:Node { name:"node_200" }),(n2:Node { name:"node_5" }),
p = shortestPath((n)-[:SUIVRE*]->(n2))
RETURN p
![](../res/exercice_3_shortest_suivre.png)
Voici la même requête mais avec la relation ":COMMUNIQUER" :
![](../res/exercice_3_shortest_communiquer.png)