0% ont trouvé ce document utile (0 vote)
33 vues5 pages

Stockage de Graphes : Méthodes et Défis

Jjjjjjjjj

Transféré par

wissemcherifi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
33 vues5 pages

Stockage de Graphes : Méthodes et Défis

Jjjjjjjjj

Transféré par

wissemcherifi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Stockage Matricial Stockage Matricial Stockage Matricial

Stockage Relationnel Stockage Relationnel Stockage Relationnel


Stockage Natif Stockage Natif Stockage Natif

Structures de Stockage : Matrice d’adjacence Structures de Stockage : Matrice d’adjacence

Gestion des Données Graphe

Stefania Dumbrava

ENSIIE

1 Mars 2021

Figure: Graphe orienté étiqueté


Figure: Graphe non-orienté non-étiqueté

1/36 2/36 3/36

Stockage Matricial Stockage Matricial Stockage Matricial


Stockage Relationnel Stockage Relationnel Stockage Relationnel
Stockage Natif Stockage Natif Stockage Natif

Matrice d’adjacence : Atteignabilité (I) Matrice d’adjacence : Atteignabilité (II) Matrice d’adjacence : Isomorphisme de graphe (I)
Pour une matrice d’adjacence, A, A2 = A · A représente les chemins de
longeur 2 entre les nœuds (éléments) appartenant à A. Les graphes représentés par A1 et A2 sont isomorphes, s’il y a une
matrice de pérmutations P, tel que P · A1 · P 1 = A2 .

Figure: Atteignabilité selon un chemin de longeur 2

Figure: Example de graphes isomorphes

4/36
Figure: Atteignabilité selon un chemin de longeur 2 5/36 6/36

Stockage Matricial Stockage Matricial Stockage Matricial


Stockage Relationnel Stockage Relationnel Stockage Relationnel
Stockage Natif Stockage Natif Stockage Natif

Matrice d’adjacence : Isomorphisme de graphe (II) Matrice d’adjacence Matrice d’adjacence


Les graphes représentés par A1 et A2 sont isomorphes, s’il y a une
matrice de pérmutations P, tel que P · A1 · P 1 = A2 .

Problèmes avec cette représentation matriciale


comment gèrer les graphes étiquetés ?
comment gèrer les graphes très grands ?
comment gèrer les graphes faiblement connectés ?

Figure: Example de graphes isomorphes

Figure: Example des représentations matriciales

Source: http://brainimaging.waisman.wisc.edu/ chung/graph/admatrix.jpg

7/36 8/36 8/36


Stockage Matricial Stockage Matricial Stockage Matricial
Stockage Relationnel Stockage Relationnel Stockage Relationnel
Stockage Natif Stockage Natif Stockage Natif

Matrice d’adjacence Interlude : Cas d’usage (I) Interlude : Cas d’usage (II)
Réseaux Sociaux (Facebook)
environ 1.4 bilion d’utilisateurs Réseaux de Transport (GMaps)
...comme structure de stockage
un utilisateur a en moyenne approx. 350 amis
Avante en Californie, approx. 2 millions de jonctions
matrice de taille au moins 1.400.000.000 x 1.400.000.000
facilement implementable dans la plus part de langages de approx. 350 valeurs non-nulles par ligne 99% des jonctions avec au moins 6 routes
programmation à travers des tableaux. matrice de taille au moins 2.000.000 x 2.000.000
moins de 6 valeurs non-nulles par ligne !

Désavantajes
seulement représente la topologie du graphe
pas de propriétés
pas de typage (étiquétes)
peu adapté au cas d’usage de la vraie vie...

Source: https://writings.stephenwolfram.com/2013/04/data-science-of-the-facebook-world/

9/36 10/36 11/36

Stockage Matricial Stockage Matricial Stockage Matricial


Stockage Relationnel Stockage Relationnel Stockage Relationnel
Stockage Natif Stockage Natif Stockage Natif

Défi Compression Matriciale Compression Matriciale

Comment compresser les données ?

12/36 13/36 14/36

Stockage Matricial Stockage Matricial Stockage Matricial


Stockage Relationnel Stockage Relationnel Stockage Relationnel
Stockage Natif Stockage Natif Stockage Natif

Triple Table Triple Table Tables Nœuds et Arêtes

Une table avec trois colonnes : sujet, prédicat, objet Deux tables universelles pour les nœuds et les arêtes
Une table avec trois colonnes : sujet, prédicat, objet Avantages
approche générique, simple, et dirécte
peut être implementé dans des moteurs relationnels
pérmet l’ajout des indexes pour une recherche plus efficace

