Upload
david-simons
View
58
Download
0
Embed Size (px)
Citation preview
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
G ra p h i c a l M o d e l l i n g
N e o4 J : T h e W h a t A n d W h y ?
“ Cy p h e r ” Q u e ry L a n g u a g e
Le t ’s S e e I t A c t i o n !
T h e G ra p h i n g E c o s y s t e m
G ra p h i c a l M o d e l l i n g
N e o4 J : T h e W h a t A n d W h y ?
“ Cy p h e r ” Q u e ry L a n g u a g e
Le t ’s S e e I t A c t i o n !
T h e G ra p h i n g E c o s y s t e m
W H AT I S A G R A P H ?
{ (V, E) : V = [n], E ⊆ V(2) }E is made up of pairs
of elements of V(Ordered and
not necessarily distinct)
G I V I N G R E A L W O R L D M E A N I N G S T O V A N D E
W H A T I S G R A P H I C A L M O D E L L I N G ?
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
G ra p h i c a l M o d e l l i n g
N e o4 J : T h e W h a t A n d W h y ?
“ Cy p h e r ” Q u e ry L a n g u a g e
Le t ’s S e e I t A c t i o n !
T h e G ra p h i n g E c o s y s t e m
"embedded, disk-based, fully transactional Java persistence engine that stores data structured in
graphs rather than in tables"
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
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
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)
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
G ra p h i c a l M o d e l l i n g
N e o4 J : T h e W h a t A n d W h y ?
“ Cy p h e r ” Q u e ry L a n g u a g e
Le t ’s S e e I t A c t i o n !
T h e G ra p h i n g E c o s y s t e m
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
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)
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
G ra p h i c a l M o d e l l i n g
N e o4 J : T h e W h a t A n d W h y ?
“ Cy p h e r ” Q u e ry L a n g u a g e
Le t ’s S e e I t A c t i o n !
T h e G ra p h i n g E c o s y s t e m
G ra p h i c a l M o d e l l i n g
N e o4 J : T h e W h a t A n d W h y ?
“ Cy p h e r ” Q u e ry L a n g u a g e
Le t ’s S e e I t A c t i o n !
T h e G ra p h i n g E c o s y s t e m
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
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…
G R A P H E N E D B
• Remote hosting of neo4j on Heroku, AWS or Azure
• Monitoring, support, back-ups, scalability
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.
G R A P H A W A R E
• Java libraries that make developing with graphs easier:
• “TimeTree”
• “GraphGen”
• “Reco”
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!
A N Y Q U E S T I O N S ?
@ S wa m Wi t h Tu r t l e ss wa m w i t h t u r t l e s . c o m