Bases de données graphes - Laboratoire d'informatique de ... · Graphe de propriétés • Type :...
Transcript of Bases de données graphes - Laboratoire d'informatique de ... · Graphe de propriétés • Type :...
Mohamed-AmineBaazizi–email:
pré[email protected]://www-bd.lip6.fr/wiki/site/enseignement/master/
bdle/start
Bases de données graphes
Les données graphes
• Les graphes sont partout – Réseaux sociaux ou de transports– Interactions de protéines– Recommandation en ligne
Les traitements sur les graphes
• Requêtes topologiques – Les amis des amis – La station la plus proche – Les utilisateurs ayant commandé un même article
• Analyses en mode batch– Détection des cluster (communautés)– Calcul de statistiques globales (eg. Page Rank)
Systèmes de Gestion Données graphe
• Systèmes transactionnels – Accès online (OLTP)– Systèmes natifs ou sur couche du relationnel– Eg. Oracle, Neo4j, OrientDB
• Systèmes analytiques – Accès en mode batch (OLAP)– Le plus souvent distribués – Eg. Giraph, GraphX, Pegasus
Limite des systèmes relationnels• SQL récursif (cours précédent)• Inconvénients :
– Modèle de données rigide, liens implicites – Requêtes complexes, expliciter les liens avec joins– Performances dégradées
• Alternative: systèmes natifs – Modèle orienté graphe : graphe de propriétés – Primitives de requêtes explicitant les liens – Moteurs d’exécution optimisés
Exemple d’un système natif : Neo4J
• Système NoSQL orienté graphes• Alternative aux extensions des BD SQL• Projet débuté en 2000, 1re version en 2010• Version open source et version commerciale• Différents cas d’usage :
– Recommandation– Détection de fraude
Graphe de propriétés
• Type : étiquette – NType (RType) : types pour les nœuds (relations)• Propriété : clef/valeur• Valeur : boolean, numeric, String, Liste de valeurs.
• Pour chaque Nœud ou Relation associer ensemble de types et ensemble de propriétés
Person, Employee {name : Jim, age : 47'}
Project {title : Graph Databases town : Paris, duration:6}
COORDINATES {since :02/03/2013}
Types
Propriétés
Graphe de propriétés : illustration
Person, Employee
{name : Jim, age : 47} Person, Employee {name : Sally, age : 28}
MANAGER, WORKS_WITH {since : 01/09/2015}
Project {title : Graph Databases town : Paris}
Person, Employee {name : John, age : 30}
Department {name : 4FUTURE}
Cypher
• langage déclaratif• interrogation et manipulation de graphes de
propriétés• pattern matching pour spécifier motifs de
graphes comme Sparql• langage non fermé : sémantique définie avec
liaisons
Interrogation avec Cypher
• MATCH : motif recherché• WHERE : filtre sur le résultat• RETURN : formatage du résultat• LIMIT : restriction de la taille du résultat• ORDER BY : tri du résultat
Interrogation avec Cypher : motifs de graphe
• Match(m) où m = MN|MR, … , MN|MR • MN = motif de nœuds, liaison de variables
(var)(var : NType1 : … : NTypen )(var : NType1 : … : NTypen { cle : val, … } )
(n)(n: Person)(n: Person:Employee)(n: Projet {town: ’Paris’})
Person, Employee {name : Jim, age : 47'}
Project {title : Graph Databases town : Paris, duration:6}
Interrogation avec Cypher : motifs de graphe
• Match(m) où m = MN|MR, … , MN|MR • MR = motif de relations
MN - [motif de chemin] -> MN MN <- [motif de chemin] - MN MN - [motif de chemin] - MN
Interrogation avec Cypher : motifs de graphe
• Match(m) où m = MN|MR, … , MN|MR • MR = motif de relations
MN - [motif de chemin] -> MN MN <- [motif de chemin] - MN MN - [motif de chemin] - MN
• Match(m) où m = MN, …,MN, MRS, …, MRS • MR = motif de relations simplifié
var - [motif de chemin] -> var var <- [motif de chemin] - var var - [motif de chemin] - var
Interrogation avec Cypher : motifs de chemin
Taille fixe vide:RType:RType {cle:val, …}:RType1|RType2
• Exemples(a) - -> (b)(a) - [:Coordinates]->(b)(a) - [:Coordinates {since:’txt’}]->(b)(a) - [:Manage | :Works_with] -> (b)
Person, Employee {name : Jim, age : 47'}
Project {title : Graph Databases town : Paris, duration:6}
COORDINATES {since :02/03/2013}
Interrogation avec Cypher : motifs de chemin
Taille variablebound: *, num ..*, *..num, *num..num :Rtype bound
• motifs de chemins : – (u)-->(z)<--(v), (u)-->()<--(v), (u)--(v) – (u) - [*2] → (v) équivalent à (u) → () → (v) – (u) - [*3..5] → (v) : longueur entre 3 et 5
(relations) – (u) - [*3..] → (v) : chemin de longueur
minimum 3 – (u) - [*..5] → (v) : chemin de longueur
maximum 5 – (u) - [*] → (v) : n'importe quelle longueur
• Exemples(x) - [*]- (y)(x) - [:KNOWS*1..2] - (y)
DémodeNeo4J
• Téléchargersurh9ps://neo4j.com/• Lancerledaemon:./bin/neo4jconsole• Ouvrirl’interfacegraphiquedepuisvotrenavigateur:localhost:7474
• ConsulterladocumentaPon