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