Les bases orientées graphes

Le graphe de propriétés : nœuds, relations orientées et typées, étiquettes, propriétés ; modéliser un domaine en graphe, parcourir de voisin en voisin sans jointure, et les usages.

  • 25 cartes
  • 5 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation
  5. Comprendre

Quelques cartes du deck

  • Base orientée graphes : de quoi s'agit-il ?

    Voir la réponse

    Base dont les données sont des entités reliées entre elles, et qui garde ces liens directement attachés aux entités pour les suivre sans recalcul.

    Les liens sont des données de premier rang, déjà stockées : suivre une relation coûte le même prix, que la base contienne mille ou cent millions de nœuds.

  • Dans ce graphe d'amitiés (relations AMI dans les deux sens), quels sont les amis d'amis de Léa, c'est-à-dire à deux sauts, sans Léa ni ses amis directs ?

    ```text
    Léa – Sam
    Léa – Inès
    Sam – Inès
    Sam – Noé
    Inès – Zoé
    `

    • Noé et Zoé
    • Sam et Inès
    • Noé seulement
    • Sam, Inès, Noé et Zoé
    Voir la réponse

    Noé et Zoé

    Les amis directs de Léa sont Sam et Inès (un saut). Leurs amis sont Léa, Inès, Noé (pour Sam) et Léa, Sam, Zoé (pour Inès). Une fois Léa, Sam et Inès écartés, il reste Noé et Zoé.

  • Dans un graphe de propriétés, une relation a toujours un … (elle va d'un nœud à un autre) et un … (par exemple AMI ou A_REALISE).

    Voir la réponse

    Dans un graphe de propriétés, une relation a toujours un sens (elle va d'un nœud à un autre) et un type (par exemple AMI ou A_REALISE).

    Le sens a de l'importance : (a)-[:A_REALISE]->(f) dit que a a réalisé f, pas l'inverse. Une relation symétrique, comme une amitié, se lit dans les deux sens à la requête.

  • Graphe de propriétés : de quoi s'agit-il ?

    Voir la réponse

    Modèle fait de nœuds et de relations orientées et typées, chaque nœud ou relation pouvant porter des propriétés nom-valeur.

    Dans (:Personne {nom:'Keanu'})-[:A_JOUE_DANS {role:'Neo'}]->(:Film), la relation a un type, un sens et sa propre propriété, role.

  • « Amis d'amis d'amis » prend 30 secondes en SQL, avec trois auto-jointures sur 50 millions de lignes. Quelle est la cause, et la solution ?

    • La table n'a pas assez de colonnes ; il faut en ajouter une par saut
    • SQL ne peut pas parcourir de relations ; il faut stocker le résultat dans un champ JSON
    • Les amitiés sont stockées dans le mauvais sens ; il suffit de les inverser
    • Chaque saut refait une jointure sur toute la table ; un graphe suit les voisins
    Voir la réponse

    Chaque saut refait une jointure sur toute la table ; un graphe suit les voisins

    SQL sait faire la requête, mais chaque auto-jointure parcourt une grande table avec un index. Dans un graphe, on part d'un nœud et on suit les relations directement : le travail suit le nombre de voisins rencontrés.