Download - A Pattern-Aware Graph Mining System
![Page 1: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/1.jpg)
A Pattern-Aware Graph Mining SystemKasra Jamshidi Rakesh Mahadasa Keval Vora
Simon Fraser University
https://github.com/pdclab/peregrine
![Page 2: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/2.jpg)
Why should you pay attention?
![Page 3: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/3.jpg)
executes 700x fasterPeregrine
![Page 4: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/4.jpg)
consumes 100x less memoryPeregrine
![Page 5: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/5.jpg)
scales to 100x larger datasetsPeregrine
![Page 6: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/6.jpg)
On 8x fewer machines
![Page 7: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/7.jpg)
With a more expressive API
![Page 8: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/8.jpg)
a
db
a
bd
Data Graph
e
c
gf
Graph Mining
a
db
7
![Page 9: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/9.jpg)
a
db
a
bd
Graph Mining
e
c
gf
Data Graph
a
db
8
![Page 10: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/10.jpg)
a
db
a
bd
Graph Mining
e
c
gf
Data Graph
a
db
Subgraph
9
![Page 11: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/11.jpg)
a
db
a
bd
Graph Mining
e
c
gf
Data Graph Pattern
10
![Page 12: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/12.jpg)
Graph Mining
a
db
a
bd
Edge-Induced
11
![Page 13: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/13.jpg)
Graph Mining
Edge-Induced
a
db
a
bd
12
![Page 14: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/14.jpg)
Graph Mining
a
db
a
bd
Edge-Induced
13
![Page 15: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/15.jpg)
Graph Mining
a
db
a
bd
Vertex-Induced
14
![Page 16: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/16.jpg)
Graph Mining
a dba b d
Vertex-Induced
15
![Page 17: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/17.jpg)
Graph Mining
a
db
a
bd
Vertex-Induced
16
![Page 18: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/18.jpg)
Graph Mining
a
db
e
c
gf
Data Graph
17
![Page 19: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/19.jpg)
Graph Mining
a
db
e
c
gf
Data Graph
a
db
a
bd
Vertex-Induced
18
![Page 20: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/20.jpg)
Graph Mining
a
db
e
c
gf
Data Graph
a
db
a
b d
a
db
a
b d
a
db
a
b d
a
db
a
b d
Edge-Induced
a
db
a
bd
Vertex-Induced
19
![Page 21: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/21.jpg)
Frequent Patterns(Edge-Induced)
Graph Mining
a
db
e
c
gf
Data Graph
20
![Page 22: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/22.jpg)
Unlabeled Pattern Distribution(Vertex-Induced)
2 1 0
1 02
Graph Mining
a
db
e
c
gf
Data Graph
21
![Page 23: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/23.jpg)
Scalability Challenge
22
![Page 24: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/24.jpg)
• 4-motif counting on Orkut graph (|V| = 13M, |E| = 117M)
Scalability Challenge
23
![Page 25: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/25.jpg)
Scalability Challenge
• 4-motif counting on Orkut graph (|V| = 13M, |E| = 117M)
123,503,340,341,270 subgraphs
24
![Page 26: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/26.jpg)
System Requirements
25
![Page 27: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/27.jpg)
System Requirements
Uniqueness
x
zy
x
zy
x
zy
26
![Page 28: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/28.jpg)
System Requirements
Uniqueness
x
zy xz
y
x
z
y
27
![Page 29: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/29.jpg)
System Requirements
Uniqueness
x
zy xz
y
x
z
y
28
![Page 30: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/30.jpg)
System Requirements
Uniqueness
Structurex
zy
29
![Page 31: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/31.jpg)
System Requirements
Uniqueness
Structurex
zy
30
![Page 32: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/32.jpg)
System Requirements
Uniqueness
Structure
Interestingness
31
![Page 33: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/33.jpg)
System Requirements
Uniqueness
Structure
Interestingness
32
![Page 34: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/34.jpg)
System Requirements
Uniqueness
Structure
Interestingness
33
![Page 35: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/35.jpg)
System Requirements
Uniqueness
Structure
Interestingness
34
![Page 36: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/36.jpg)
Existing Work
Uniqueness
Structure
Interestingness
Arabesque (SOSP ‘15)RStream (OSDI ‘18)Fractal (SIGMOD ‘19)AutoMine (SOSP ‘19)
35
![Page 37: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/37.jpg)
Existing Work
Uniqueness
Structure
Interestingness
Arabesque (SOSP ‘15)RStream (OSDI ‘18)Fractal (SIGMOD ‘19)AutoMine (SOSP ‘19)
Overlook user requirements
36
![Page 38: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/38.jpg)
Existing Work
Uniqueness
Structure
Interestingness
Arabesque (SOSP ‘15)RStream (OSDI ‘18)Fractal (SIGMOD ‘19)AutoMine (SOSP ‘19)
Overlook user requirementsPer-subgraph computations
37
![Page 39: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/39.jpg)
38
![Page 40: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/40.jpg)
Pattern Awareness
Pattern Selection
Pattern Matching
39
![Page 41: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/41.jpg)
Pattern Awareness
Pattern Selection
Pattern Matching
40
![Page 42: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/42.jpg)
Pattern Awareness
Pattern Selection
41
![Page 43: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/43.jpg)
Pattern Programming
#include “Peregrine.hh”using namespace Peregrine;
void motifCounting(int size){
DataGraph G(“path/to/graph/”);auto patterns = PatternGenerator::all(size, VERTEX_INDUCED);auto counts = count(G, patterns);
for (auto &[pattern, n] : counts)std::cout << pattern << “ ” << n << std::endl;
}
42
![Page 44: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/44.jpg)
Pattern Programming
#include “Peregrine.hh”using namespace Peregrine;
void motifCounting(int size){
DataGraph G(“path/to/graph/”);auto patterns = PatternGenerator::all(size, VERTEX_INDUCED);auto counts = count(G, patterns);
for (auto &[pattern, n] : counts)std::cout << pattern << “ ” << n << std::endl;
}
43
![Page 45: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/45.jpg)
Pattern Programming
#include “Peregrine.hh”using namespace Peregrine;
void motifCounting(int size){
DataGraph G(“path/to/graph/”);auto patterns = PatternGenerator::all(size, VERTEX_INDUCED);auto counts = count(G, patterns);
for (auto &[pattern, n] : counts)std::cout << pattern << “ ” << n << std::endl;
}
44
![Page 46: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/46.jpg)
Pattern Programming
#include “Peregrine.hh”using namespace Peregrine;
void motifCounting(int size){
DataGraph G(“path/to/graph/”);auto patterns = PatternGenerator::all(size, VERTEX_INDUCED);auto counts = count(G, patterns);
for (auto &[pattern, n] : counts)std::cout << pattern << “ ” << n << std::endl;
}
45
![Page 47: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/47.jpg)
Pattern Programming
DataGraph G(“path/to/graph/”);auto patterns = PatternGenerator::all(size, VERTEX_INDUCED);
auto counts = count(G, patterns);
46
![Page 48: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/48.jpg)
Pattern Programming
DataGraph G(“path/to/graph/”);auto patterns = PatternGenerator::all(size, VERTEX_INDUCED);patterns[0].set_labels({‘a’, ‘b’, ‘c’, ‘d’});
auto counts = count(G, patterns);
47
![Page 49: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/49.jpg)
Pattern Programming
DataGraph G(“path/to/graph/”);auto patterns = PatternGenerator::all(size, VERTEX_INDUCED);patterns[0].set_labels({‘a’, ‘b’, ‘c’, ‘d’});patterns[0].add_edge(1, 5);
auto counts = count(G, patterns);
48
![Page 50: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/50.jpg)
Pattern Programming
DataGraph G(“path/to/graph/”);auto patterns = PatternGenerator::all(size, VERTEX_INDUCED);patterns[0].set_labels({‘a’, ‘b’, ‘c’, ‘d’});patterns[0].add_edge(1, 5);patterns.emplace_back(“path/to/pattern.txt”);auto counts = count(G, patterns);
49
![Page 51: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/51.jpg)
Pattern Programming
DataGraph G(“path/to/graph/”);auto patterns = PatternGenerator::all(size, VERTEX_INDUCED);auto pattern = Pattern().add_edge(1, 2)
.add_edge(1, 3)
.add_edge(2, 3);auto counts = count(G, {pattern});
50
![Page 52: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/52.jpg)
Pattern Programming
#include “Peregrine.hh”using namespace Peregrine;
void motifCounting(int size){
DataGraph G(“path/to/graph/”);auto patterns = PatternGenerator::all(size, VERTEX_INDUCED);auto counts = count(G, patterns);
for (auto &[pattern, n] : counts)std::cout << pattern << “ ” << n << std::endl;
}
51
![Page 53: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/53.jpg)
Pattern Programming
#include “Peregrine.hh”using namespace Peregrine;
void motifCounting(int size){
DataGraph G(“path/to/graph/”);auto patterns = PatternGenerator::all(size, VERTEX_INDUCED);auto counts = count(G, patterns);
for (auto &[pattern, n] : counts)std::cout << pattern << “ ” << n << std::endl;
}
52
![Page 54: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/54.jpg)
Pattern Programming
void frequentSubgraphMining(){
DataGraph G(“path/to/graph/”);auto patterns = PatternGenerator::all(2, EDGE_INDUCED);auto mapDomain = [](auto &&match, auto &&aggregator)
{ aggregator.map(match.pattern, match.mapping); };
auto results = match<Pattern, Domain>(G, patterns, mapDomain);
for (auto &[pattern, frequency] : results)std::cout << pattern << “ ” << frequency << std::endl;
}
53
![Page 55: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/55.jpg)
Pattern Programming
void frequentSubgraphMining(){
DataGraph G(“path/to/graph/”);auto patterns = PatternGenerator::all(2, EDGE_INDUCED);auto mapDomain = [](auto &&match, auto &&aggregator)
{ aggregator.map(match.pattern, match.mapping); };
auto results = match<Pattern, Domain>(G, patterns, mapDomain);
for (auto &[pattern, frequency] : results)std::cout << pattern << “ ” << frequency << std::endl;
}
54
![Page 56: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/56.jpg)
Pattern Programming
void frequentSubgraphMining(){
DataGraph G(“path/to/graph/”);auto patterns = PatternGenerator::all(2, EDGE_INDUCED);auto mapDomain = [](auto &&match, auto &&aggregator)
{ aggregator.map(match.pattern, match.mapping); };
auto results = match<Pattern, Domain>(G, patterns, mapDomain);
for (auto &[pattern, frequency] : results)std::cout << pattern << “ ” << frequency << std::endl;
}
55
![Page 57: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/57.jpg)
Pattern Programming
void frequentSubgraphMining(){
DataGraph G(“path/to/graph/”);auto patterns = PatternGenerator::all(2, EDGE_INDUCED);auto mapDomain = [](auto &&match, auto &&aggregator)
{ aggregator.map(match.pattern, match.mapping); };
auto results = match<Pattern, Domain>(G, patterns, mapDomain);
for (auto &[pattern, frequency] : results)std::cout << pattern << “ ” << frequency << std::endl;
}
56
![Page 58: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/58.jpg)
Pattern Awareness
Pattern Selection
Pattern Matching
57
![Page 59: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/59.jpg)
Pattern Awareness
Pattern Selection
u
v
Anti-Edge
58
![Page 60: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/60.jpg)
Pattern Awareness
Pattern Selection
u
v
Anti-Vertex
59
![Page 61: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/61.jpg)
Pattern Awareness
Pattern Selection
Pattern Matching
60
![Page 62: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/62.jpg)
Pattern Awareness
Pattern Selection
Pattern Matching
61
![Page 63: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/63.jpg)
Pattern Awareness
Pattern Matching
• Symmetry breaking (RECOMB ‘07)
• Core pattern reduction (SIGMOD ‘16)
62
![Page 64: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/64.jpg)
Symmetry Breaking
63
![Page 65: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/65.jpg)
Symmetry Breaking
u x
y v
64
![Page 66: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/66.jpg)
Symmetry Breaking
u x
y v
65
![Page 67: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/67.jpg)
Symmetry Breaking
x
y
66
v
u
![Page 68: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/68.jpg)
Symmetry Breaking
u x
y v
67
![Page 69: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/69.jpg)
Symmetry Breaking
u y
x v
68
![Page 70: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/70.jpg)
Symmetry Breaking
u x
y v
Worker 1
a
db
e
c
gf
Data Graph
69
![Page 71: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/71.jpg)
b x
y v
Symmetry Breaking
a
db
e
c
gf
Data Graph Worker 1
70
![Page 72: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/72.jpg)
b x
y d
Symmetry Breaking
Worker 1
a
db
e
c
gf
Data Graph
71
![Page 73: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/73.jpg)
Symmetry Breaking
b x
y d
Worker 1
u x
y v
Worker 2
a
db
e
c
gf
Data Graph
72
![Page 74: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/74.jpg)
Symmetry Breaking
b x
y d
Worker 1
d x
y v
Worker 2
a
db
e
c
gf
Data Graph
73
![Page 75: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/75.jpg)
Symmetry Breaking
b x
y d
Worker 1
d x
y b
Worker 2
a
db
e
c
gf
Data Graph
74
![Page 76: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/76.jpg)
Symmetry Breaking
b a
y d
Worker 1
d a
y b
Worker 2
a
db
e
c
gf
Data Graph
75
![Page 77: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/77.jpg)
Symmetry Breaking
b a
g d
Worker 1
d a
g b
Worker 2
a
db
e
c
gf
Data Graph
76
![Page 78: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/78.jpg)
Symmetry Breaking
b a
g d
Worker 1
d a
g b
Worker 2
a
db
e
c
gf
Data Graph
77
![Page 79: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/79.jpg)
Symmetry Breaking
u < v
u
v
x
y
78
![Page 80: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/80.jpg)
Symmetry Breaking
x < y
u
v
x
y
79
![Page 81: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/81.jpg)
Symmetry Breaking
u < vx < y
u
v
x
y
80
![Page 82: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/82.jpg)
Core Pattern
u
v
x
y
81
![Page 83: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/83.jpg)
Core Pattern
u
v
x
y
82
![Page 84: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/84.jpg)
Core Pattern
u
v
x
y
83
![Page 85: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/85.jpg)
Core Pattern
b
d
Pattern-Unaware
a
db
e
c
gf
Data Graph
84
![Page 86: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/86.jpg)
Core Pattern
b a
d
Pattern-Unaware
a
db
e
c
gf
Data Graph
85
![Page 87: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/87.jpg)
Core Pattern
b a
d
Pattern-Unaware
a
db
e
c
gf
Data Graph
86
![Page 88: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/88.jpg)
Core Pattern
b a
g d
Pattern-Unaware
a
db
e
c
gf
Data Graph
87
![Page 89: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/89.jpg)
Core Pattern
b a
g d
Pattern-Unaware
a
db
e
c
gf
Data Graph
88
![Page 90: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/90.jpg)
Core Pattern
b x
y d
Pattern-Aware
a
db
e
c
gf
Data Graph
89
![Page 91: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/91.jpg)
Core Pattern
b x
y d
Pattern-Aware
a
db
e
c
gf
Data Graph
90
![Page 92: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/92.jpg)
Core Pattern
a
db
e
c
gf
Data Graph
b x
y d
Pattern-Aware
91
![Page 93: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/93.jpg)
Core Pattern
b a
g d
Pattern-Aware
a
db
e
c
gf
Data Graph
92
![Page 94: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/94.jpg)
Core Pattern
b a
g d
Pattern-Aware
a
db
e
c
gf
Data Graph
h
93
![Page 95: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/95.jpg)
Core Pattern
b a
h d
Pattern-Aware
b a
g d
a
db
e
c
gf
Data Graph
h
94
![Page 96: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/96.jpg)
Core Pattern
b a
h d
Pattern-Aware
b a
g d
a
db
e
c
gf
Data Graph
h
95
![Page 97: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/97.jpg)
Pattern Awareness
Pattern Matching
• Symmetry breaking (RECOMB ‘07)
• Core pattern reduction (SIGMOD ‘16)
96
![Page 98: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/98.jpg)
Pattern Awareness
Pattern Matching
• Early termination
97
![Page 99: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/99.jpg)
Early Termination
bool globalClusteringCoefficient(int bound){
DataGraph G(“path/to/graph/”);auto triplet = PatternGenerator::star(3);int numTriplets = count(G, {triplet});auto countAndCheck = [=](auto &&match, auto &&aggregator){int numTriangles = aggregator.readValue(match.pattern);if (3*numTriangles/numTriplets > bound) aggregator.stop();else aggregator.map(match.pattern, 1);
}auto triangle = PatternGenerator::clique(3);auto result = match<Pattern, int>(G, triangle, countAndCheck);return 3*result[triangle]/numTriplets > bound;
}
98
![Page 100: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/100.jpg)
Early Termination
bool globalClusteringCoefficient(int bound){
DataGraph G(“path/to/graph/”);auto triplet = PatternGenerator::star(3);int numTriplets = count(G, {triplet});auto countAndCheck = [=](auto &&match, auto &&aggregator){int numTriangles = aggregator.readValue(match.pattern);if (3*numTriangles/numTriplets > bound) aggregator.stop();else aggregator.map(match.pattern, 1);
}auto triangle = PatternGenerator::clique(3);auto result = match<Pattern, int>(G, triangle, countAndCheck);return 3*result[triangle]/numTriplets > bound;
}
99
![Page 101: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/101.jpg)
Early Termination
bool globalClusteringCoefficient(int bound){
DataGraph G(“path/to/graph/”);auto triplet = PatternGenerator::star(3);int numTriplets = count(G, {triplet});auto countAndCheck = [=](auto &&match, auto &&aggregator){int numTriangles = aggregator.readValue(match.pattern);if (3*numTriangles/numTriplets > bound) aggregator.stop();else aggregator.map(match.pattern, 1);
}auto triangle = PatternGenerator::clique(3);auto result = match<Pattern, int>(G, triangle, countAndCheck);return 3*result[triangle]/numTriplets > bound;
}
100
Triangle
![Page 102: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/102.jpg)
Early Termination
bool globalClusteringCoefficient(int bound){
DataGraph G(“path/to/graph/”);auto triplet = PatternGenerator::star(3);int numTriplets = count(G, {triplet});auto countAndCheck = [=](auto &&match, auto &&aggregator){int numTriangles = aggregator.readValue(match.pattern);if (3*numTriangles/numTriplets > bound) aggregator.stop();else aggregator.map(match.pattern, 1);
}auto triangle = PatternGenerator::clique(3);auto result = match<Pattern, int>(G, triangle, countAndCheck);return 3*result[triangle]/numTriplets > bound;
}
101
TripletTriangle
![Page 103: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/103.jpg)
Early Termination
bool globalClusteringCoefficient(int bound){
DataGraph G(“path/to/graph/”);auto triplet = PatternGenerator::star(3);int numTriplets = count(G, {triplet});auto countAndCheck = [=](auto &&match, auto &&aggregator){int numTriangles = aggregator.readValue(match.pattern);if (3*numTriangles/numTriplets > bound) aggregator.stop();else aggregator.map(match.pattern, 1);
}auto triangle = PatternGenerator::clique(3);auto result = match<Pattern, int>(G, triangle, countAndCheck);return 3*result[triangle]/numTriplets > bound;
}
102
TripletTriangle
![Page 104: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/104.jpg)
Early Termination
bool globalClusteringCoefficient(int bound){
DataGraph G(“path/to/graph/”);auto triplet = PatternGenerator::star(3);int numTriplets = count(G, {triplet});auto countAndCheck = [=](auto &&match, auto &&aggregator){int numTriangles = aggregator.readValue(match.pattern);if (3*numTriangles/numTriplets > bound) aggregator.stop();else aggregator.map(match.pattern, 1);
}auto triangle = PatternGenerator::clique(3);auto result = match<Pattern, int>(G, triangle, countAndCheck);return 3*result[triangle]/numTriplets > bound;
}
103
TripletTriangle
![Page 105: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/105.jpg)
Early Termination
bool globalClusteringCoefficient(int bound){
DataGraph G(“path/to/graph/”);auto triplet = PatternGenerator::star(3);int numTriplets = count(G, {triplet});auto countAndCheck = [=](auto &&match, auto &&aggregator){int numTriangles = aggregator.readValue(match.pattern);if (3*numTriangles/numTriplets > bound) aggregator.stop();else aggregator.map(match.pattern, 1);
}auto triangle = PatternGenerator::clique(3);auto result = match<Pattern, int>(G, triangle, countAndCheck);return 3*result[triangle]/numTriplets > bound;
}
104
TripletTriangle
![Page 106: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/106.jpg)
Early Termination
bool globalClusteringCoefficient(int bound){
DataGraph G(“path/to/graph/”);auto triplet = PatternGenerator::star(3);int numTriplets = count(G, {triplet});auto countAndCheck = [=](auto &&match, auto &&aggregator){int numTriangles = aggregator.readValue(match.pattern);if (3*numTriangles/numTriplets > bound) aggregator.stop();else aggregator.map(match.pattern, 1);
}auto triangle = PatternGenerator::clique(3);auto result = match<Pattern, int>(G, triangle, countAndCheck);return 3*result[triangle]/numTriplets > bound;
}
105
TripletTriangle
![Page 107: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/107.jpg)
Early Termination
bool globalClusteringCoefficient(int bound){
DataGraph G(“path/to/graph/”);auto triplet = PatternGenerator::star(3);int numTriplets = count(G, {triplet});auto countAndCheck = [=](auto &&match, auto &&aggregator){int numTriangles = aggregator.readValue(match.pattern);if (3*numTriangles/numTriplets > bound) aggregator.stop();else aggregator.map(match.pattern, 1);
}auto triangle = PatternGenerator::clique(3);auto result = match<Pattern, int>(G, triangle, countAndCheck);return 3*result[triangle]/numTriplets > bound;
}
106
TripletTriangle
![Page 108: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/108.jpg)
Early Termination
bool globalClusteringCoefficient(int bound){
DataGraph G(“path/to/graph/”);auto triplet = PatternGenerator::star(3);int numTriplets = count(G, {triplet});auto countAndCheck = [=](auto &&match, auto &&aggregator){int numTriangles = aggregator.readValue(match.pattern);if (3*numTriangles/numTriplets > bound) aggregator.stop();else aggregator.map(match.pattern, 1);
}auto triangle = PatternGenerator::clique(3);auto result = match<Pattern, int>(G, triangle, countAndCheck);return 3*result[triangle]/numTriplets > bound;
}
107
TripletTriangle
![Page 109: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/109.jpg)
Early Termination
bool globalClusteringCoefficient(int bound){
DataGraph G(“path/to/graph/”);auto triplet = PatternGenerator::star(3);int numTriplets = count(G, {triplet});auto countAndCheck = [=](auto &&match, auto &&aggregator){int numTriangles = aggregator.readValue(match.pattern);if (3*numTriangles/numTriplets > bound) aggregator.stop();else aggregator.map(match.pattern, 1);
}auto triangle = PatternGenerator::clique(3);auto result = match<Pattern, int>(G, triangle, countAndCheck);return 3*result[triangle]/numTriplets > bound;
}
108
![Page 110: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/110.jpg)
Comparison with Existing Work
• Peregrine with 16 logical cores and 32GB RAM
• Arabesque & Fractal with 8x16 logical cores and 8x32GB RAM
• RStream with 96 logical cores and 192GB RAM
109
![Page 111: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/111.jpg)
Comparison with Existing Work
110
![Page 112: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/112.jpg)
Comparison with Existing Work
111
![Page 113: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/113.jpg)
Effects of Pattern Awareness
112
![Page 114: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/114.jpg)
Scalability
113
![Page 115: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/115.jpg)
Scalability
114
![Page 116: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/116.jpg)
Scalability
115
![Page 117: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/117.jpg)
Scalability
116
![Page 118: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/118.jpg)
Scalability
117
![Page 119: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/119.jpg)
Scalability
118
![Page 120: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/120.jpg)
Scalability
119
![Page 121: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/121.jpg)
Pattern-aware programming and processing models
120
![Page 122: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/122.jpg)
Pattern-aware programming and processing models
• Shift abstraction from subgraph to pattern
121
![Page 123: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/123.jpg)
Pattern-aware programming and processing models
• Shift abstraction from subgraph to pattern
•User program is transparent to the system
122
![Page 124: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/124.jpg)
Pattern-aware programming and processing models
• Shift abstraction from subgraph to pattern
•User program is transparent to the system
•Up to 42x faster than pattern-unaware
•Up to 737x faster than state-of-the-art
123
![Page 125: A Pattern-Aware Graph Mining System](https://reader034.vdocuments.us/reader034/viewer/2022051804/6281af7deddd3f50a25fd3d6/html5/thumbnails/125.jpg)
Pattern-aware programming and processing models
• Shift abstraction from subgraph to pattern
•User program is transparent to the system
•Up to 42x faster than pattern-unaware
•Up to 737x faster than state-of-the-art
https://github.com/pdclab/peregrine
124