Transcript
Page 1: Application modelling with graph databases

Application Modelingwith Graph Databases

Page 2: Application modelling with graph databases

@josh_adellhttp://www.servicetrade.com

http://blog.everymansoftware.com

http://github.com/jadell/neo4jphp

https://joind.in/10430

Page 3: Application modelling with graph databases

The Problem

Page 4: Application modelling with graph databases

The Solution?> -- First degree> SELECT actor_name FROM cast WHERE movie_title IN (SELECT DISTINCT movie_title FROM cast WHERE actor_name='Kevin Bacon')

> -- Second degree> SELECT actor_name FROM cast WHERE movie_title IN (SELECT DISTINCT movie_title FROM cast WHERE actor_name IN (SELECT actor_name FROM cast WHERE movie_title IN (SELECT DISTINCT movie_title FROM cast WHERE actor_name='Kevin Bacon')))

> -- Third degree> SELECT actor_name FROM cast WHERE movie_title IN(SELECT DISTINCT movie_title FROM cast WHERE actor_name IN (SELECT actor_name FROM cast WHERE movie_title IN (SELECT DISTINCT movie_title FROM cast WHERE actor_name IN (SELECT actor_name FROM cast WHERE movie_title IN (SELECT DISTINCT movie_title FROM cast WHERE actor_name='Kevin Bacon'))))

Page 5: Application modelling with graph databases

The TruthRelational databases aren't very good with relationships

Data

RDBMs

Page 6: Application modelling with graph databases

Try again?

Page 7: Application modelling with graph databases
Page 8: Application modelling with graph databases

Warning: Computer Science AheadA graph is an ordered pair G = (V, E)

where V is a set of vertices and

E is a set of edges,which are pairs of vertices in V.

If vertex pairs in E are ordered,the graph is directed.

Page 9: Application modelling with graph databases

Property Graph

Nodes have properties and labels

Relationships have properties, a type and direction

Relationships are first-class entitiesQueried just like Nodes

Indexes

Unique constraintsnew in Neo4j 2.0!

Page 10: Application modelling with graph databases

Graphs are Everywhere

Page 11: Application modelling with graph databases

Relational Databases are Graphs!

Page 12: Application modelling with graph databases

Everything is connected

Page 13: Application modelling with graph databases

Modeling "Whiteboard-Friendly"

Nouns => nodes, Verbs => relationships

Page 14: Application modelling with graph databases

Back to Bacon

MATCH p = shortestPath( (r:Actor) - [*] - (b:Actor) )

WHERE r.name=”Keanu Reeves” AND b.name=”Kevin Bacon”

RETURN p, LENGTH(p)/2

Page 15: Application modelling with graph databases

SocialMATCH

(:Person {name:"Josh"})-[:FRIEND_OF]-(p:Person),(m:Movie)

WHERE NOT(p)-[:HAS_WATCHED]->(m)

RETURN COUNT(p) as not_seen, m

ORDER BY not_seen DESC LIMIT 1

Page 16: Application modelling with graph databases

But Wait...There's More!Mutating (insert, update ~ create, merge)

Indexing (auto, full-text, spatial)

Batches and Transactions

Embedded (for JVM) or REST

Page 17: Application modelling with graph databases

Where fore art thou, RDB?Aggregation

Ordered data

Truly tabular data

Few or clearly defined relationships

Page 18: Application modelling with graph databases

Questions?

Page 19: Application modelling with graph databases

Resources● http://github.com/jadell/neo4jphp

● http://neo4j.org

● Jim Webber - A Little Graph Theory for the Busy Developer○ http://vimeo.com/76713692 - Jim Webber

● http://joshadell.com

● https://joind.in/10430


Top Related