Introduction to neo4j and graph databases in generally - looking at what neo4j is, why we should use it, the Cypher query language and the wider ecosystem.
2. W H O A M I ?
• David Simons
• @SwamWithTurtles
• github.com/
SwamWithTurtles
• Technical Lead at Softwire
and part-time hacker
• Statistician in a past life
3. G ra p h i ca l M o d e l l i n g
N e o 4 J : T h e W h at A n d W h y ?
“ Cy p h e r ” Q u e ry La n g u a g e
Le t ’s S e e I t A ct i o n !
T h e G ra p h i n g Eco s y ste m
4. G ra p h i ca l M o d e l l i n g
N e o 4 J : T h e W h at A n d W h y ?
“ Cy p h e r ” Q u e ry La n g u a g e
Le t ’s S e e I t A ct i o n !
T h e G ra p h i n g Eco s y ste m
5. W H AT I S A G R A P H ?
Taken from Jim Webber’s Dr. Who Dataset
6. W H AT I S A G R A P H ?
{ (V, E) : V = [n], E ⊆ V(2) }
7. W H AT I S A G R A P H ?
{ (V, E) : V = [n], E ⊆ V(2) }
Made up of two parts,
“V” and “E”
8. W H AT I S A G R A P H ?
{ (V, E) : V = [n], E ⊆ V(2) }
V is a set of n items
23. E L E C T I O N D ATA
E =
(e.g.) member of, held in,
stood in…
V =
elections, constituencies,
years, politicians and parties
24. G ra p h i ca l M o d e l l i n g
N e o 4 J : T h e W h at A n d W h y ?
“ Cy p h e r ” Q u e ry La n g u a g e
Le t ’s S e e I t A ct i o n !
T h e G ra p h i n g Eco s y ste m
30. D ATA
S T O R A G E
• Nodes and edges are all:
• Stored as first-class
objects on the file
system
• “typed”
• Key-value stores
31. C O M M U N I T Y
E D I T I O N
• Free for hacking around in
32. E N T E R P R I S E
E D I T I O N
• Bespoke Prices, but
includes:
• Higher performance
for concurrent
querying
• Clustering
• Hot backups
• Advanced Monitoring
33. O T H E R G R A P H
D ATA B A S E S
• ArangoDB
• OrientDB
• New: Graph Engine
36. N O T H I N G *
*If you use it for
the right job
37. D ATA I N T H E
R E L AT I O N S
• “Joins” are first class
objects in the database
that can be queried at no
additional cost
• Certain queries become
trivial (e.g. Joins)
38. P R O T O T Y P I N G
• Easy to see and work with
data
• Schemaless
• Active community with a
lot of libraries
43. G ra p h i ca l M o d e l l i n g
N e o 4 J : T h e W h at A n d W h y ?
“ Cy p h e r ” Q u e ry La n g u a g e
Le t ’s S e e I t A ct i o n !
T h e G ra p h i n g Eco s y ste m
44. W H AT I S
C Y P H E R ?
• Neo4j’s own query
language
• Declarative
• Designed to be readable
and easy to learn
45. A S C I I A R T S Y N TA X : N O D E S
(n)
(n:Actor)
(n:Actor {name:”Kevin Bacon”})
46. A S C I I A R T S Y N TA X : E D G E S
-[r:starred_in]->
<-[r:starred_in]-
-[r:starred_in]-
47. A S C I I A R T S Y N TA X : E D G E S
(n:Actor)-[r:starred_in]->(m:Movie)
48. A S C I I A R T S Y N TA X : E D G E S
(n:Actor)-[r:starred_in]->(m:Movie)
<-[r:starred_in]-(a:Actor)
49. M AT C H & R E T U R N
MATCH {pattern} RETURN {variables}
50. M AT C H & R E T U R N
MATCH (n:Actor)-[r:starred_in]->(m:Movie)
RETURN n, r, m
51. M AT C H & R E T U R N
MATCH (n:Actor {name: ”Kevin Bacon”})
-[r:starred_in]->(m:Movie)
RETURN m
52. P E R S I S T E N C E
CREATE (n: Actor {name: “David”})
RETURN n
53. P E R S I S T E N C E
MATCH (m:Movie), (a:Actor {name =“David”})
CREATE (a)-[:starred_in]->(m)
RETURN a, m
54. A G G R E G AT I O N
MATCH (n:Actor)<-[:starred_in]-(m:Movie)
RETURN n, sum(m.revenue)
55. L O A D F R O M C S V
LOAD CSV FROM 'foo.csv' AS line
CREATE (:Actor { name: line[1]})
56. G ra p h i ca l M o d e l l i n g
N e o 4 J : T h e W h at A n d W h y ?
“ Cy p h e r ” Q u e ry La n g u a g e
Le t ’s S e e I t A ct i o n !
T h e G ra p h i n g Eco s y ste m
57. G ra p h i ca l M o d e l l i n g
N e o 4 J : T h e W h at A n d W h y ?
“ Cy p h e r ” Q u e ry La n g u a g e
Le t ’s S e e I t A ct i o n !
T h e G ra p h i n g Eco s y ste m
58. D I F F E R E N T
L A N G U A G E
S U P P O R T
• Java
• Spring Data for full
ORM
• Hibernate OGM
• Embedded Java API
• Kundera
59. D I F F E R E N T
L A N G U A G E
S U P P O R T
• .NET - Neo4jClient
• JavaScript - Seraph.js,
node-neo4j
• Clojure - Neocons
• Haskell, Go, PHP and
more…
60. G R A P H E N E D B
• Remote hosting of neo4j
on Heroku, AWS or Azure
• Monitoring, support, back-
ups, scalability
61. V I S U A L I S AT I O N
T O O L S
• Lots of tools out there to
take subgraphs and turn
them into pretty views.
62. V I S U A L I S AT I O N T O O L S : A L C H E M Y J S
63. V I S U A L I S AT I O N T O O L S : L I N K U R I O U S
64. G R A P H A WA R E
• Java libraries that make
developing with graphs
easier:
• “TimeTree”
• “GraphGen”
• “Reco”
65. I N
C O N C L U S I O N …
• Graphs more accurately
model a lot of domains
• Neo4j is a robust and
mature way of storing this
• It’s got a thriving
ecosystem and community
• Go forth and play!
66. A N Y Q U EST I O N S ?
@ Swa m Wi t h Tu rt l e s
s wa m w i t h t u rt l e s . co m