SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
1
NoSQL
Einführung in Graphen­
Datenbanken mit Neo4j
Tobias Trelle, codecentric AG
@tobiastrelle
Tobias Trelle
Senior IT Consultant @ codecentric AG
Twitter: @tobiastrelle
Slideshare: 
GitHub: 
http://de.slideshare.net/tobiastrelle/
https://github.com/ttrelle
2
3
Agenda
NoSQL?
Graphen
Neo4j Graph Database
Data Structures
Cypher Query Language
API
4 . 1
NoSQL?
4 . 2
4 . 3
NoSQL­Datenbanken helfen bei der Lösung der drei
Problem­Felder im Big Data­Umfeld (Gartner, 2009):
Warum NoSQL?
Volume (Menge an Daten)
Variety (verschiedene Strukturen)
Velocity (Geschwindigkeit)
4 . 4
Neue
Herausforderungen
Horizontale Skalierung
Verteilte Systeme
CAP Theorem / Eventual Consistency
4 . 5
CAP Theorem
Consistency
Availability
Partition Tolerance
Nicht alle diese Anforderungen können zur gleichen Zeit
gleichermaßen gut erfüllt werden!
4 . 6
Messaging­System von
Facebook
100 Node Cluster (Apache HBase)
87 Billion R/W­Operations / Day
9+ Billion Messages / Day
4 PB Compressed Data / Day
45% Growth / Month
Source: Nicolas Spiegelberg
(Berlin BuzzWords, June 2012)
4 . 7
NoSQL­Datenbanken
http://nosql­database.org/
4 . 8
4 . 9
DB­Engines Ranking
http://db­engines.com/de/ranking
5 . 1
Graphen
5 . 2
Ein   ist ein Tupel   bestehend aus
Formale Definition
Graph G = (V , E)
Knoten (Vertices): 
Kanten (Edges): 
V = { , . . . , }V1 Vn
E ⊂ V xV = { , . . . , }E1 Em
5 . 3
 
Edges / Kanten
Einfacher Graph
Vertices / Knoten
5 . 4
Spezialfälle
5 . 5
Streckennetze
5 . 6
Stromnetz
5 . 7
Use Cases für Graphen
EVUs (Strom, Gas, Wasser)
Streckennetze (DB, Verkehrsbetriebe)
Logistik (DHL, UPS, ...)
Social Networks
6 . 1
Neo4j
6 . 2
Graph in Neo4j
Gerichteter Graph ( )
Knoten und Kanten haben Eigenschaften
Knoten haben ein (oder mehere) Label(s)
( , ) ≠ ( , )V1 V2 V2 V1
==> sog. Property­Graph
6 . 3
6 . 4
Properties
String (Unicode)
Boole'sche Werte
Numerische Werte (float, int)
Arrays solcher Typen
CREATE (john :Person :Developer { 
   name: "John", 
   age: 36 
}) 
6 . 5
Labels
String (Unicode)
Dient zur Klassifizierung von Knoten
Mehrere Labels möglich
Namensraum zur Index­Definition
CREATE (john :Person :Developer { 
 name: "John", 
 age: 36 
}) 
// Index 
CREATE INDEX ON :Person(name) 
6 . 6
Beziehung
Nativer Datentyp
Verbindet immer zwei Knoten
Hat einen Typ
Kann auch Properties haben
CREATE 
   (john) 
   ­[:KNOWS {since: 2004, level: "expert"} ]­> 
   (java) 
