WHY?
• natural
• graphs are everywhere
• easy to think about
Slide 5
Slide 5 text
RELATIONAL DB
Slide 6
Slide 6 text
RELATIONAL DB
Slide 7
Slide 7 text
GRAPH DB
Slide 8
Slide 8 text
RELATIONAL DB
Slide 9
Slide 9 text
GRAPH DB
Slide 10
Slide 10 text
RECOMMENDATIONS
Slide 11
Slide 11 text
SOCIAL
Slide 12
Slide 12 text
ACCESS MANAGEMENT
Slide 13
Slide 13 text
NEO4J
• NoSQL
• open-source
• Java/Scala
• the most popular graph DB
• full DB characteristics (ACID compliance, scalable
clustering, fail-over, high-availability, live backups, and
comprehensive monitoring)
CYPHER
• SQL-like
• ASCII-ish
SELECT firstname
FROM person
WHERE person.nickname= 'The Dude'
MATCH p:person
WHERE p.nickname= 'The Dude'
RETURN p.firstname
Slide 17
Slide 17 text
CYPHER
• SQL-like
• ASCII-ish
SELECT firstname
FROM person
WHERE person.nickname= 'The Dude'
MATCH p:person
WHERE p.nickname= 'The Dude'
RETURN p.firstname
FROM person JOIN team ON person.teamid = team.id
WHERE person.nickname= 'The Dude'
AND team.sport = 'Bowling'
MATCH (p:person)-[:in]->(t:team)
WHERE p.nickname= 'The Dude'
AND t.sport = 'Bowling'
RETURN p.firstname, t.name
Slide 18
Slide 18 text
CYPHER
• SQL-like
• ASCII-ish
SELECT firstname
FROM person
WHERE person.nickname= 'The Dude'
MATCH p:person
WHERE p.nickname= 'The Dude'
RETURN p.firstname
FROM person JOIN team ON person.teamid = team.id
WHERE person.nickname= 'The Dude'
AND team.sport = 'Bowling'
MATCH (p:person)-[:in]->(t:team)
WHERE p.nickname= 'The Dude'
AND t.sport = 'Bowling'
RETURN p.firstname, t.name
MATCH (p:person)-[*]-(p2:person)
WHERE p.nickname= 'The Dude'
RETURN p.firstname, p2.firstname
MATCH (p:person{nickname: 'The Dude'})-[*]-(p2:person)
RETURN p.firstname, p2.firstname
Slide 19
Slide 19 text
DEMO
Slide 20
Slide 20 text
Q&A
Slide 21
Slide 21 text
http://mr.si/
@mr_foto
THANK YOU
http://rug.si/
@RubySlovenia