← Tous les projets

Social Networks Neo4j

Un réseau social modélisé en base graphe : comparaison NoSQL, modèle Neo4j, jeu de données synthétique et requêtes Cypher.

  • Neo4j
  • Cypher
  • Python
  • Faker

Voir le dépôt GitHub

Contexte

Projet tutoré du BUT Informatique, « Étude et expérimentation d’un service NoSQL ». Il fallait choisir un service NoSQL adapté à un réseau social, le justifier, puis l’expérimenter sur un jeu de données conçu pour l’occasion.

Équipe et mon rôle

Projet de groupe, 3 personnes.

J’ai été responsable de l’analyse comparative des solutions NoSQL et j’ai co-conçu le modèle de données.

Démarche

  • Étude préalable : comparaison de Neo4j, MongoDB et SPARQL, puis choix de Neo4j, car la valeur du réseau social tient à ses relations.
  • Modèle : graphe de propriétés avec contraintes d’unicité et index, couvrant utilisateurs, publications, interactions, groupes et signalements.
  • Génération : script Python reproductible, avec une graine fixe, des communautés thématiques et des comptes influenceurs pour obtenir un graphe réaliste.
  • Expérimentation : import sur Neo4j Aura, puis scénarios Cypher d’insertion, de requêtes, d’agrégation, de mise à jour et de suppression, dont des recommandations par chemins de longueur 2 à 3.

Visuels

Chiffres et faits

et 10 types de relations alimentés
7 labels
répartis en 5 communautés
3 000 utilisateurs
et 8 000 commentaires, sur 1 an simulé
5 000 publications
sur 109 067 relations au total
61 887 relations FOLLOWS
comparées avant le choix, Neo4j, MongoDB et SPARQL
3 solutions

Ce que j’en retiens

Les difficultés et les apprentissages sont venus du management du projet et de l’initialisation du cahier des charges.