Bases de données graphes - Laboratoire d'informatique de ... · Graphe de propriétés • Type :...

Post on 28-May-2020

6 views 0 download

Transcript of Bases de données graphes - Laboratoire d'informatique de ... · Graphe de propriétés • Type :...

Mohamed-AmineBaazizi–email:

prénom.nom@lip6.frh9p://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