Let Me Graph That For You: Building a Graph Database Application

746 views

Published on

Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1zXZZ1s.

Ian Robinson introduces tools and techniques for building a system around a graph engine, experiment with graph data, and using it in an application. Filmed at qconnewyork.com.

Ian Robinson works on research and development for future versions of the Neo4j graph database. Harbouring a long-held interest in connected data, he was for many years one of the foremost proponents of REST architectures, before turning his focus from the Web's global graph to the realm of graph databases.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
746
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Let Me Graph That For You: Building a Graph Database Application

  1. 1. Let  Me  Graph  That  For  You   @ianSrobinson     #neo4j    
  2. 2. InfoQ.com: News & Community Site • 750,000 unique visitors/month • Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) • Post content from our QCon conferences • News 15-20 / week • Articles 3-4 / week • Presentations (videos) 12-15 / week • Interviews 2-3 / week • Books 1 / month Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations /graph-db-tools
  3. 3. Presented at QCon New York www.qconnewyork.com Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide
  4. 4. Outline   •  Data  complexity   •  Graph  data  scenarios   •  Using  a  graph  database  
  5. 5. complexity = f(size, variable structure, connectedness)  
  6. 6. Variable  Structure  
  7. 7. Connectedness   •  Existence   •  SemanFcs   •  Quality   ?  
  8. 8. Graphs  Are  Everywhere  
  9. 9. •  Store   •  Manage   •  Query   data   Graph  Databases  
  10. 10. Social  Network  
  11. 11. Network  Impact  Analysis  
  12. 12. Route  Finding  
  13. 13. RecommendaFons  
  14. 14. LogisFcs  
  15. 15. Access  Control  
  16. 16. Fraud  Analysis  
  17. 17. Neo4j  
  18. 18. Labeled  Property  Graph  
  19. 19. Querying  Graph  Data   •  Describing  graphs   •  CreaFng  nodes,  relaFonships  and  properFes   •  Querying  graphs  
  20. 20. How  to  Describe  a  Graph?  
  21. 21. Cypher  PaSern   (ben)-[:WORKS_FOR]->(acme), (ben)-[:HAS_SKILL]->(rest), (ben)-[:HAS_SKILL]->(neo4j)
  22. 22. Create  Some  Data   CREATE (ben:Person { name:'Ben' }), (acme:Company { name:'Acme' }), (rest:Skill { name:'REST' }), (neo4j:Skill { name:'Neo4j' }), (ben)-[:WORKS_FOR]->(acme), (ben)-[:HAS_SKILL]->(rest), (ben)-[:HAS_SKILL]->(graphs) RETURN ben
  23. 23. Create  Nodes   CREATE (ben:Person { name:'Ben' }), (acme:Company { name:'Acme' }), (rest:Skill { name:'REST' }), (neo4j:Skill { name:'Neo4j' }), (ben)-[:WORKS_FOR]->(acme), (ben)-[:HAS_SKILL]->(rest), (ben)-[:HAS_SKILL]->(graphs) RETURN ben
  24. 24. Create  RelaFonships   CREATE (ben:Person { name:'Ben' }), (acme:Company { name:'Acme' }), (rest:Skill { name:'REST' }), (neo4j:Skill { name:'Neo4j' }), (ben)-[:WORKS_FOR]->(acme), (ben)-[:HAS_SKILL]->(rest), (ben)-[:HAS_SKILL]->(graphs) RETURN ben
  25. 25. Return  Node   CREATE (ben:Person { name:'Ben' }), (acme:Company { name:'Acme' }), (rest:Skill { name:'REST' }), (neo4j:Skill { name:'Neo4j' }), (ben)-[:WORKS_FOR]->(acme), (ben)-[:HAS_SKILL]->(rest), (ben)-[:HAS_SKILL]->(graphs) RETURN ben
  26. 26. Querying  a  Graph   Graph  Local   •  Find  one  or  more  start  nodes   •  Explore  surrounding  graph   •  Millions  of  hops  per  second  
  27. 27. Which  people,  who  work  for  the  same   company  as  me,  share  my  skills?  
  28. 28. Cypher  PaSern   (company)<-[:WORKS_FOR]-(me)-[:HAS_SKILL]->(skill), (company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]->(skill)
  29. 29. Cypher  Query   Which  people,  who  work  for  the  same  company   as  me,  have  similar  skills  to  me?   MATCH (company)<-[:WORKS_FOR]-(:Person{name:'ian'}) -[:HAS_SKILL]->(skill), (company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]->(skill) RETURN colleague.name AS name, count(skill) AS score, collect(skill.name) AS skills ORDER BY score DESC
  30. 30. Graph  PaSern   Which  people,  who  work  for  the  same  company   as  me,  have  similar  skills  to  me?   MATCH (company)<-[:WORKS_FOR]-(:Person{name:'ian'}) -[:HAS_SKILL]->(skill), (company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]->(skill) RETURN colleague.name AS name, count(skill) AS score, collect(skill.name) AS skills ORDER BY score DESC
  31. 31. Anchor  PaSern  in  Graph   Which  people,  who  work  for  the  same  company   as  me,  have  similar  skills  to  me?   MATCH (company)<-[:WORKS_FOR]-(:Person{name:'ian'}) -[:HAS_SKILL]->(skill), (company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]->(skill) RETURN colleague.name AS name, count(skill) AS score, collect(skill.name) AS skills ORDER BY score DESC
  32. 32. Create  Results   Which  people,  who  work  for  the  same  company   as  me,  have  similar  skills  to  me?   MATCH (company)<-[:WORKS_FOR]-(:Person{name:'ian'}) -[:HAS_SKILL]->(skill), (company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]->(skill) RETURN colleague.name AS name, count(skill) AS score, collect(skill.name) AS skills ORDER BY score DESC
  33. 33. Results   +--------------------------------------+ | name | score | skills | +--------------------------------------+ | "Ben" | 2 | ["Neo4j","REST"] | | "Charlie" | 1 | ["Neo4j"] | +--------------------------------------+ 2 rows
  34. 34. Case  Studies  
  35. 35. Network  Impact  Analysis   •  Which  parts  of  network   does  a  customer   depend  on?   •  Who  will  be  affected  if   we  replace  a  network   element?  
  36. 36. Asset  Management  &  Access  Control   •  Which  assets  can  an   admin  control?   •  Who  can  change  my   subscripFon?  
  37. 37. LogisFcs   •  What’s  the  quickest   delivery  route  for  this   parcel?  
  38. 38. Social  Network  &  RecommendaFons   •  Which  assets  can  I   access?   •  Who  shares  my   interests?  
  39. 39. neo4j.com/online_course  
  40. 40. Ian Robinson, Jim Webber & Emil Eifrem Graph Databases h Com plim ents ofNeo Technology graphdatabases.com   @ianSrobinson   #neo4j       Thank  you  
  41. 41. Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations/graph-db- tools

×