Désavantages
les valeurs NULL ont besoin d’un traitement spécial
Référence : Daniel J. Abadi et al. “Scalable Semantic Web Data Management Using Vertical les requêtes doivent opérer sur tous les triplets (comme c’est le cas pour les column stores)
Partitioning”. [VLDB 2007]
(pas de partionnement des données selon le schéma) les requêtes doivent opérer sur tous les nœuds et les arêtes
beaucoup de redondance (pas de partionnement des données selon le schéma).

15/36 16/36 17/36


Stockage Matricial Stockage Matricial Stockage Matricial
Stockage Relationnel Stockage Relationnel Stockage Relationnel
Stockage Natif Stockage Natif Stockage Natif

Property Table Property Table Property Table

regrouper les propriétés qui ont tendance à être définis ensemble


dans une table
e.g., les propriétés “type”, “title”, et “copyright date” la table va Désavantages
stocker ensemble tous les triples qui ont une de ces propriétés la géstion des attributs qui ont plusieurs valeurs
plusieurs “property tables” avec des di⇤erents clusters des propriétés la géstion des requêtes qui ont des propriétés qui ne sont pas
peuvent être crées spécifiés
une propriété donnée peut seulement apparaı̂tre dans maximum un l’approche introduit des valeurs NULL
“property table”
les triples qui ne peuvent pas être regroupés dans un “property
table” vont être stockés dans une table spéciale (“left-over table”)

Figure: Exemple de stockage à base des “property tables”

18/36 19/36 20/36

Stockage Matricial Stockage Matricial Stockage Matricial


Stockage Relationnel Stockage Relationnel Stockage Relationnel
Stockage Natif Stockage Natif Stockage Natif

Property Class Table Property Class Table Approches á base des Property Tables

des ensembles des sujets qui sont similaires sont regroupés


(dans la même table)
les propriétés des sujets sont céntrales
une propriété peut exister dans plusieurs “property class tables”
un sujet peut aussi exister dans plusiers “property class tables

Désavantages
la géstion des attributs qui ont plusieurs valeurs
la géstion des requêtes dont les propriétés sont non-spécifiés
l’approche introduit des valeurs NULL Figure: Exemple comparatif
Figure: Exemple de stockage à base des “property class tables”

21/36 22/36 23/36

Stockage Matricial Stockage Matricial Stockage Matricial


Stockage Relationnel Stockage Relationnel Stockage Relationnel
Stockage Natif Stockage Natif Stockage Natif

Approches á base des Property Tables Stockage Vertical Stockage Vertical

une table par propriété et deux colonnes par table : sujet et objet
triage par sujet : recherche rapide et jointures efficaces (sort-merge)
permet d’avoir plusieurs valeurs per attribut
des méthodes de compression peuvent être appliqués
problèmes à gérér des requêtes dont les propriétés sont non-spécifiés

Figure: Exemple d’un column store


Figure: Exemple comparatif

24/36 25/36 26/36


Stockage Matricial Stockage Matricial Stockage Matricial
Stockage Relationnel Stockage Relationnel Stockage Relationnel
Stockage Natif Stockage Natif Stockage Natif

Stockage Natif Stockage Natif Stockage Natif

27/36 28/36 29/36

Stockage Matricial Stockage Matricial Stockage Matricial


Stockage Relationnel Stockage Relationnel Stockage Relationnel
Stockage Natif Stockage Natif Stockage Natif

Stockage Natif Stockage Natif Stockage Natif

30/36 31/36 32/36

Stockage Matricial Stockage Matricial Stockage Matricial


Stockage Relationnel Stockage Relationnel Stockage Relationnel
Stockage Natif Stockage Natif Stockage Natif

Stockage Natif Stockage Natif Stockage Natif

Désavantages
Avantages La chase des pointeurs pour des résultats intérmedières très larges
enregistrements de taille fixe “massive random memory access”
diréctement adressable byte par byte on peut rater plusieurs caches
pointeur vers le i-éme enregistrements e.g., plutôt que scanner for all points in X { do something
on peut le retrouver à la position s + i · l, ou s est la position du with the record} ... scanner
store et l est la taille fixé des enregistrements dans le store for all points in X { if position in X { do something
with the record }}
la structure du graphe peut être navigué facilement
est peut être plus e⇥cace
“pointer chasing” (chase des pointeurs)
Comment choisir quels pointeurs chaser ?
Besoin d’optimiser les requêtes

33/36 34/36 35/36


Stockage Matricial
Stockage Relationnel
Stockage Natif

Résumé

Plusieurs solutions de stockage :


matricialles : matrice d’adjacence, CSR, CSC
relationnelles : triple table, property (class) table, column store
natives : cas de Neo4j (usage des pointeurs)

36/36

Vous aimerez peut-être aussi