Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Application Modeling with Graph
Databases – Relationships are cool!
Lars Martin, JUG Saxony Day, 04.04.2014
Application Modeling with Graph Databases – Relationships are cool!
§  Developer, Architect,
Consultant
§  Java Enterpri...
Agenda
² Status Quo
² SQL Join Hell
² Graph Basics
² Application Modeling
Application Modeling with Graph Databases – ...
Application Modeling with Graph Databases – Relationships are cool!
Status Quo
http://db-engines.com/en/ranking_definition
Application Modeling with Graph Databases – Relationships are cool!
SQL Join Hell(1)
Customer
Id Name Address
1Robert 3
2L...
Application Modeling with Graph Databases – Relationships are cool!
SQL Join Hell(2)
Application Modeling with Graph Databases – Relationships are cool!
SQL Join Hell(3)
­ all JOINs are executed every time ...
Application Modeling with Graph Databases – Relationships are cool!
Graphs – a Crash Course in Coolness
G = (V, E)Graph
Ve...
Application Modeling with Graph Databases – Relationships are cool!
Graphs – a Crash Course in Coolness
Application Modeling with Graph Databases – Relationships are cool!
Graphs – a Crash Course in Coolness
Vertices
•  unique...
Application Modeling with Graph Databases – Relationships are cool!
Real World Graphs (1)
maps closely
to the data
model
n...
Application Modeling with Graph Databases – Relationships are cool!
Real World Graphs (2)
“whiteboard” friendly
Application Modeling with Graph Databases – Relationships are cool!
Ø  Social: Facebook, Twitter, LinkedIn
Ø  Recommenda...
Application Modeling with Graph Databases – Relationships are cool!
Ø  Social: Facebook, Twitter, LinkedIn
Ø  Recommenda...
Application Modeling with Graph Databases – Relationships are cool!
Application Modeling
Spring Data – projects.spring.io/...
Application Modeling with Graph Databases – Relationships are cool!
Application Modeling
Application Modeling with Graph Databases – Relationships are cool!
Application Modeling
@Label	
public interface User {	
...
MATCH	
	(me)-[:POSTED]->(tweet)-[:MENTIONED]->(user)	
WHERE	
	me.name = 'Neo4j’ AND NOT (me)-[:FOLLOWS]->(user)	
WITH	
	us...
Demo
Application Modeling with Graph Databases – Relationships are cool!
Application Modeling
Relational Database
•  tabular data structures
Graph Database
•  connected data, esp.
multiple degrees
•  schema-less
Appl...
SMB GmbH – Plauenscher Ring 21 – D-01187 Dresden
Dipl.-Inf. Lars Martin
+49-(0)173-64 24 461
lars.martin@smb-tec.com
Application Modeling with Graph Databases - Relationships are cool
Application Modeling with Graph Databases - Relationships are cool
Application Modeling with Graph Databases - Relationships are cool
Application Modeling with Graph Databases - Relationships are cool
Application Modeling with Graph Databases - Relationships are cool
Nächste SlideShare
Wird geladen in …5
×

Application Modeling with Graph Databases - Relationships are cool

2.450 Aufrufe

Veröffentlicht am

My slides on Application Modeling with Graph Databases at JUG Saxony Day 2014.

Veröffentlicht in: Software, Technologie
  • Als Erste(r) kommentieren

Application Modeling with Graph Databases - Relationships are cool

