Vorlesung Graphendatenbanken an der Universität Hof
-
Upload
henning-rauch -
Category
Education
-
view
2.240 -
download
0
description
Transcript of Vorlesung Graphendatenbanken an der Universität Hof
![Page 1: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/1.jpg)
GRAPHENDATENBANKENHenning Rauch
Universität Hof - 04.05.20121
![Page 2: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/2.jpg)
AGENDA
• Überblick
• Neo4J
• InfiniteGraph
• Fallen-8
2
![Page 3: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/3.jpg)
ÜBERBLICK
„Graph databases will come into vogue. One key gap in the Hadoop ecosystem is for graph databases, which support rich mining and visualization of relationships, influence, and behavioral propensities. The market for graph databases will boom in 2012 as companies everywhere adopt them for social media analytics, marketing campaign optimization, and customer experience fine-tuning. We will see VCs put big money behind graph database and analytics startups. Many big data platform and tool vendors will acquire the startups to supplement their expanding Hadoop, NoSQL, and enterprise data warehousing (EDW) portfolios. Social graph analysis, although not a brand-new field, will become one of the most prestigious specialties in the data science arena, focusing on high-powered drilldown into polystructured behavioral data sets.“
3
Warum macht es Sinn sich damit zu beschäftigen
Quelle: http://blogs.forrester.com/james_kobielus/11-12-19-the_year_ahead_in_big_data_big_cool_new_stuff_looms_large
![Page 4: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/4.jpg)
ÜBERBLICK
4
Beispiel eines Realworld Graphen - facebook
Quelle: http://www.facebook.com/press/info.php?statistics
![Page 5: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/5.jpg)
ÜBERBLICK
5
Beispiel eines Realworld Graphen - NYT „Cascade“
Quelle: http://nytlabs.com/projects/cascade.html
![Page 6: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/6.jpg)
ÜBERBLICK
6
Beispiel eines Realworld Graphen - Telefon-Rechnung
![Page 7: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/7.jpg)
ÜBERBLICK
7
Abgrenzung zu RDBMS - Property graphRDBMS GraphDB
![Page 8: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/8.jpg)
ÜBERBLICK
7
Abgrenzung zu RDBMS - Property graphRDBMS GraphDB
PersonPerson
Id Name
0 Henning Rauch
1 René Peinl
2 Foo Bar
3 Bruce Schneier
4 Linus Torwalds
![Page 9: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/9.jpg)
ÜBERBLICK
7
Abgrenzung zu RDBMS - Property graphRDBMS GraphDB
PersonPerson
Id Name
0 Henning Rauch
1 René Peinl
2 Foo Bar
3 Bruce Schneier
4 Linus Torwalds1
0
4
3
2
![Page 10: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/10.jpg)
ÜBERBLICK
7
Abgrenzung zu RDBMS - Property graphRDBMS GraphDB
PersonPerson
Id Name
0 Henning Rauch
1 René Peinl
2 Foo Bar
3 Bruce Schneier
4 Linus Torwalds1
0
4
3
2Kennt_relKennt_rel
Id_1 Id_2
1 0
1 2
1 3
1 4
0 1
0 2
0 3
0 4
3 4
4 3
![Page 11: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/11.jpg)
ÜBERBLICK
7
Abgrenzung zu RDBMS - Property graphRDBMS GraphDB
PersonPerson
Id Name
0 Henning Rauch
1 René Peinl
2 Foo Bar
3 Bruce Schneier
4 Linus Torwalds1
0
4
3
2Kennt_relKennt_rel
Id_1 Id_2
1 0
1 2
1 3
1 4
0 1
0 2
0 3
0 4
3 4
4 3
![Page 12: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/12.jpg)
ÜBERBLICK
7
Abgrenzung zu RDBMS - Property graphRDBMS GraphDB
PersonPerson
Id Name
0 Henning Rauch
1 René Peinl
2 Foo Bar
3 Bruce Schneier
4 Linus Torwalds1
0
4
3
2Kennt_relKennt_rel
Id_1 Id_2
1 0
1 2
1 3
1 4
0 1
0 2
0 3
0 4
3 4
4 3
TagTag
Id Name
0 .NET
1 Java
2 PKI
3 NoSQL
![Page 13: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/13.jpg)
ÜBERBLICK
7
Abgrenzung zu RDBMS - Property graphRDBMS GraphDB
PersonPerson
Id Name
0 Henning Rauch
1 René Peinl
2 Foo Bar
3 Bruce Schneier
4 Linus Torwalds1
0
4
3
2Kennt_relKennt_rel
Id_1 Id_2
1 0
1 2
1 3
1 4
0 1
0 2
0 3
0 4
3 4
4 3
NoSQL
PKI
TagTag
Id Name
0 .NET
1 Java
2 PKI
3 NoSQL
Java
.NET
![Page 14: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/14.jpg)
ÜBERBLICK
7
Abgrenzung zu RDBMS - Property graphRDBMS GraphDB
PersonPerson
Id Name
0 Henning Rauch
1 René Peinl
2 Foo Bar
3 Bruce Schneier
4 Linus Torwalds1
0
4
3
2Kennt_relKennt_rel
Id_1 Id_2
1 0
1 2
1 3
1 4
0 1
0 2
0 3
0 4
3 4
4 3
NoSQL
PKI
Tags_relTags_relTags_rel
Tag_Id Person_Id Signifikanz
0 0 5
1 1 5
2 1 6
2 3 10
3 0 7
3 1 7
TagTag
Id Name
0 .NET
1 Java
2 PKI
3 NoSQL
Java
.NET
![Page 15: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/15.jpg)
ÜBERBLICK
7
Abgrenzung zu RDBMS - Property graphRDBMS GraphDB
PersonPerson
Id Name
0 Henning Rauch
1 René Peinl
2 Foo Bar
3 Bruce Schneier
4 Linus Torwalds1
0
4
3
2Kennt_relKennt_rel
Id_1 Id_2
1 0
1 2
1 3
1 4
0 1
0 2
0 3
0 4
3 4
4 3
NoSQL
PKI
Tags_relTags_relTags_rel
Tag_Id Person_Id Signifikanz
0 0 5
1 1 5
2 1 6
2 3 10
3 0 7
3 1 7
TagTag
Id Name
0 .NET
1 Java
2 PKI
3 NoSQL
7
7
10
6
Java
5
.NET
5
![Page 16: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/16.jpg)
ÜBERBLICK
7
Abgrenzung zu RDBMS - Property graphRDBMS GraphDB
PersonPerson
Id Name
0 Henning Rauch
1 René Peinl
2 Foo Bar
3 Bruce Schneier
4 Linus Torwalds1
0
4
3
2Kennt_relKennt_rel
Id_1 Id_2
1 0
1 2
1 3
1 4
0 1
0 2
0 3
0 4
3 4
4 3
NoSQL
PKI
Tags_relTags_relTags_rel
Tag_Id Person_Id Signifikanz
0 0 5
1 1 5
2 1 6
2 3 10
3 0 7
3 1 7
TagTag
Id Name
0 .NET
1 Java
2 PKI
3 NoSQL
7
7
10
6
Java
5
.NET
5
Knoten =Eigenschaften + Kanten
![Page 17: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/17.jpg)
ÜBERBLICK
8
Abgrenzung zu RDBMS - SkalierbarkeitKennt_relKennt_rel
Id_1 Id_2
1 0
1 2
1 3
1 4
0 1
0 2
0 3
0 4
3 4
4 3
Tags_relTags_relTags_rel
Tag_Id Person_Id Signifikanz
0 0 5
1 1 5
2 1 6
2 3 10
3 0 7
3 1 7
• Relations-Tabellen sind das Problem, sie agieren als globaler Index über Beziehungen zwischen Daten
• Je größer die Relation, desto länger dauert es die interessante Information (z.B. Nachbarschaft) zu finden
• Lösung der Graphendatenbank: Information über Beziehungen (Kanten) werden lokal am Knoten abgelegt
![Page 18: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/18.jpg)
ÜBERBLICK
9
Abgrenzung zu RDBMS - Aber aber aber
Kennt_relKennt_rel
Id_1 Id_2
1 0
1 2
1 3
1 4
0 1
0 2
0 3
0 4
3 4
4 3
• Aufgabe: Finde Personen, welche 0 kennt.
• Lineares Scannen der Relationen-Tabelle: O(n)
• Abfragen eines Index: O(log n)
• Bei RDBMS große Performance-Einbrüche bei rekursiven Such-Algorithmen (da Abhängigkeit zu n)
• Graphendatenbanken lösen diese Aufgabe i.A. in O(1), unabhängig von der Gesamtgröße des Graphen
![Page 19: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/19.jpg)
ÜBERBLICK
10
Abgrenzung zu anderen NoSQL ProduktenGröße
Komplexität
> 90% der Anwendungsfälle
Quelle: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german
![Page 20: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/20.jpg)
ÜBERBLICK
10
Abgrenzung zu anderen NoSQL Produkten
Key/Value stores
Größe
Komplexität
> 90% der Anwendungsfälle
Quelle: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german
![Page 21: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/21.jpg)
ÜBERBLICK
10
Abgrenzung zu anderen NoSQL Produkten
Key/Value stores
Bigtableclones
Größe
Komplexität
> 90% der Anwendungsfälle
Quelle: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german
![Page 22: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/22.jpg)
ÜBERBLICK
10
Abgrenzung zu anderen NoSQL Produkten
Key/Value stores
Bigtableclones
DokumentDatenbanken
Größe
Komplexität
> 90% der Anwendungsfälle
Quelle: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german
![Page 23: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/23.jpg)
ÜBERBLICK
10
Abgrenzung zu anderen NoSQL Produkten
Key/Value stores
Bigtableclones
DokumentDatenbanken
Graphendatenbanken
Größe
Komplexität
> 90% der Anwendungsfälle
Quelle: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german
![Page 24: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/24.jpg)
ÜBERBLICK
10
Abgrenzung zu anderen NoSQL Produkten
Key/Value stores
Bigtableclones
DokumentDatenbanken
Graphendatenbanken
In-MemoryGraphendatenbanken
Größe
Komplexität
> 90% der Anwendungsfälle
Quelle: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german
![Page 25: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/25.jpg)
ÜBERBLICK
11
Graphenprozessierung vs. Graphendatenbank
OLAP
Quelle: http://jim.webber.name/2011/08/24/66f1fb4b-83c3-4f52-af40-ee6382ad2155.aspx
OLTPU
niv
ers
ell
Gra
ph
affi
n
![Page 26: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/26.jpg)
ÜBERBLICK
11
Graphenprozessierung vs. Graphendatenbank
OLAP
Quelle: http://jim.webber.name/2011/08/24/66f1fb4b-83c3-4f52-af40-ee6382ad2155.aspx
OLTPU
niv
ers
ell
Gra
ph
affi
n
RDBMS
![Page 27: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/27.jpg)
ÜBERBLICK
11
Graphenprozessierung vs. Graphendatenbank
OLAP
Quelle: http://jim.webber.name/2011/08/24/66f1fb4b-83c3-4f52-af40-ee6382ad2155.aspx
OLTPU
niv
ers
ell
Gra
ph
affi
n
Hadoop
RDBMS
![Page 28: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/28.jpg)
ÜBERBLICK
11
Graphenprozessierung vs. Graphendatenbank
OLAP
Quelle: http://jim.webber.name/2011/08/24/66f1fb4b-83c3-4f52-af40-ee6382ad2155.aspx
OLTPU
niv
ers
ell
Gra
ph
affi
n
Pregel
Hadoop
RDBMS
![Page 29: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/29.jpg)
ÜBERBLICK
11
Graphenprozessierung vs. Graphendatenbank
OLAP
Quelle: http://jim.webber.name/2011/08/24/66f1fb4b-83c3-4f52-af40-ee6382ad2155.aspx
OLTPU
niv
ers
ell
Gra
ph
affi
n
Graphendatenbanken
Pregel
Hadoop
RDBMS
![Page 30: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/30.jpg)
ÜBERBLICK
11
Graphenprozessierung vs. Graphendatenbank
OLAP
Quelle: http://jim.webber.name/2011/08/24/66f1fb4b-83c3-4f52-af40-ee6382ad2155.aspx
OLTPU
niv
ers
ell
Gra
ph
affi
n
Graphendatenbanken In-MemoryGraphendatenbanken
Pregel
Hadoop
RDBMS
![Page 31: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/31.jpg)
ÜBERBLICK
• Neo4J
• InfiniteGraph (Objectivity)
• Sones GraphDB
• AllegroGraph
• OrientDB
12
Graphendatenbanken
• HypergraphDB
• DEX
• FlockDB (Twitter)
• Trinity (Microsoft)
• Fallen-8
Quelle: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german
![Page 32: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/32.jpg)
13
![Page 33: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/33.jpg)
NEO4J
• Graphendatenbank + Lucene Index
• ACID (Isolationsgrad read committed)
• Hoch-Verfügbarkeit (HA) in Enterprise Edition
• 32 Mrd. Knoten, 32 Mrd. Kanten, 64 Mrd. Eigenschaften
• Embedded oder via REST-API
• Support für Blueprints
14
Überblick
![Page 34: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/34.jpg)
NEO4J
15
Architektur
Disk(s)
Record Dateien Transaktions-Log
Caches (Dateisystem & Objekt)
Cypher/Gremlin
Core API (Java)
REST API
Java/Ruby/.../C# API
HA
Quelle: http://www.slideshare.net/rheehot/eo4j-12713065
![Page 35: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/35.jpg)
NEO4J
16
Ondisk Layout Beispiel
Name: AliceAlter : 23
Name: BobAlter : 42
Name: CarolAlter : 22
kennt
kennt
kennt
Quelle: https://github.com/thobe/presentations
![Page 36: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/36.jpg)
NEO4J
16
Ondisk Layout Beispiel
Name: AliceAlter : 23
Name: BobAlter : 42
Name: CarolAlter : 22
kennt
kennt
Name
Alice
Alter
23
Name
Carol
Alter
22
Name
Bob
Alter
42
kennt
Quelle: https://github.com/thobe/presentations
![Page 37: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/37.jpg)
NEO4J
16
Ondisk Layout Beispiel
Name: AliceAlter : 23
Name: BobAlter : 42
Name: CarolAlter : 22
kennt
kennt
Name
Alice
Alter
23
Name
Carol
Alter
22
Name
Bob
Alter
42
SP
SN
EP
EN
kennt
SP
SN
EP
EN
kennt
kennt
SP
SN
EP
EN
kennt
SP
SNEP
EN
Source Previous
Source NextEnd Previous
End Next
Vorhanden
Nicht vorhanden Quelle: https://github.com/thobe/presentations
![Page 38: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/38.jpg)
NEO4J
16
Ondisk Layout Beispiel
Name: AliceAlter : 23
Name: BobAlter : 42
Name: CarolAlter : 22
kennt
kennt
Name
Alice
Alter
23
Name
Carol
Alter
22
Name
Bob
Alter
42
SP
SN
EP
EN
kennt
SP
SN
EP
EN
kennt
kennt
SP
SN
EP
EN
kennt
SP
SNEP
EN
Source Previous
Source NextEnd Previous
End Next
Vorhanden
Nicht vorhanden Quelle: https://github.com/thobe/presentations
![Page 39: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/39.jpg)
NEO4J
17
Knoten
Kante
ID
ID start end type
Typ 1
...
Key 1
Val 1
Key 2Val 2
... Key n
Val n
in:
out
R 1 R 2 ... R n
R 1 R 2 ... R n
Relationship ID refs
Key 1
Val 1
Key 2
Val 2
... Key n
Val n
Typ 1in:
out
R 1 R 2 ... R n
R 1 R 2 ... R n
InMemory Layout (Cache)
Nach Typ gruppiert (Typ = z.B. „kennt“)
Quelle: https://github.com/thobe/presentations
• Transformation von doppelt verketteter Liste zu Objekten
• Erhöhung der Traversierungs-Geschwindigkeit
![Page 40: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/40.jpg)
NEO4J
• Relationship-Expander (liefert Kanten, welche von einem Knoten abgehen)
• Evaluatoren (evaluieren ob ein Knoten traversiert werden soll oder z.B. in die Ergebnis-Menge aufgenommen wird)
• Projektion der Ergebnismenge (z.B. „nimm nur den letzten Knoten des Pfades“
• Uniqueness level (legt in Abstufungen fest, ob ein Knoten mehrmals besucht werden darf)
18
Traversierung
Quelle: https://github.com/thobe/presentations
![Page 41: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/41.jpg)
NEO4J
19
Cypher & Gremlin
Quelle: https://github.com/thobe/presentations
Merkmal Gremlin Cypher
Paradigma
Beschreibung
Beispiel
Imperative Programmierung Deklarative Programmierung
•Entwickelt von Marko Rodriguez (Tinkerpop)•Basiert auf xpath um Traversierung zu beschreiben•Umgesetzt mit Groovy•Bei „einfachen“ Traversierungen ist Gremlin 30-50% schneller
•Eigenentwicklung•Annäherung an SQL•Cypher bietet mehr Möglichkeiten für Optimierungen•Ideal für Traversierungen, bei denen back tracking erforderlich ist.•Zeilenweise Ausgabe des Ergebnisses
outE[label=HAS_CART].inV .outE[label=CONTAINS_ITEM].inV .inE[label=PURCHASED].outV .outE[label=PURCHASED].inV
START me=node:people(name={myname})MATCH me-[:HAS_CART]->cart-[:CONTAINS_ITEM]->item item<-[:PURCHASED]-user-[:PURCHASED]->recommendationRETURN recommendation
START d=node(1), e=node(2)MATCH p = shortestPath( d-[*..15]->e )RETURN p
![Page 42: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/42.jpg)
NEO4J
20
WebAdmin
Quelle: http://docs.neo4j.org/chunked/stable/images/operations/webadmin-overview.png
![Page 43: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/43.jpg)
NEO4J
21
Preise
Edition Lizenz Beschreibung Preis(jährlich)
„Community“
„Advanced“
„Enterprise“
Open Source(GPLv3)
Komplette Datenbank mit grundlegender
Management-Oberfläche0 €
Commercial and AGPL
+Monitoring, erweiterte
Management-Oberfläche und Support
6.000 €
Commercial and AGPL+
Enterprise Oberfläche, HA und premium Support
24.000 €
![Page 44: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/44.jpg)
22
![Page 45: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/45.jpg)
INFINITEGRAPH
23
Überblick
• Verteilte Graphendatenbank
• Implementiert in C++ (APIs in Java, C#, Python, etc.)
• Basiert auf Objectivity/DB (verteilte Objektdatenbank)
• Seit 1988 in Sunnyvale, California
• Enterprise-Kunden + US-Regierung
• Support für Blueprints
![Page 46: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/46.jpg)
INFINITEGRAPH
24
IG#Core/API#
Configura0on#Naviga0on#Execu0on#
Management#Extensions#
Blueprints#User Apps
Objec0vity/DB#Distributed#Database#
Session#/#TX#Management#Placement#
Copyright © InfiniteGraph
Architektur
![Page 47: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/47.jpg)
INFINITEGRAPH
25
Einfügen
IG#Core/API#
Standard#Blocking#Ingest/Placement#(MDP#Plugin)#
Objec@vity/DB#
AppD1#(Ingest#V1)#
AppD2#(Ingest#V2)#
#
AppD3#(Ingest#V3)#
Copyright © InfiniteGraph
![Page 48: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/48.jpg)
INFINITEGRAPH
25
Einfügen
IG#Core/API#
Standard#Blocking#Ingest/Placement#(MDP#Plugin)#
Objec@vity/DB#
AppD1#(Ingest#V1)#
AppD2#(Ingest#V2)#
#
AppD3#(Ingest#V3)#
V1# V2# V3#
Copyright © InfiniteGraph
![Page 49: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/49.jpg)
INFINITEGRAPH
25
Einfügen
IG#Core/API#
Standard#Blocking#Ingest/Placement#(MDP#Plugin)#
Objec@vity/DB#
AppD1#(Ingest#V1)#
AppD2#(Ingest#V2)#
#
AppD3#(Ingest#V3)#
App#1%(E1%2{%V1V2})%
App#2%(E23{%V2V3})%
App#3%%
V1# V2# V3#
Copyright © InfiniteGraph
![Page 50: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/50.jpg)
INFINITEGRAPH
25
Einfügen
IG#Core/API#
Standard#Blocking#Ingest/Placement#(MDP#Plugin)#
Objec@vity/DB#
AppD1#(Ingest#V1)#
AppD2#(Ingest#V2)#
#
AppD3#(Ingest#V3)#
App#1%(E1%2{%V1V2})%
App#2%(E23{%V2V3})%
App#3%%
V1# V2# V3#E12$ E23$
Copyright © InfiniteGraph
![Page 51: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/51.jpg)
INFINITEGRAPH
25
Einfügen
IG#Core/API#
Standard#Blocking#Ingest/Placement#(MDP#Plugin)#
Objec@vity/DB#
AppD1#(Ingest#V1)#
AppD2#(Ingest#V2)#
#
AppD3#(Ingest#V3)#
App#1%(E1%2{%V1V2})%
App#2%(E23{%V2V3})%
App#3%%
V1# V2# V3#E12$ E23$
Copyright © InfiniteGraph
![Page 52: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/52.jpg)
INFINITEGRAPH
Vertex alice = myGraph.addVertex(new Person(“Alice”)); Vertex bob = myGraph.addVertex(new Person(“Bob”)); Vertex carlos = myGraph.addVertex(new Person(“Carlos”)); Vertex charlie = myGraph.addVertex(new Person(“Charlie”));
alice.addEdge(new Meeting(“Denver”, “5-27-10”), bob);bob.addEdge(new Call(timestamp), carlos);carlos.addEdge(new Payment(100000.00), charlie);bob.addEdge(new Call(timestamp), charlie);
26
Code (Einfügen)
Copyright © InfiniteGraph
![Page 53: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/53.jpg)
INFINITEGRAPH
Vertex alice = myGraph.addVertex(new Person(“Alice”)); Vertex bob = myGraph.addVertex(new Person(“Bob”)); Vertex carlos = myGraph.addVertex(new Person(“Carlos”)); Vertex charlie = myGraph.addVertex(new Person(“Charlie”));
alice.addEdge(new Meeting(“Denver”, “5-27-10”), bob);bob.addEdge(new Call(timestamp), carlos);carlos.addEdge(new Payment(100000.00), charlie);bob.addEdge(new Call(timestamp), charlie);
26
Code (Einfügen)
Alice
Copyright © InfiniteGraph
![Page 54: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/54.jpg)
INFINITEGRAPH
Vertex alice = myGraph.addVertex(new Person(“Alice”)); Vertex bob = myGraph.addVertex(new Person(“Bob”)); Vertex carlos = myGraph.addVertex(new Person(“Carlos”)); Vertex charlie = myGraph.addVertex(new Person(“Charlie”));
alice.addEdge(new Meeting(“Denver”, “5-27-10”), bob);bob.addEdge(new Call(timestamp), carlos);carlos.addEdge(new Payment(100000.00), charlie);bob.addEdge(new Call(timestamp), charlie);
26
Code (Einfügen)
Alice
Bob
Copyright © InfiniteGraph
![Page 55: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/55.jpg)
INFINITEGRAPH
Vertex alice = myGraph.addVertex(new Person(“Alice”)); Vertex bob = myGraph.addVertex(new Person(“Bob”)); Vertex carlos = myGraph.addVertex(new Person(“Carlos”)); Vertex charlie = myGraph.addVertex(new Person(“Charlie”));
alice.addEdge(new Meeting(“Denver”, “5-27-10”), bob);bob.addEdge(new Call(timestamp), carlos);carlos.addEdge(new Payment(100000.00), charlie);bob.addEdge(new Call(timestamp), charlie);
26
Code (Einfügen)
Alice
Bob
Carlos
Copyright © InfiniteGraph
![Page 56: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/56.jpg)
INFINITEGRAPH
Vertex alice = myGraph.addVertex(new Person(“Alice”)); Vertex bob = myGraph.addVertex(new Person(“Bob”)); Vertex carlos = myGraph.addVertex(new Person(“Carlos”)); Vertex charlie = myGraph.addVertex(new Person(“Charlie”));
alice.addEdge(new Meeting(“Denver”, “5-27-10”), bob);bob.addEdge(new Call(timestamp), carlos);carlos.addEdge(new Payment(100000.00), charlie);bob.addEdge(new Call(timestamp), charlie);
26
Code (Einfügen)
Alice
Bob
Carlos
CharlieCopyright © InfiniteGraph
![Page 57: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/57.jpg)
INFINITEGRAPH
Vertex alice = myGraph.addVertex(new Person(“Alice”)); Vertex bob = myGraph.addVertex(new Person(“Bob”)); Vertex carlos = myGraph.addVertex(new Person(“Carlos”)); Vertex charlie = myGraph.addVertex(new Person(“Charlie”));
alice.addEdge(new Meeting(“Denver”, “5-27-10”), bob);bob.addEdge(new Call(timestamp), carlos);carlos.addEdge(new Payment(100000.00), charlie);bob.addEdge(new Call(timestamp), charlie);
26
Code (Einfügen)
Alice
Bob
Carlos
Charlie
meets
Copyright © InfiniteGraph
![Page 58: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/58.jpg)
INFINITEGRAPH
Vertex alice = myGraph.addVertex(new Person(“Alice”)); Vertex bob = myGraph.addVertex(new Person(“Bob”)); Vertex carlos = myGraph.addVertex(new Person(“Carlos”)); Vertex charlie = myGraph.addVertex(new Person(“Charlie”));
alice.addEdge(new Meeting(“Denver”, “5-27-10”), bob);bob.addEdge(new Call(timestamp), carlos);carlos.addEdge(new Payment(100000.00), charlie);bob.addEdge(new Call(timestamp), charlie);
26
Code (Einfügen)
Alice
Bob
Carlos
Charlie
meets
calls
Copyright © InfiniteGraph
![Page 59: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/59.jpg)
INFINITEGRAPH
Vertex alice = myGraph.addVertex(new Person(“Alice”)); Vertex bob = myGraph.addVertex(new Person(“Bob”)); Vertex carlos = myGraph.addVertex(new Person(“Carlos”)); Vertex charlie = myGraph.addVertex(new Person(“Charlie”));
alice.addEdge(new Meeting(“Denver”, “5-27-10”), bob);bob.addEdge(new Call(timestamp), carlos);carlos.addEdge(new Payment(100000.00), charlie);bob.addEdge(new Call(timestamp), charlie);
26
Code (Einfügen)
Alice
Bob
Carlos
Charlie
meets
calls
pays
Copyright © InfiniteGraph
![Page 60: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/60.jpg)
INFINITEGRAPH
Vertex alice = myGraph.addVertex(new Person(“Alice”)); Vertex bob = myGraph.addVertex(new Person(“Bob”)); Vertex carlos = myGraph.addVertex(new Person(“Carlos”)); Vertex charlie = myGraph.addVertex(new Person(“Charlie”));
alice.addEdge(new Meeting(“Denver”, “5-27-10”), bob);bob.addEdge(new Call(timestamp), carlos);carlos.addEdge(new Payment(100000.00), charlie);bob.addEdge(new Call(timestamp), charlie);
26
Code (Einfügen)
Alice
Bob
Carlos
Charlie
meets
calls
pays
calls
Copyright © InfiniteGraph
![Page 61: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/61.jpg)
INFINITEGRAPH
27
Code (Navigator)
// Create a qualifier that describes the target vertexQualifier findCharliePredicate = new VertexPredicate(personType, "name == ’Charlie'");
// Construct a navigator which starts with Alice and uses a result qualifier// to find all paths in the graph to CharlieNavigator charlieFinder = alice.navigate( Guide.SIMPLE_BREADTH_FIRST, // default guide
Qualifier.ANY, // no path constraints findCharliePredicate , // find paths ending with Charlie
myResultHandler); // fire results to supplied handler
// Start the navigatorcharlieFinder.start();
Copyright © InfiniteGraph
![Page 62: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/62.jpg)
INFINITEGRAPH
28
Visualisierung
Copyright © InfiniteGraph
![Page 63: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/63.jpg)
INFINITEGRAPH
29
Preise
Quelle: http://www.infinitegraph.com/options/
Edition Lizenz Beschreibung Preis(jährlich)
„InfiniteGraph FREE“
„Pay as you go“
„Unit or site licensing“
Frei Beschränkung auf 1 Million Knoten oder Kanten 0 €
Kommerziell Volle Funktionalitätfängt bei ca. 5000 € an
(in Abhängigkeit der Anzahl Knoten und Kanten)
KommerziellVolle Funktionalität,
fokussiert auf „größere“ Umgebungen
>..... €(Betrag wird nicht genannt)
![Page 64: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/64.jpg)
30
![Page 65: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/65.jpg)
FALLEN-8
31
Überblick
• In-Memory Graphendatenbank
• Entwickelt in C# (Plattform unabhängig)
• 4 Mrd. Knoten oder Kanten, jedes Element kann ca. 200 Mio. Eigenschaften haben
• Indexe auf Knoten oder/und Kanten
• Kern ist Open Source (MIT-Lizenz), Plugins sind variabel
![Page 66: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/66.jpg)
FALLEN-8
32
Persistenz
• Persistenz in Form von „Save-Points“, d.h. alle Knoten und Kanten werden komplett serialisiert
• Je nach Geschwindigkeit der HDD können ca. 2 Mio. Knoten oder Kanten pro Sekunde (de)serialisiert werden.
• Das Speichern des Graphen blockiert lediglich schreibende Operationen
• Performance + Verlässlichkeit
![Page 67: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/67.jpg)
FALLEN-8
33
Architektur
RAM
Traversierungs-Framework
Index-Framework
Core API
Services
Knoten und Kanten
![Page 68: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/68.jpg)
FALLEN-8
34
Architektur inklusive Plugins
RAM
Traversierungs-Framework (inkl Pfad Analyse)
Index-Framework(inkl R* Tree Index)
Core API
REST API (via JSON) + Management/Query Oberfläche
HA inklusive ACID Transaktionen
Knoten und Kanten
![Page 69: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/69.jpg)
FALLEN-8
35
Benchmark - friends of a friend
![Page 70: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/70.jpg)
FALLEN-8
35
Benchmark - friends of a friend
1
![Page 71: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/71.jpg)
FALLEN-8
35
Benchmark - friends of a friend
1
5
4
3
2
![Page 72: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/72.jpg)
FALLEN-8
35
Benchmark - friends of a friend
1
5
4
3
2
9
8
7
6
13
12
11
10
16
15
14
![Page 73: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/73.jpg)
FALLEN-8
36
Benchmark - friends of a friend
Quelle: Martin Junghanns
0
1.000
2.000
3.000
4.000
5.000
t in
ms
Durchlauf
Fallen-8 Neo4J
![Page 74: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/74.jpg)
FALLEN-8
37
Benchmark - traversals per second
Quelle: Sebastian Dechant
![Page 75: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/75.jpg)
FALLEN-8
37
Benchmark - traversals per second
1
Quelle: Sebastian Dechant
![Page 76: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/76.jpg)
FALLEN-8
37
Benchmark - traversals per second
1
Quelle: Sebastian Dechant
![Page 77: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/77.jpg)
FALLEN-8
37
Benchmark - traversals per second
1 2
Quelle: Sebastian Dechant
![Page 78: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/78.jpg)
FALLEN-8
37
Benchmark - traversals per second
1 2
Quelle: Sebastian Dechant
System: Windows Server 2008 R2, Intel Xeon E5620 (2,40 GHz), 6 GB RAMGraph: |V| = 10000, |E| = 600.000 (gleichverteilt)
![Page 79: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/79.jpg)
FALLEN-8
37
Benchmark - traversals per second
1 2
MySQL
PostgreSQL
Neo4J
InfiniteGraph
Fallen-8
1 10 100 1.000 10.000 100.000 1.000.000 10.000.000 100.000.000 1.000.000.000
196.930.256
1.243.084
943.580
78.449
62.168
traversals / secQuelle: Sebastian Dechant
System: Windows Server 2008 R2, Intel Xeon E5620 (2,40 GHz), 6 GB RAMGraph: |V| = 10000, |E| = 600.000 (gleichverteilt)
![Page 80: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/80.jpg)
FALLEN-8
38
Roadmap
• Release: 23.05.2012
• Q3 2012
• Spatial index (MIT)
• High availability (MIT) using Amazon EC2
• 2013
• Graph partitioning (MIT or ???)
![Page 81: Vorlesung Graphendatenbanken an der Universität Hof](https://reader038.fdocuments.net/reader038/viewer/2022110114/54752cbbb4af9f980a8b5954/html5/thumbnails/81.jpg)
DANKE&
Q&A
Email: [email protected]: http://www.NoSQL-Database.comTwitter : http://www.twitter.com/cosh23
39