vorlesung graphendatenbanken an der universität hof

81
GRAPHENDATENBANKEN Henning Rauch Universität Hof - 04.05.2012 1

Upload: henning-rauch

Post on 22-Nov-2014

2.239 views

Category:

Education


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Vorlesung Graphendatenbanken an der Universität Hof

GRAPHENDATENBANKENHenning Rauch

Universität Hof - 04.05.20121

Page 2: Vorlesung Graphendatenbanken an der Universität Hof

AGENDA

• Überblick

• Neo4J

• InfiniteGraph

• Fallen-8

2

Page 3: Vorlesung Graphendatenbanken an der Universität Hof

Ü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

Ü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

ÜBERBLICK

5

Beispiel eines Realworld Graphen - NYT „Cascade“

Quelle: http://nytlabs.com/projects/cascade.html

Page 6: Vorlesung Graphendatenbanken an der Universität Hof

ÜBERBLICK

6

Beispiel eines Realworld Graphen - Telefon-Rechnung

Page 7: Vorlesung Graphendatenbanken an der Universität Hof

ÜBERBLICK

7

Abgrenzung zu RDBMS - Property graphRDBMS GraphDB

Page 8: Vorlesung Graphendatenbanken an der Universität Hof

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

Ü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

13

Page 33: Vorlesung Graphendatenbanken an der Universität Hof

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

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

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

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

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

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

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

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

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

NEO4J

20

WebAdmin

Quelle: http://docs.neo4j.org/chunked/stable/images/operations/webadmin-overview.png

Page 43: Vorlesung Graphendatenbanken an der Universität Hof

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

22

Page 45: Vorlesung Graphendatenbanken an der Universität Hof

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

INFINITEGRAPH

28

Visualisierung

Copyright © InfiniteGraph

Page 63: Vorlesung Graphendatenbanken an der Universität Hof

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

30

Page 65: Vorlesung Graphendatenbanken an der Universität Hof

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

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

FALLEN-8

33

Architektur

RAM

Traversierungs-Framework

Index-Framework

Core API

Services

Knoten und Kanten

Page 68: Vorlesung Graphendatenbanken an der Universität Hof

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

FALLEN-8

35

Benchmark - friends of a friend

Page 70: Vorlesung Graphendatenbanken an der Universität Hof

FALLEN-8

35

Benchmark - friends of a friend

1

Page 71: Vorlesung Graphendatenbanken an der Universität Hof

FALLEN-8

35

Benchmark - friends of a friend

1

5

4

3

2

Page 72: Vorlesung Graphendatenbanken an der Universität Hof

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

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

FALLEN-8

37

Benchmark - traversals per second

Quelle: Sebastian Dechant

Page 75: Vorlesung Graphendatenbanken an der Universität Hof

FALLEN-8

37

Benchmark - traversals per second

1

Quelle: Sebastian Dechant

Page 76: Vorlesung Graphendatenbanken an der Universität Hof

FALLEN-8

37

Benchmark - traversals per second

1

Quelle: Sebastian Dechant

Page 77: Vorlesung Graphendatenbanken an der Universität Hof

FALLEN-8

37

Benchmark - traversals per second

1 2

Quelle: Sebastian Dechant

Page 78: Vorlesung Graphendatenbanken an der Universität Hof

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

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

FALLEN-8

38

Roadmap

• Release: 23.05.2012

• Q3 2012

• Spatial index (MIT)

• High availability (MIT) using Amazon EC2

• 2013

• Graph partitioning (MIT or ???)