ÜBERBLICK
Warum macht es Sinn sich damit zu beschäftigen
„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.“
Quelle: http://blogs.forrester.com/james_kobielus/11-12-19-the_year_ahead_in_big_data_big_cool_new_stuff_looms_large
3
ÜBERBLICK
Abgrenzung zu RDBMS - Property graph
RDBMS GraphDB
Person
Id Name
0 Henning Rauch
1 René Peinl
2 Foo Bar
3 Bruce Schneier
4 Linus Torwalds
7
ÜBERBLICK
Abgrenzung zu RDBMS - Property graph
RDBMS GraphDB
Person
2
Id Name 3
0 Henning Rauch
1 René Peinl
2 Foo Bar
3 Bruce Schneier
4
4 Linus Torwalds
1
0
7
ÜBERBLICK
Abgrenzung zu RDBMS - Property graph
RDBMS GraphDB
Person Kennt_rel
2
Id Name Id_1 Id_2 3
0 Henning Rauch 1 0
1 René Peinl 1 2
2 Foo Bar 1 3
3 Bruce Schneier 1 4
4
4 Linus Torwalds 0 1 1
0 2
0 3
0 4
3 4
4 3 0
7
ÜBERBLICK
Abgrenzung zu RDBMS - Property graph
RDBMS GraphDB
Person Kennt_rel
2
Id Name Id_1 Id_2 3
0 Henning Rauch 1 0
1 René Peinl 1 2
2 Foo Bar 1 3
3 Bruce Schneier 1 4
4
4 Linus Torwalds 0 1 1
0 2
0 3
0 4
3 4
4 3 0
7
ÜBERBLICK
Abgrenzung zu RDBMS - Property graph
RDBMS GraphDB
Person Kennt_rel
2
Id Name Id_1 Id_2 3
0 Henning Rauch 1 0
1 René Peinl 1 2
2 Foo Bar 1 3
3 Bruce Schneier 1 4
4
4 Linus Torwalds 0 1 1
0 2
0 3
0 4
3 4
4 3 0
Tag
Id Name
0 .NET
1 Java
2 PKI
3 NoSQL
7
ÜBERBLICK
Abgrenzung zu RDBMS - Property graph
RDBMS GraphDB
Person Kennt_rel
2
Id Name Id_1 Id_2 3
0 Henning Rauch Java
1 0
1 René Peinl 1 2
2 Foo Bar 1 3
3 Bruce Schneier 1 4
4
4 Linus Torwalds 0 1 1
0 2
0 3
0 4
3 4
4 3 0
Tag NoSQL
Id Name .NET
0 .NET
PKI
1 Java
2 PKI
3 NoSQL
7
ÜBERBLICK
Abgrenzung zu RDBMS - Property graph
RDBMS GraphDB
Person Kennt_rel
2
Id Name Id_1 Id_2 3
0 Henning Rauch Java
1 0
1 René Peinl 1 2
2 Foo Bar 1 3
3 Bruce Schneier 1 4
4
4 Linus Torwalds 0 1 1
0 2
0 3
0 4
3 4
4 3 0
Tag Tags_rel NoSQL
Id Name Tag_Id Person_Id Signifikanz .NET
0 .NET 0 0 5
PKI
1 Java 1 1 5
2 PKI 2 1 6
3 NoSQL 2 3 10
3 0 7
3 1 7
7
ÜBERBLICK
Abgrenzung zu RDBMS - Property graph
RDBMS GraphDB
Person Kennt_rel
2
Id Name Id_1 Id_2 3
0 Henning Rauch Java
1 0
1 René Peinl 1 2
10
2 Foo Bar 1 3
5
3 Bruce Schneier 1 4
4
4 Linus Torwalds 0 1 1
0 2
0 3
0 4
3 4 7
4 3 0
5
Tag Tags_rel NoSQL 7
Id Name Tag_Id Person_Id Signifikanz .NET
0 .NET 0 0 5
6 PKI
1 Java 1 1 5
2 PKI 2 1 6
3 NoSQL 2 3 10
3 0 7
3 1 7
7
ÜBERBLICK
Abgrenzung zu RDBMS - Skalierbarkeit
Kennt_rel
Id_1 Id_2
• Relations-Tabellen sind das Problem, sie agieren als 1
1
0
2
globaler Index über Beziehungen zwischen Daten 1
1
3
4
0 1
Je größer die Relation, desto länger dauert es die
0 2
• 0 3
interessante Information (z.B. Nachbarschaft) zu 0
3
4
4
finden 4 3
Tags_rel
• Lösung der Graphendatenbank: Information über Tag_Id
0
Person_Id
0
Signifikanz
5
Beziehungen (Kanten) werden lokal am Knoten 1 1 5
abgelegt
2 1 6
2 3 10
3 0 7
3 1 7
8
ÜBERBLICK
Abgrenzung zu RDBMS - Aber aber aber
• Aufgabe: Finde Personen, welche 0 kennt.
• Lineares Scannen der Relationen-Tabelle: O(n) Kennt_rel
Id_1 Id_2
1 0
1 2
• Abfragen eines Index: O(log n) 1 3
1 4
0 1
• Bei RDBMS große Performance-Einbrüche bei 0
0
2
3
rekursiven Such-Algorithmen (da Abhängigkeit zu n) 0 4
3 4
4 3
• Graphendatenbanken lösen diese Aufgabe i.A. in O(1),
unabhängig von der Gesamtgröße des Graphen
9
ÜBERBLICK
Abgrenzung zu anderen NoSQL Produkten
Größe
> 90% der Anwendungsfälle
Komplexität
Quelle: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german
10
ÜBERBLICK
Abgrenzung zu anderen NoSQL Produkten
Größe
Key/Value
stores
> 90% der Anwendungsfälle
Komplexität
Quelle: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german
10
ÜBERBLICK
Abgrenzung zu anderen NoSQL Produkten
Größe
Key/Value
stores
Bigtable
clones
> 90% der Anwendungsfälle
Komplexität
Quelle: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german
10
ÜBERBLICK
Abgrenzung zu anderen NoSQL Produkten
Größe
Key/Value
stores
Bigtable
clones
Dokument
Datenbanken
> 90% der Anwendungsfälle
Komplexität
Quelle: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german
10
ÜBERBLICK
Abgrenzung zu anderen NoSQL Produkten
Größe
Key/Value
stores
Bigtable
clones
Dokument
Datenbanken
Graphendatenbanken
> 90% der Anwendungsfälle
Komplexität
Quelle: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german
10
ÜBERBLICK
Abgrenzung zu anderen NoSQL Produkten
Größe
Key/Value
stores
Bigtable
clones
Dokument
Datenbanken
Graphendatenbanken
In-Memory
Graphendatenbanken
> 90% der Anwendungsfälle
Komplexität
Quelle: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german
10
NEO4J
Überblick
• 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
NEO4J
Architektur
Cypher/Gremlin Java/Ruby/.../C# API
REST API
Core API (Java)
Caches (Dateisystem & Objekt) HA
Record Dateien Transaktions-Log
Disk(s)
Quelle: http://www.slideshare.net/rheehot/eo4j-12713065
15
NEO4J
kennt
Ondisk Layout Beispiel
Name: Bob
Alter: 42
Name: Alice
Alter: 23
kennt
kennt
Name: Carol
Alter: 22
Quelle: https://github.com/thobe/presentations
16
NEO4J
kennt
Ondisk Layout Beispiel
Name: Bob
Alter: 42
Name
Name: Alice Bob
Name Alter: 23
Alice kennt
Alter
42
Alter
23
kennt
Name
Carol
Name: Carol
Alter: 22
Alter
22
Quelle: https://github.com/thobe/presentations
16
NEO4J
kennt
Ondisk Layout Beispiel
SP EP Name: Bob
SN EN Alter: 42
kennt
Name
Name: Alice SP EP Bob
Name Alter: 23
SP EP SN EN
Alice kennt
SN EN kennt Alter
kennt 42
Alter
23
kennt
Name
SP Source Previous
Carol
SN Source Next Name: Carol
EP End Previous Alter: 22
EN End Next Alter
22
Vorhanden
Nicht vorhanden Quelle: https://github.com/thobe/presentations
16
NEO4J
kennt
Ondisk Layout Beispiel
SP EP Name: Bob
SN EN Alter: 42
kennt
Name
Name: Alice SP EP Bob
Name Alter: 23
SP EP SN EN
Alice kennt
SN EN kennt Alter
kennt 42
Alter
23
kennt
Name
SP Source Previous
Carol
SN Source Next Name: Carol
EP End Previous Alter: 22
EN End Next Alter
22
Vorhanden
Nicht vorhanden Quelle: https://github.com/thobe/presentations
16
NEO4J
InMemory Layout (Cache)
ID
Relationship ID refs
in: R1 R2 ... Rn
Typ 1
out R1 R2 ... Rn
• Transformation von
Knoten ... Nach Typ gruppiert (Typ = z.B. „kennt“) doppelt verketteter Liste
Typ 1
in: R1 R2 ... Rn zu Objekten
out R1 R2 ... Rn
Key 1 Key 2 ... Key n • Erhöhung der
Traversierungs-
Val 1
Val 2
Val n
Geschwindigkeit
ID start end type
Kante
Key 1 Key 2 ... Key n
Val 1
Val 2
Val n
Quelle: https://github.com/thobe/presentations
17
NEO4J
Traversierung
• 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)
Quelle: https://github.com/thobe/presentations
18
NEO4J
Cypher & Gremlin
Merkmal Gremlin Cypher
Paradigma Imperative Programmierung Deklarative Programmierung
•Entwickelt von Marko Rodriguez (Tinkerpop) •Eigenentwicklung
•Basiert auf xpath um Traversierung zu beschreiben •Annäherung an SQL
Beschreibung •Umgesetzt mit Groovy •Cypher bietet mehr Möglichkeiten für Optimierungen
•Bei „einfachen“ Traversierungen ist Gremlin •Ideal für Traversierungen, bei denen back tracking erforderlich ist.
30-50% schneller •Zeilenweise Ausgabe des Ergebnisses
START
me=node:people(name={myname})
MATCH
me-[:HAS_CART]->cart-[:CONTAINS_ITEM]->item
outE[label=HAS_CART].inV item<-[:PURCHASED]-user-[:PURCHASED]->recommendation
.outE[label=CONTAINS_ITEM].inV RETURN recommendation
Beispiel
.inE[label=PURCHASED].outV
.outE[label=PURCHASED].inV START
d=node(1), e=node(2)
MATCH
p = shortestPath( d-[*..15]->e )
RETURN p
Quelle: https://github.com/thobe/presentations
19
NEO4J
Preise
Preis
Edition Lizenz Beschreibung
(jährlich)
Komplette Datenbank mit
Open Source
„Community“ grundlegender 0 €
(GPLv3)
Management-Oberfläche
+
Monitoring, erweiterte
„Advanced“ Commercial and AGPL 6.000 €
Management-Oberfläche
und Support
+
„Enterprise“ Commercial and AGPL Enterprise Oberfläche, HA 24.000 €
und premium Support
21
INFINITEGRAPH
Ü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
23
INFINITEGRAPH
Preise
Preis
Edition Lizenz Beschreibung
(jährlich)
Beschränkung auf 1 Million
„InfiniteGraph FREE“ Frei 0 €
Knoten oder Kanten
fängt bei ca. 5000 € an
„Pay as you go“ Kommerziell Volle Funktionalität (in Abhängigkeit der Anzahl
Knoten und Kanten)
Volle Funktionalität,
>..... €
„Unit or site licensing“ Kommerziell fokussiert auf „größere“
(Betrag wird nicht genannt)
Umgebungen
Quelle: http://www.infinitegraph.com/options/
29
FALLEN-8
Ü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
31
FALLEN-8
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
32
FALLEN-8
Architektur
Services
Traversierungs- Index-
Framework Framework
Core API
Knoten und Kanten
RAM
33
FALLEN-8
Architektur inklusive Plugins
HA inklusive ACID Transaktionen
REST API (via JSON) + Management/Query Oberfläche
Traversierungs-Framework Index-Framework
(inkl Pfad Analyse) (inkl R* Tree Index)
Core API
Knoten und Kanten
RAM
34