Folien - Databases Systems Group

Werbung
Graph Pattern Matching
auf NUMA-Systemen
Frank Tetzel
Database Technology Group
21. Dezember 2015
Graphen und Graphdatenbanken
alternatives Datenmodell zum relationalem Modell
direkte Abbildung von Beziehungen zwischen Entitäten
native Ausführung von Graphalgorithmen
Beispiel:
I
I
I
I
I
I
soziale Netzwerke
Verkehrsnetzwerke
Moleküle
Proteine
Abhängigkeitsgraph von Quelldateien beim Kompilieren
Semantic Web, Linked Data
2
Linked Data extrahiert aus der Wikipedia
125 Sprachen
umfasst über 38 Millionen Entitäten
in Englisch: 4,5 Millionen Entitäten, davon 1,4 Millionen Personen,
735 000 Orte, 411 000 gestalterische Arbeiten
SPARQL-Endpunkt für Abfragen
Pattern Matching auf RDF-Triple
3
Property Graphdatenmodell
gerichtete Kanten
Label an Knoten und Kanten
Attribute an Knoten und Kanten
Mehrfachverbindungen
Titel=Graph
Name=Moritz
Person 2
Autor
Verleger
4
Artikel
3
Universität
kennt
kennt
Beginn=2006
Fach=Physik
Person 1
besucht
Vorname=Max
Nachname=Müller
Name=TUD
4
Anfragegraph
Suche nach Freunden von Freunden unter Ausschluss der direkten
Freunde
Person
Person
1
kennt
2
kennt
kennt
¬
3 Person
5
Beispiel
Person
Person 0
1
kennt
8
wohnt
Stadt
Name=Altstadt
Person
Stadt
0
Person 1
kennt
wohnt
kennt
besucht
3
Name=Neustadt
kennt
kennt
kennt
Universität
Person 2
Fach=Physik
2
besucht
Fach=Physik
besucht
3
besucht
Fach=Physik
Universität
wohnt
Fach=Informatik
besucht
Person 4
6 Person
wohnt
Fach=Physik
Stadt
4
Name=Neustadt
wohnt
5 Person
Stadt
7
Name=Kleinposemuckel
6
Pattern Matching
Backtrackingalgorithmen: Ullmann, VF2
sequentiell, keine Nutzung mehrerer Prozessoren
reines Strukturmatching auf Knoten und Kanten
keine Beachtung von Label und Properties
TurboISO nutzt Label für Pruning
Aufgabe
parallele Abarbeitung auf dem Forschungsprototyp ERIS
7
ERIS
Hauptspeicherdatenbank
datenorientiert
physisch partitioniert auf NUMA-Knoten
ein Ausführungskontext je Hardwarekontext, Autonomous Execution
Units (AEU) genannt
asynchrone Kommunikationsschicht zwischen AEUs
8
Datenorientiert vs. Transaktionsorientiert
disjunkte Partitionierung
exklusiver Zugriff der AEU auf eigene Partition
9
Datenorientiert vs. Transaktionsorientiert
disjunkte Partitionierung
exklusiver Zugriff der AEU auf eigene Partition
Vorteile
keine Synchronisation beim Datenzugriff notwendig
alle Daten im lokalen Speicherbereich des NUMA-Knotens
9
Datenorientiert vs. Transaktionsorientiert
disjunkte Partitionierung
exklusiver Zugriff der AEU auf eigene Partition
Vorteile
keine Synchronisation beim Datenzugriff notwendig
alle Daten im lokalen Speicherbereich des NUMA-Knotens
Probleme
Nachrichtenzustellung
dynamische Partitionierung mit Lastverteilung
9
Datenrepräsentation
Header
2 | Person
Person 2
10
Datenrepräsentation
Header
Knotenattribute
2 | Person
Name=Jan | Alter=23
Person 2
Name=Jan
Alter=23
10
Datenrepräsentation
0
Header
Knotenattribute
eingehende
Kanten
2 | Person
Name=Jan | Alter=23
{0}
kennt
Person 2
Name=Jan
Alter=23
10
Datenrepräsentation
0
Header
Knotenattribute
eingehende
Kanten
ausgehende
Kanten
2 | Person
Name=Jan | Alter=23
{0}
{0}|{4}|{3}
kennt
kennt
Person 2
Name=Jan
Alter=23
besucht
3
wohnt
4
10
Datenrepräsentation
0
Header
Knotenattribute
eingehende
Kanten
ausgehende
Kanten
Kantenattribute
(ausgehend)
2 | Person
Name=Jan | Alter=23
{0}
{0}|{4}|{3}
Fach=Physik
kennt
kennt
Person 2
Name=Jan
Alter=23
besucht
3
Fach=Physik
wohnt
4
10
Datenrepräsentation
Person
Person 0
kennt
kennt
1
kennt
besucht
Knotenattribute
eingehende
Kanten
ausgehende
Kanten
Kantenattribute
(ausgehend)
2 | Person
Name=Jan | Alter=23
{0}
{0}|{4}|{3}
Fach=Physik
0 | Person
Name=Egon | Alter=42
{1, 2}
{2}
Fach=Physik
Universität
Person 2
Name=Jan
Alter=23
Header
3
besucht
4 | Stadt
Name=Neustadt
{2, 5}
Fach=Physik
wohnt
besucht
3 | Universität
{1, 2, 5}
Fach=Physik
4
wohnt
5 Person
1 | Person
Name=Benny | Nachname=Frandsen
5 | Person
Name=Yvonne | Nachname=Jensen
{0}|{3}
{3}|{4}
Fach=Physik
Fach=Physik
10
Pruning
schnelle Prüfung möglicher Kandidatenpaare
Vergleich des Verzweigungsgrades der Knoten
eingehende und ausgehende Kanten getrennt
für jedes Label der Kanten einzeln
TurboISO: Neighborhood Label Frequency (NLF) Filter
Sei u ein Knoten im Anfragegraph und v ein Knoten im Datengraph:
∀l 0 ∈ L, (|Succq (u, l 0 )| ≤ |Succg (v, l 0 )|) ∧ (|Predq (u, l 0 )| ≤ |Predg (v, l 0 )|)
11
Pruning
schnelle Prüfung möglicher Kandidatenpaare
Vergleich des Verzweigungsgrades der Knoten
eingehende und ausgehende Kanten getrennt
für jedes Label der Kanten einzeln
TurboISO: Neighborhood Label Frequency (NLF) Filter
Sei u ein Knoten im Anfragegraph und v ein Knoten im Datengraph:
∀l 0 ∈ L, (|Succq (u, l 0 )| ≤ |Succg (v, l 0 )|) ∧ (|Predq (u, l 0 )| ≤ |Predg (v, l 0 )|)
Anfragegraph
kennt
0
wohnt
besucht
11
Pruning
schnelle Prüfung möglicher Kandidatenpaare
Vergleich des Verzweigungsgrades der Knoten
eingehende und ausgehende Kanten getrennt
für jedes Label der Kanten einzeln
TurboISO: Neighborhood Label Frequency (NLF) Filter
Sei u ein Knoten im Anfragegraph und v ein Knoten im Datengraph:
∀l 0 ∈ L, (|Succq (u, l 0 )| ≤ |Succg (v, l 0 )|) ∧ (|Predq (u, l 0 )| ≤ |Predg (v, l 0 )|)
Anfragegraph
Datengraph
kennt
kennt kennt
0
0
wohnt
besucht
kennt
11
Pruning
schnelle Prüfung möglicher Kandidatenpaare
Vergleich des Verzweigungsgrades der Knoten
eingehende und ausgehende Kanten getrennt
für jedes Label der Kanten einzeln
TurboISO: Neighborhood Label Frequency (NLF) Filter
Sei u ein Knoten im Anfragegraph und v ein Knoten im Datengraph:
∀l 0 ∈ L, (|Succq (u, l 0 )| ≤ |Succg (v, l 0 )|) ∧ (|Predq (u, l 0 )| ≤ |Predg (v, l 0 )|)
Anfragegraph
Datengraph
kennt
kennt kennt
0
0
wohnt
besucht
kennt
11
Pruning
schnelle Prüfung möglicher Kandidatenpaare
Vergleich des Verzweigungsgrades der Knoten
eingehende und ausgehende Kanten getrennt
für jedes Label der Kanten einzeln
TurboISO: Neighborhood Label Frequency (NLF) Filter
Sei u ein Knoten im Anfragegraph und v ein Knoten im Datengraph:
∀l 0 ∈ L, (|Succq (u, l 0 )| ≤ |Succg (v, l 0 )|) ∧ (|Predq (u, l 0 )| ≤ |Predg (v, l 0 )|)
Anfragegraph
Datengraph
kennt
kennt kennt
0
0
wohnt
besucht
kennt
5
wohnt
besucht
11
Pruning
schnelle Prüfung möglicher Kandidatenpaare
Vergleich des Verzweigungsgrades der Knoten
eingehende und ausgehende Kanten getrennt
für jedes Label der Kanten einzeln
TurboISO: Neighborhood Label Frequency (NLF) Filter
Sei u ein Knoten im Anfragegraph und v ein Knoten im Datengraph:
∀l 0 ∈ L, (|Succq (u, l 0 )| ≤ |Succg (v, l 0 )|) ∧ (|Predq (u, l 0 )| ≤ |Predg (v, l 0 )|)
Anfragegraph
Datengraph
kennt
kennt kennt
0
0
wohnt
besucht
kennt
5
wohnt
besucht
11
Pruning
schnelle Prüfung möglicher Kandidatenpaare
Vergleich des Verzweigungsgrades der Knoten
eingehende und ausgehende Kanten getrennt
für jedes Label der Kanten einzeln
TurboISO: Neighborhood Label Frequency (NLF) Filter
Sei u ein Knoten im Anfragegraph und v ein Knoten im Datengraph:
∀l 0 ∈ L, (|Succq (u, l 0 )| ≤ |Succg (v, l 0 )|) ∧ (|Predq (u, l 0 )| ≤ |Predg (v, l 0 )|)
Anfragegraph
Datengraph
kennt
kennt kennt
0
0
wohnt
besucht
kennt
kennt
5
wohnt
2
besucht
kennt
wohnt besucht
11
Beispiel
Person
Person 0
1
kennt
8
wohnt
Stadt
Name=Altstadt
Person
Stadt
0
Person 1
kennt
wohnt
kennt
besucht
3
Name=Neustadt
kennt
kennt
kennt
Universität
Person 2
Fach=Physik
2
besucht
Fach=Physik
besucht
3
besucht
Fach=Physik
Universität
wohnt
Fach=Informatik
besucht
Person 4
6 Person
wohnt
Fach=Physik
Stadt
4
Name=Neustadt
wohnt
5 Person
Stadt
7
Name=Kleinposemuckel
12
1
0
Person
Person 1
kennt
Person 4
kennt
kennt
Stadt
0
wohnt
kennt
besucht
Fach=Physik
2
3
Name=Neustadt
kennt
1
2
besucht
1
wohnt
besucht
kennt
3
besucht
8
6
1
Universität
wohnt
4
wohnt
besucht
wohnt
5
7
13
1
2
0
Person
Person 1
kennt
Person 4
kennt
kennt
Stadt
0
wohnt
kennt
besucht
Fach=Physik
2
3
Name=Neustadt
kennt
1
2
besucht
1
wohnt
besucht
2
kennt
3
besucht
8
6
1
Universität
wohnt
4
wohnt
besucht
wohnt
5
7
13
1
2
0
Person
Stadt
0
Person 1
kennt
Person 4
wohnt
kennt
besucht
Name=Neustadt
Fach=Physik
2
3
3
1
kennt
kennt
kennt
2
besucht
1
wohnt
besucht
2
kennt
3
besucht
8
6
1
Universität
wohnt
4
wohnt
besucht
wohnt
5
7
13
4
1
2
0
Person
Stadt
0
Person 1
kennt
Person 4
wohnt
kennt
besucht
Name=Neustadt
Fach=Physik
2
3
3
1
kennt
kennt
kennt
2
besucht
1
wohnt
besucht
2
kennt
3
besucht
8
6
1
Universität
wohnt
4
wohnt
besucht
wohnt
5
7
13
4
1
2
0
Person
Stadt
0
Person 1
kennt
Person 4
wohnt
kennt
besucht
Name=Neustadt
Fach=Physik
2
3
3
kennt
kennt
kennt
1
5 besucht
wohnt
8
2
kennt
Fach=Physik
1
2
besucht
3
besucht
6
1
Universität
wohnt
4
wohnt
besucht
wohnt
5
7
13
4
1
2
0
Person
Stadt
0
Person 1
kennt
Person 4
wohnt
kennt
besucht
Name=Neustadt
Fach=Physik
2
3
3
1
kennt
kennt
kennt
2
besucht
1
wohnt
5 besucht 6
2
kennt
3
besucht
8
6
1
Universität
wohnt
4
wohnt
besucht
wohnt
5
7
13
4
1
7
2
0
Person
Stadt
0
Person 1
kennt
Person 4
wohnt
kennt
besucht
2
3
Name=Neustadt
Fach=Physik
3
1
kennt
kennt
kennt
2
besucht
1
wohnt
8
5 besucht 6
2
kennt
Name=Altstadt
3
besucht
6
1
Universität
wohnt
4
wohnt
besucht
wohnt
5
7
13
4
1
7
2
0
Person
Stadt
0
Person 1
kennt
Person 4
wohnt
kennt
besucht
Name=Neustadt
Fach=Physik
2
3
3
1
kennt
kennt
2
kennt
2
besucht
1
wohnt
5 besucht 6
2
kennt
3
besucht
8
6
1
Universität
wohnt
4
wohnt
besucht
wohnt
5
7
13
4
1
7
2
0
kennt
1
wohnt
5 besucht 6
2
kennt
3
besucht
8
3
Person
Stadt
0
Person 1
kennt
Person 4
wohnt
kennt
besucht
Name=Neustadt
Fach=Physik
2
3
3
1
kennt
2
kennt
2
besucht
6
1
Universität
wohnt
4
wohnt
besucht
wohnt
5
7
13
4
1
7
2
0
kennt
1
wohnt
8
3
2
Person
Stadt
0
Person 1
kennt
Person 4
wohnt
kennt
besucht
2
3
Name=Neustadt
Fach=Physik
3
1
kennt
2
kennt
4
5 besucht 6
2
kennt
2
besucht
3
besucht
6
1
Universität
wohnt
4
wohnt
besucht
wohnt
5
7
13
4
1
3
2
0
kennt
7
1
wohnt
5 besucht 6
2
kennt
3
besucht
8
3
2
Person
Stadt
0
Person 1
kennt
Person 4
wohnt
kennt
besucht
2
3
Name=Neustadt
Fach=Physik
3
1
kennt
2
kennt
4
2
besucht
5
6
1
Universität
wohnt
4
Fach=Physik
wohnt
besucht
wohnt
5
7
13
4
1
3
2
0
kennt
7
1
wohnt
5 besucht 6
2
kennt
8
3
2
Person
Stadt
0
Person 1
kennt
Person 4
wohnt
kennt
besucht
2
3
Name=Neustadt
Fach=Physik
3
kennt
2
kennt
4
4
1
5
2
besucht
3
besucht
6
1
Universität
wohnt
4
wohnt
besucht
wohnt
5
7
13
4
1
3
2
0
kennt
7
1
wohnt
5 besucht 6
2
kennt
8
3
2
Person
Stadt
0
Person 1
kennt
Person 4
wohnt
kennt
besucht
2
3
Name=Neustadt
Fach=Physik
3
kennt
2
kennt
4
4
1
5
2
besucht
3
besucht
6
5
6
1
Universität
wohnt
4
besucht
wohnt
5
Fach=Informatik
wohnt
7
13
4
1
3
2
0
kennt
7
1
wohnt
5 besucht 6
2
kennt
8
3
2
Person
Stadt
0
Person 1
kennt
Person 4
wohnt
kennt
besucht
2
3
Name=Neustadt
Fach=Physik
3
kennt
2
kennt
4
4
1
5
2
besucht
3
6
besucht
5
6
1
Universität
wohnt 7
4
wohnt
besucht
wohnt
5
7
Name=Neustadt
13
Nachrichtentypen
FindFirst
I
I
erste Nachricht
broadcast
MatchVertex
I
I
Prüfung eines Knotenpaars
Einzelnachricht, direkt zugestellt
NextEdge
I
I
Rücksprung zu Verzweigungspunkt für Backtracking
Einzelnachricht
14
Evaluation
LDBC-Datensatz „Interactive Workload“
14 komplexe Anfragen abgewandelt rein auf Pattern Matching
Skalierungsfaktoren 1, 3, 10
Testrechner mit 8 NUMA-Knoten mit je 8 Prozessoren und 8 GiB
Arbeitspeicher
15
Vergleich mit anderen Systemen
Vergleich mit Neo4j, SQLite und PostgreSQL
festes SQL-Schema für SQLite und PostgreSQL
kein festes Schema in Neo4j
Anfrage in Cypher bzw. SQL
eingebettete Anfragebeschreibung in ERIS
ERIS nur mit 1 AEU
LDBC-Datensatz mit Skalierungsfaktor 1
16
Vergleich mit anderen Systemen
Zeit in ms
Anfrage
Neo4j
SQLite
PostgreSQL
ERIS
2
3
4
5
6
7
8
9
10
11
414,6
495218,0
11595,0
25423,0
9737,6
43,6
43,5
915,0
199287,0
187,0
191,9
8261,0
22,3
17727,3
1043700,0
1,4
1,0
86,2
501,7
3,8
200,5
1911,2
31,2
584,3
893,0
413,5
3,2
90,3
309,8
9,7
34,4
2313,3
20,6
231,9
149,1
4,2
3,9
(4529,6)
410,2
8,0
17
Skalierungverhalten
Skalierungsfaktor 1
Anfrage 4
Anfrage 5
Anfrage 6
Anfrage 7
Anfrage 8
Anfrage 10
Anfrage 11
400
Zeit in ms
300
200
100
0
20
21
22
23
24
Anzahl der AEUs
25
26
18
Skalierungverhalten
Skalierungsfaktor 3
Anfrage 3
Anfrage 4
Anfrage 5
Anfrage 6
Anfrage 7
Anfrage 8
Anfrage 11
500
Zeit in ms
400
300
200
100
0
20
21
22
23
24
Anzahl der AEUs
25
26
19
schlechtes Verhalten
Anfrage 2
Zeit in ms
70
60
50
40
20
21
22
23
24
Anzahl der AEUs
25
26
20
Ausblick
dynamisches Partitionierungsschema mit Lastverteilung
optimale Wahl des Startknotens und der Reihenfolge der Kindknoten
Aufweichung der Schemaflexibilität zugunsten effizienterer
Datenrepräsentation
Definition von Indizes auf Attributen
reguläre Pfadausdrücke, kürzester Weg zwischen zwei Knoten
parallele Abarbeitung des Anfragegraphen
0
1
3
2
4
5
6
21
Ausblick
dynamisches Partitionierungsschema mit Lastverteilung
optimale Wahl des Startknotens und der Reihenfolge der Kindknoten
Aufweichung der Schemaflexibilität zugunsten effizienterer
Datenrepräsentation
Definition von Indizes auf Attributen
reguläre Pfadausdrücke, kürzester Weg zwischen zwei Knoten
parallele Abarbeitung des Anfragegraphen
0
1
3
2
4
5
6
21
Ausblick
dynamisches Partitionierungsschema mit Lastverteilung
optimale Wahl des Startknotens und der Reihenfolge der Kindknoten
Aufweichung der Schemaflexibilität zugunsten effizienterer
Datenrepräsentation
Definition von Indizes auf Attributen
reguläre Pfadausdrücke, kürzester Weg zwischen zwei Knoten
parallele Abarbeitung des Anfragegraphen
0
1
3
2
4
5
21
Herunterladen