6 . 7
Schema
Labels klassifizieren Knoten
Unique Constraint auf Knoten­Property
Exists Constraint auf Knoten­Property
Exists Constraint auf Beziehung­Property
// Knoten Property unique 
CREATE CONSTRAINT ON (p:Person) ASSERT p.name IS UNIQUE 
// Kanten Property existiert 
CREATE CONSTRAINT ON (k:KNOWS) ASSERT exists(k.since) 
6 . 8
Zusammenfassung
7 . 1
Cypher Query
Language
7 . 2
Cypher
Deklarative (Abfrage­)Sprache
Hat als DSL Syntax­Elemente für Knoten () und
Kanten ­­>
Erinnert an SQL
Referenz: https://neo4j.com/docs/developer­
manual/current/cypher/
7 . 3
CREATE ­ Anlegen von Knoten
und Kanten
// Star Wars Jedi/Sith example 
CREATE 
// Jedi ... 
(yoda :Jedi :UnknownSpecies {name:"Yoda"}), 
(dooku :Jedi :Sith :Human {name: "Count Dooku", sith_name: "Darth Tyranus"
(qui_gon :Jedi :Human {name: "Qui­Gon Jinn"}), 
(obi_wan :Jedi :Human {name: "Obi Wan Kenobi"}), 
(anakin :Jedi :Sith :Human {name: "Anakin Skywalker", sith_name: "Darth Vader
(luke :Jedi :Human {name:"Luke Skywalker"}), 
... 
// Master relationships 
(darth_plagueis)­[:TRAINS]­>(emperor), 
(yoda)­[:TRAINS]­>(dooku), 
(yoda)­[:TRAINS]­>(luke), 
(emperor)­[:TRAINS]­>(dooku), 
... 
7 . 4
TRAINS
TRA…
KILLS
TRAINS
KILLS
TRAINS
KILLS
KILLS
TRAINS
TRAINS
TRAINS
FATHER_OF
<3 <3 <3
FATHER_OF
KILLS
KILLS
FAT…
M
O
THER_O
F
TRAINS
TRAINS
TRAINS
FATHER_OF
MOTHER_OF
TRAINS
MOTHER_OF
<3 <3 <3
Yoda
Darth
Tyranus
(Count
Dooku)
Qui­Gon Jinn
Obi Wan
Kenobi
Darth Vader
(Anakin
Skywalker)
Luke
Skywalker
Rey
Darth
Plagueis
(Hego
Damask)
Darth Sidious
(Sheev
Palpatine)
Darth Maul ()
Kylo Ren (Ben
Solo)
Grand­
Master Snoke
()
Padme
Naberrie
Leia Organa
Han Solo
7 . 5
MATCH ­ Abfragen
// Most important Sith 
MATCH (s :Sith)­[r]­() 
WITH s, count(r) as n 
WHERE n > 2 
RETURN s 
ORDER BY n DESC 
LIMIT 3 
Live Demo: http://localhost:7474
8 . 1
API
8 . 2
Endpoints und Protokolle
8 . 3
Driver
Java
C#
JavaScript
Python
8 . 4
Java Driver
<dependency> 
    <groupId>org.neo4j.driver</groupId> 
    <artifactId>neo4j­java­driver</artifactId> 
    <version>1.0.5</version> 
</dependency> 
import org.neo4j.driver.v1.*; 
Driver driver = GraphDatabase.driver( "bolt://localhost", 
   AuthTokens.basic( "neo4j", "neo4j" ) ); 
Session session = driver.session(); 
StatementResult result = session.run( "MATCH (j:Jedi) RETURN j" ); 
while ( result.hasNext() ) { 
    Record jedi = result.next(); 
    System.out.println( jedi.get( "name" ).asString() ); 
} 
session.close(); 
driver.close(); 
9 . 1
Technischer Überlick
9 . 2
Neo4j Überblick
In Java implementiert
Open Source: 
GLP v3 Lizenz
Enterprise Support verfügbar (Clustering, Monitoring,
...)
https://github.com/neo4j/neo4j
9 . 3
Neo4j Überblick
Beziehungen sind First Class Datenstrukturen
Index Free Adjacency, d.h. Komplexität für
Traversierung 
Stored Procedures seit Version 3.0
O(1)
NoSQL: Einführung in Graphen­Datenbanken mit Neo4j 10
Danke für Ihre
Aufmerksamkeit

Weitere ähnliche Inhalte

Andere mochten auch

Andere mochten auch (13)

Catalogue
CatalogueCatalogue
Catalogue
 
MongoDB Live Hacking
MongoDB Live HackingMongoDB Live Hacking
MongoDB Live Hacking
 
Enhance WordPress Search Using Sphinx
Enhance WordPress Search Using SphinxEnhance WordPress Search Using Sphinx
Enhance WordPress Search Using Sphinx
 
Happy-bday-reechal
Happy-bday-reechalHappy-bday-reechal
Happy-bday-reechal
 
Book soprmat-geom
Book soprmat-geomBook soprmat-geom
Book soprmat-geom
 
M.E projects call 9952749533
M.E projects call 9952749533M.E projects call 9952749533
M.E projects call 9952749533
 
Electricmotor4
Electricmotor4Electricmotor4
Electricmotor4
 
Mechanical projects
Mechanical projectsMechanical projects
Mechanical projects
 
Electricmotors
ElectricmotorsElectricmotors
Electricmotors
 
Windows7
Windows7Windows7
Windows7
 
The Social Challenge of 1.5°C Webinar: Karen O'Brien
The Social Challenge of 1.5°C Webinar: Karen O'BrienThe Social Challenge of 1.5°C Webinar: Karen O'Brien
The Social Challenge of 1.5°C Webinar: Karen O'Brien
 
Mechanical projects
Mechanical projectsMechanical projects
Mechanical projects
 
Circuitanly
CircuitanlyCircuitanly
Circuitanly
 

Ähnlich wie NoSQL - Einführung in Graphen-Datenbanken mit Neo4j

SCAPE - Skalierbare Langzeitarchivierung (SCAPE - scalable longterm digital p...
SCAPE - Skalierbare Langzeitarchivierung (SCAPE - scalable longterm digital p...SCAPE - Skalierbare Langzeitarchivierung (SCAPE - scalable longterm digital p...
SCAPE - Skalierbare Langzeitarchivierung (SCAPE - scalable longterm digital p...SCAPE Project
 
Einführung in NoSQL-Datenbanken
Einführung in NoSQL-DatenbankenEinführung in NoSQL-Datenbanken
Einführung in NoSQL-DatenbankenTobias Trelle
 
SCAPE Skalierbare Langzeitarchivierung
SCAPE Skalierbare LangzeitarchivierungSCAPE Skalierbare Langzeitarchivierung
SCAPE Skalierbare LangzeitarchivierungSven Schlarb
 
Not only SQL - CouchDB und andere NoSQL-Datenbanken
Not only SQL - CouchDB und andere NoSQL-DatenbankenNot only SQL - CouchDB und andere NoSQL-Datenbanken
Not only SQL - CouchDB und andere NoSQL-DatenbankenKerstin Puschke
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!JanWeinschenker
 
.NET Summit 2017 - .NET, .NET Core, .NET Standard
.NET Summit 2017 - .NET, .NET Core, .NET Standard.NET Summit 2017 - .NET, .NET Core, .NET Standard
.NET Summit 2017 - .NET, .NET Core, .NET StandardRobin Sedlaczek
 
Strategic Development - Future Plans for DSpace
Strategic Development - Future Plans for DSpaceStrategic Development - Future Plans for DSpace
Strategic Development - Future Plans for DSpacePascal-Nicolas Becker
 
Architectures for .Net Core Applications
Architectures for .Net Core ApplicationsArchitectures for .Net Core Applications
Architectures for .Net Core ApplicationsRobin Sedlaczek
 
SQL on Hadoop für praktikables BI auf Big Data
SQL on Hadoop für praktikables BI auf Big DataSQL on Hadoop für praktikables BI auf Big Data
SQL on Hadoop für praktikables BI auf Big Datainovex GmbH
 
Sql on-hadoop-fuer-praktikables-bi-auf-big-data-zorn-benz-osbi-workshop-05.03...
Sql on-hadoop-fuer-praktikables-bi-auf-big-data-zorn-benz-osbi-workshop-05.03...Sql on-hadoop-fuer-praktikables-bi-auf-big-data-zorn-benz-osbi-workshop-05.03...
Sql on-hadoop-fuer-praktikables-bi-auf-big-data-zorn-benz-osbi-workshop-05.03...inovex GmbH
 
Fusion der Welten: Hadoop als DWH-Backend bei ProSieben
Fusion der Welten: Hadoop als DWH-Backend bei ProSiebenFusion der Welten: Hadoop als DWH-Backend bei ProSieben
Fusion der Welten: Hadoop als DWH-Backend bei ProSiebeninovex GmbH
 
Oracle Technology Monthly Oktober 2017
Oracle Technology Monthly Oktober 2017Oracle Technology Monthly Oktober 2017
Oracle Technology Monthly Oktober 2017oraclebudb
 
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02Gunther Pippèrr
 
OSMC 2011 | Monitoring "wer kennt wen" mit free and open source software by J...
OSMC 2011 | Monitoring "wer kennt wen" mit free and open source software by J...OSMC 2011 | Monitoring "wer kennt wen" mit free and open source software by J...
OSMC 2011 | Monitoring "wer kennt wen" mit free and open source software by J...NETWAYS
 
20181210_ITTage2018_OracleNoSQLDB_KPatenge
20181210_ITTage2018_OracleNoSQLDB_KPatenge20181210_ITTage2018_OracleNoSQLDB_KPatenge
20181210_ITTage2018_OracleNoSQLDB_KPatengeKarin Patenge
 
Das modulare DWH-Modell - DOAG SIG BI/DWH 2010 - OPITZ CONSULTING - ArnoTigges
Das modulare DWH-Modell - DOAG SIG BI/DWH 2010 - OPITZ CONSULTING - ArnoTiggesDas modulare DWH-Modell - DOAG SIG BI/DWH 2010 - OPITZ CONSULTING - ArnoTigges
Das modulare DWH-Modell - DOAG SIG BI/DWH 2010 - OPITZ CONSULTING - ArnoTiggesOPITZ CONSULTING Deutschland
 
Analytics meets Big Data – R/Python auf der Hadoop/Spark-Plattform
Analytics meets Big Data – R/Python auf der Hadoop/Spark-PlattformAnalytics meets Big Data – R/Python auf der Hadoop/Spark-Plattform
Analytics meets Big Data – R/Python auf der Hadoop/Spark-PlattformRising Media Ltd.
 
Oracle Database 12c Release 2
Oracle Database 12c Release 2 Oracle Database 12c Release 2
Oracle Database 12c Release 2 oraclebudb
 
Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2Ulrike Schwinn
 

Ähnlich wie NoSQL - Einführung in Graphen-Datenbanken mit Neo4j (20)

SCAPE - Skalierbare Langzeitarchivierung (SCAPE - scalable longterm digital p...
SCAPE - Skalierbare Langzeitarchivierung (SCAPE - scalable longterm digital p...SCAPE - Skalierbare Langzeitarchivierung (SCAPE - scalable longterm digital p...
SCAPE - Skalierbare Langzeitarchivierung (SCAPE - scalable longterm digital p...
 
Einführung in NoSQL-Datenbanken
Einführung in NoSQL-DatenbankenEinführung in NoSQL-Datenbanken
Einführung in NoSQL-Datenbanken
 
SCAPE Skalierbare Langzeitarchivierung
SCAPE Skalierbare LangzeitarchivierungSCAPE Skalierbare Langzeitarchivierung
SCAPE Skalierbare Langzeitarchivierung
 
DSpace 5 und Linked (Open) Data
DSpace 5 und Linked (Open) DataDSpace 5 und Linked (Open) Data
DSpace 5 und Linked (Open) Data
 
Not only SQL - CouchDB und andere NoSQL-Datenbanken
Not only SQL - CouchDB und andere NoSQL-DatenbankenNot only SQL - CouchDB und andere NoSQL-Datenbanken
Not only SQL - CouchDB und andere NoSQL-Datenbanken
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!
 
.NET Summit 2017 - .NET, .NET Core, .NET Standard
.NET Summit 2017 - .NET, .NET Core, .NET Standard.NET Summit 2017 - .NET, .NET Core, .NET Standard
.NET Summit 2017 - .NET, .NET Core, .NET Standard
 
Strategic Development - Future Plans for DSpace
Strategic Development - Future Plans for DSpaceStrategic Development - Future Plans for DSpace
Strategic Development - Future Plans for DSpace
 
Architectures for .Net Core Applications
Architectures for .Net Core ApplicationsArchitectures for .Net Core Applications
Architectures for .Net Core Applications
 
SQL on Hadoop für praktikables BI auf Big Data
SQL on Hadoop für praktikables BI auf Big DataSQL on Hadoop für praktikables BI auf Big Data
SQL on Hadoop für praktikables BI auf Big Data
 
Sql on-hadoop-fuer-praktikables-bi-auf-big-data-zorn-benz-osbi-workshop-05.03...
Sql on-hadoop-fuer-praktikables-bi-auf-big-data-zorn-benz-osbi-workshop-05.03...Sql on-hadoop-fuer-praktikables-bi-auf-big-data-zorn-benz-osbi-workshop-05.03...
Sql on-hadoop-fuer-praktikables-bi-auf-big-data-zorn-benz-osbi-workshop-05.03...
 
Fusion der Welten: Hadoop als DWH-Backend bei ProSieben
Fusion der Welten: Hadoop als DWH-Backend bei ProSiebenFusion der Welten: Hadoop als DWH-Backend bei ProSieben
Fusion der Welten: Hadoop als DWH-Backend bei ProSieben
 
Oracle Technology Monthly Oktober 2017
Oracle Technology Monthly Oktober 2017Oracle Technology Monthly Oktober 2017
Oracle Technology Monthly Oktober 2017
 
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
 
OSMC 2011 | Monitoring "wer kennt wen" mit free and open source software by J...
OSMC 2011 | Monitoring "wer kennt wen" mit free and open source software by J...OSMC 2011 | Monitoring "wer kennt wen" mit free and open source software by J...
OSMC 2011 | Monitoring "wer kennt wen" mit free and open source software by J...
 
20181210_ITTage2018_OracleNoSQLDB_KPatenge
20181210_ITTage2018_OracleNoSQLDB_KPatenge20181210_ITTage2018_OracleNoSQLDB_KPatenge
20181210_ITTage2018_OracleNoSQLDB_KPatenge
 
Das modulare DWH-Modell - DOAG SIG BI/DWH 2010 - OPITZ CONSULTING - ArnoTigges
Das modulare DWH-Modell - DOAG SIG BI/DWH 2010 - OPITZ CONSULTING - ArnoTiggesDas modulare DWH-Modell - DOAG SIG BI/DWH 2010 - OPITZ CONSULTING - ArnoTigges
Das modulare DWH-Modell - DOAG SIG BI/DWH 2010 - OPITZ CONSULTING - ArnoTigges
 
Analytics meets Big Data – R/Python auf der Hadoop/Spark-Plattform
Analytics meets Big Data – R/Python auf der Hadoop/Spark-PlattformAnalytics meets Big Data – R/Python auf der Hadoop/Spark-Plattform
Analytics meets Big Data – R/Python auf der Hadoop/Spark-Plattform
 
Oracle Database 12c Release 2
Oracle Database 12c Release 2 Oracle Database 12c Release 2
Oracle Database 12c Release 2
 
Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2
 

Mehr von Tobias Trelle

MongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenMongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenTobias Trelle
 
Test Automation for NoSQL Databases
Test Automation for NoSQL DatabasesTest Automation for NoSQL Databases
Test Automation for NoSQL DatabasesTobias Trelle
 
Morphia, Spring Data & Co
Morphia, Spring Data & CoMorphia, Spring Data & Co
Morphia, Spring Data & CoTobias Trelle
 
Spring Data, Jongo & Co.
Spring Data, Jongo & Co.Spring Data, Jongo & Co.
Spring Data, Jongo & Co.Tobias Trelle
 
Morphia, Spring Data & Co.
Morphia, Spring Data & Co.Morphia, Spring Data & Co.
Morphia, Spring Data & Co.Tobias Trelle
 
An introduction to MongoDB and Ruby
An introduction to MongoDB and RubyAn introduction to MongoDB and Ruby
An introduction to MongoDB and RubyTobias Trelle
 
BedCon 2013 - Java Persistenz-Frameworks für MongoDB
BedCon 2013 - Java Persistenz-Frameworks für MongoDBBedCon 2013 - Java Persistenz-Frameworks für MongoDB
BedCon 2013 - Java Persistenz-Frameworks für MongoDBTobias Trelle
 
Java Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBJava Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBTobias Trelle
 
OOP 2013: Praktische Einführung in MongoDB
OOP 2013: Praktische Einführung in MongoDBOOP 2013: Praktische Einführung in MongoDB
OOP 2013: Praktische Einführung in MongoDBTobias Trelle
 
MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBTobias Trelle
 

Mehr von Tobias Trelle (11)

MongoDB Einführung
MongoDB EinführungMongoDB Einführung
MongoDB Einführung
 
MongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenMongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwalten
 
Test Automation for NoSQL Databases
Test Automation for NoSQL DatabasesTest Automation for NoSQL Databases
Test Automation for NoSQL Databases
 
Morphia, Spring Data & Co
Morphia, Spring Data & CoMorphia, Spring Data & Co
Morphia, Spring Data & Co
 
Spring Data, Jongo & Co.
Spring Data, Jongo & Co.Spring Data, Jongo & Co.
Spring Data, Jongo & Co.
 
Morphia, Spring Data & Co.
Morphia, Spring Data & Co.Morphia, Spring Data & Co.
Morphia, Spring Data & Co.
 
An introduction to MongoDB and Ruby
An introduction to MongoDB and RubyAn introduction to MongoDB and Ruby
An introduction to MongoDB and Ruby
 
BedCon 2013 - Java Persistenz-Frameworks für MongoDB
BedCon 2013 - Java Persistenz-Frameworks für MongoDBBedCon 2013 - Java Persistenz-Frameworks für MongoDB
BedCon 2013 - Java Persistenz-Frameworks für MongoDB
 
Java Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBJava Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDB
 
OOP 2013: Praktische Einführung in MongoDB
OOP 2013: Praktische Einführung in MongoDBOOP 2013: Praktische Einführung in MongoDB
OOP 2013: Praktische Einführung in MongoDB
 
MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDB
 

NoSQL - Einführung in Graphen-Datenbanken mit Neo4j