  1. 1. Application Modeling with Graph Databases – Relationships are cool! Lars Martin, JUG Saxony Day, 04.04.2014
  2. 2. Application Modeling with Graph Databases – Relationships are cool! §  Developer, Architect, Consultant §  Java Enterprise, Eclipse, Continuous … §  Entrepreneur since 1998 Who’s the guy?
  3. 3. Agenda ² Status Quo ² SQL Join Hell ² Graph Basics ² Application Modeling Application Modeling with Graph Databases – Relationships are cool!
  4. 4. Application Modeling with Graph Databases – Relationships are cool! Status Quo http://db-engines.com/en/ranking_definition
  5. 5. Application Modeling with Graph Databases – Relationships are cool! SQL Join Hell(1) Customer Id Name Address 1Robert 3 2Lars 7 3Michael 23 Address Id Location 3Berlin 4Munich 7Dresden 23Leipzig CustomerAddress CId AId 1 3 2 7 2 8 3 23 Address Id Location 3Berlin 7Dresden 8New York 23Leipzig Address Id Customer Location 3 1Berlin 7 2Dresden 8 2New York 23 3Leipzig Customer Id Name 1Robert 2Lars 3Michael 1:1 Relationship m:n Relationship 1:n Relationship Customer Id Name 1Robert 2Lars 3Michael
  6. 6. Application Modeling with Graph Databases – Relationships are cool! SQL Join Hell(2)
  7. 7. Application Modeling with Graph Databases – Relationships are cool! SQL Join Hell(3) ­ all JOINs are executed every time you query (traverse) the relationship ­ executing a JOIN means to search for a key in another table ­ with Indices executing a JOIN means to lookup a key ­ B-Tree Index: O(log(n)) ­ more entries è more lookups è slower JOINs
  8. 8. Application Modeling with Graph Databases – Relationships are cool! Graphs – a Crash Course in Coolness G = (V, E)Graph Vertex Edgeh"p://de.wikipedia.org/wiki/Graph_(Graphentheorie)  
  9. 9. Application Modeling with Graph Databases – Relationships are cool! Graphs – a Crash Course in Coolness
  10. 10. Application Modeling with Graph Databases – Relationships are cool! Graphs – a Crash Course in Coolness Vertices •  unique identifier •  outgoing edges •  incoming edges •  key/value pairs Edges •  unique identifier •  start vertex •  end vertex •  type •  key/value pairs https://github.com/tinkerpop/gremlin/wiki/Defining-a-Property-Graph index-free adjacency (≈ O(1))
  11. 11. Application Modeling with Graph Databases – Relationships are cool! Real World Graphs (1) maps closely to the data model noun = vertex verb = edge
  12. 12. Application Modeling with Graph Databases – Relationships are cool! Real World Graphs (2) “whiteboard” friendly
  13. 13. Application Modeling with Graph Databases – Relationships are cool! Ø  Social: Facebook, Twitter, LinkedIn Ø  Recommendations: Amazon, MovieDB Ø  Logistics: Package Routing Ø  Financial: Fraud Detection Ø  Software: Dependency Management Ø  Authorization & Access Control: Ø  … Real World Graphs (3)
  14. 14. Application Modeling with Graph Databases – Relationships are cool! Ø  Social: Facebook, Twitter, LinkedIn Ø  Recommendations: Amazon, MovieDB Ø  Logistics: Package Routing Ø  Financial: Fraud Detection Ø  Software: Dependency Management Ø  Authorization & Access Control: Ø  … Real World Graphs (3) our area of activities
  15. 15. Application Modeling with Graph Databases – Relationships are cool! Application Modeling Spring Data – projects.spring.io/spring-data ü  Spring Data Neo4j supports property graph features XO - eXtended Objects – github.com/buschmais/xo ü  Lightweight Datastore-agnostic ORM ü  Implementation of “Composite Pattern” ü  Interface based (no POJOS), multiple inheritance ü  XO-Neo4j supports property graph features
  16. 16. Application Modeling with Graph Databases – Relationships are cool! Application Modeling
  17. 17. Application Modeling with Graph Databases – Relationships are cool! Application Modeling @Label public interface User { @Indexed(unique = true) String getName(); void setName(String name); @Relation("POSTED") @Outgoing Set<Tweet> getTweets(); @Relation("FOLLOWS") @Outgoing Set<User> getFollowing(); } @Label public interface Tweet { @Indexed(unique = true) long getTweetId(); void setTweetId(long id); String getText(); void setText(String text); @Relation("POSTED") @Incoming User getSender(); void setSender(User sender); @Relation("MENTIONED") @Outgoing Set<User> getMentions(); … }
  18. 18. MATCH (me)-[:POSTED]->(tweet)-[:MENTIONED]->(user) WHERE me.name = 'Neo4j’ AND NOT (me)-[:FOLLOWS]->(user) WITH user ORDER BY user.name RETURN DISTINCT user   Application Modeling with Graph Databases – Relationships are cool! Application Modeling @ResultOf @Cypher("MATCH (me)-[:POSTED]->(tweet)- [:MENTIONED]->(user) WHERE id(me) = id({this}) AND NOT (me)-[:FOLLOWS]->(user) WITH user ORDER BY user.name RETURN DISTINCT user") Result<User> suggestFriends();  
  19. 19. Demo Application Modeling with Graph Databases – Relationships are cool! Application Modeling
  20. 20. Relational Database •  tabular data structures Graph Database •  connected data, esp. multiple degrees •  schema-less Application Modeling with Graph Databases – Relationships are cool! Application Modeling “A relational database may tell you the average age of everyone in this place … … but a graph database will tell you who is most likely to buy you a beer.”
  21. 21. SMB GmbH – Plauenscher Ring 21 – D-01187 Dresden Dipl.-Inf. Lars Martin +49-(0)173-64 24 461 lars.martin@smb-tec.com

×