+ All Categories

Download - Graph Modelling

Transcript

G R A P H D ATA B A S E S

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 ?

Taken from Jim Webber’s Dr. Who Dataset

W H AT I S A G R A P H ?

{ (V, E) : V = [n], E ⊆ V(2) }

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”

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

W H AT I S A G R A P H ?

Vertex Set

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)

W H AT I S A G R A P H ?

Edge Set

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 ?

B R I D G E S AT K Ö N I G S B E R G

B R I D G E S AT K Ö N I G S B E R G

V = bits of land

E = bridges

K E V I N B A C O NS I X D E G R E E S O F …

T H E R E I S N O O P E N E L E C T I O N D ATA

T H E P R O B L E M

E L E C T I O N D ATA

E L E C T I O N D ATA

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

W O R L D ’ S L E A D I N G G R A P H D B :

W H E R E D I D I T C O M E F R O M ?

• First version 2010, v2 came out December 2013.

"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

D ATA S T O R A G E

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

C O M M U N I T Y E D I T I O N

• Free for hacking around in

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

O T H E R G R A P H D ATA B A S E S

• ArangoDB

• OrientDB

• New: Graph Engine

W H AT ’ S W R O N G W I T H S Q L ?

B U T…

N O T H I N G *

N O T H I N G *

*If you use it for the right job

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

N E O 4 J U S E R S

C A S E S T U D I E S

Real-time Recommendations

C A S E S T U D I E S

Logistics & Delivery Organisation

C A S E S T U D I E S

Online Dating

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 : N O D E S

(n)

(n:Actor)

(n:Actor {name:”Kevin Bacon”})

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]-

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)

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)

M AT C H & R E T U R N

MATCH {pattern} RETURN {variables}

M AT C H & R E T U R N

MATCH (n:Actor)-[r:starred_in]->(m:Movie) RETURN n, r, m

M AT C H & R E T U R N

MATCH (n:Actor {name: ”Kevin Bacon”})-[r:starred_in]->(m:Movie)

RETURN m

P E R S I S T E N C E

CREATE (n: Actor {name: “David”})RETURN n

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

A G G R E G AT I O N

MATCH (n:Actor)<-[:starred_in]-(m:Movie)RETURN n, sum(m.revenue)

L O A D F R O M C S V

LOAD CSV FROM 'foo.csv' AS lineCREATE (:Actor { name: line[1]})

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.

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

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

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


Top Related