Graph Databases Use Cases
What’s a Graph?
LIVES WITH LOVES OWNS DRIVES LOVES name:“James” age: 32 twitter:“@spam” name:“Mary” age: 35 property type:“car” brand:“Volvo” model:“V70” Graph data model
Relational Tables
Join this way…
• 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 The Problem
People ConferencesAttend 143 Max 326 Big Data Tech Con 725 NoSQL Now 981 Chariot Data IO143 981 143 725 143 326
Max Big Data Tech Con NoSQL Now Chariot Data IO 143 326 725 981 143 981 143 725 143 326
uid: MDM! name: Max uid: BDTC! where: Burlinggame uid: NSN! where: San Francisco uid: CDIO! where: Philadelphia Nodes Relationships member member member A Property Graph
The Neo4j Secret Sauce • Pointers instead of look-ups • Do all your “Joining” on creation • Spin spin spin through this data structure
Graph Buzz!
• Neo4j is the leading graph database in the world today • Most widely deployed: 500,000+ downloads • Largest ecosystem: active forums, code contributions, etc • Most mature product: in development since 2000, in 24/7 production since 2003 The Neo4j Graph Database
Early Adopters of Graph Tech
Evolution of Web Search Survival of the Fittest Pre-1999 WWW Indexing Discrete Data 1999 - 2012 Google Invents PageRank Connected Data (Simple) 2012-? Google Knowledge Graph, Facebook Graph Search Connected Data (Rich)
Open Source Example http://maxdemarzi.com/2013/01/28/facebook-graph- search-with-cypher-and-neo4j/
Evolution of Online Recruiting 1999 Keyword Search Discrete Data Survival of the Fittest 2011-12 Social Discovery Connected Data
Open Source Example http://maxdemarzi.com/2012/10/18/matches-are-the- new-hotness/
Open Source Example http://maxdemarzi.com/2012/10/18/matches-are-the- new-hotness/
Open Source Example http://maxdemarzi.com/2012/10/18/matches-are-the- new-hotness/
Content Management & Access Control Network Asset Management Network Cell Analysis Geo Routing (Public Transport) BioInformatics Emergent Graph in Other Industries (Actual Neo4j Graphs) Insurance Risk Analysis
Open Source Example http://maxdemarzi.com/2013/03/18/permission- resolution-with-neo4j-part-1/
Web Browsing Portfolio Analytics Mobile Social ApplicationGene Sequencing Emergent Graph in Other Industries (Actual Neo4j Graphs)
Open Source Example http://maxdemarzi.com/2013/04/19/match-making-with- neo4j/
Curriculum Graph
Core Industries & Use Cases: Web / ISV Finance & Insurance Datacom / Telecom Network & Data Center Management MDM Social Geo Early Adopter Segments (What we expected to happen - view from several years ago)
Core Industries & Use Cases: Web / ISV Finance & Insurance Telecomm- unications Network & Data Center Management MDM Social Geo Core Industries & Use Cases: Software Financial Services Telecommu nications Web Social, HR & Recruiting Health Care & Life Sciences Media & Publishing Energy, Services, Automotive, Gov’t, Logistics, Education, Gaming, Other Network & Data Center Management MDM / System of Record Social Geo Identity & Access Mgmt Content Management Recommend-ations BI, CRM, Impact Analysis, Fraud Detection, Resource Optimization, etc. Accenture Finance Energy Aerospace Neo4j Adoption Snapshot Select Commercial Customers (Community Users Not Included)
What CanYou Do With Graphs?
MATCH (me:Person)-[:IS_FRIEND_OF]->(friend), (friend)-[:LIKES]->(restaurant), (restaurant)-[:LOCATED_IN]->(city:Location), (restaurant)-[:SERVES]->(cuisine:Cuisine) ! WHERE me.name = 'Philip' AND city.location='New York' AND cuisine.cuisine='Sushi' ! RETURN restaurant.name * Cypher query language examplehttp://maxdemarzi.com/?s=facebook
What drugs will bind to protein X and not interact with drugY? Of course.. a graph is a graph is a graph
Connected Query Performance
Query ResponseTime* = f(graph density, graph size, query degree) RDBMS:
 >> exponential slowdown as each factor increases Neo4j:
 >> Performance remains constant as graph size increases
 >> Performance slowdown is linear or better as density & degree increase • Graph density (avg # rel’s / node) • Graph size (total # of nodes in the graph) • Query degree (# of hops in one’s query) Connected Query Performance
RDBMS vs. Native Graph Database Connected Query Performance Connectedness of Data Set ResponseTime RDBMS Degree: < 3 Size: Thousands # Hops: < 3 Neo4j Degree: Thousands+ Size: Billions+ # Hops: Tens to Hundreds
Database # persons query time MySQL Neo4j Neo4j ๏a sample social graph •with ~1,000 persons ๏average 50 friends per person ๏pathExists(a,b) limited to depth 4 ๏caches warmed up to eliminate disk I/O Graph db performance
Database # persons query time MySQL 1,000 2,000 ms Neo4j Neo4j ๏a sample social graph •with ~1,000 persons ๏average 50 friends per person ๏pathExists(a,b) limited to depth 4 ๏caches warmed up to eliminate disk I/O Graph db performance
Database # persons query time MySQL 1,000 2,000 ms Neo4j 1,000 2 ms Neo4j ๏a sample social graph •with ~1,000 persons ๏average 50 friends per person ๏pathExists(a,b) limited to depth 4 ๏caches warmed up to eliminate disk I/O Graph db performance
Database # persons query time MySQL 1,000 2,000 ms Neo4j 1,000 2 ms Neo4j 1,000,000 2 ms ๏a sample social graph •with ~1,000 persons ๏average 50 friends per person ๏pathExists(a,b) limited to depth 4 ๏caches warmed up to eliminate disk I/O Graph db performance *Additional Third Party Benchmark Available in Neo4j in Action: http://www.manning.com/partner/
The Zone of SQL Adequacy Connectedness of Data Set Performance SQL database Requirement of application Salary List ERP CRM Network / Data Center Management Social Master Data Management Geo Graph Database Optimal Comfort Zone
Graph Technology Ecosystem
#1: Graph Local Queries e.g. Recommendations, Friend-of-Friend, Shortest Path
How many restaurants, on average, has each person liked? #2: Graph Global Queries
What is a Graph Database “A graph database... is an online database management system with CRUD methods that expose a graph data model”1 • Two important properties: • Native graph storage engine: written from the ground up to manage graph data • Native graph processing, including
 index-free adjacency to facilitate traversals 1] Robinson,Webber, Eifrem. Graph Databases. O’Reilly, 2013. p. 5. ISBN-10: 1449356265
Graph Databases are Designed to: 1. Store inter-connected data 2. Make it easy to make sense of that data 3. Enable extreme-performance operations for: • Discovery of connected data patterns • Relatedness queries > depth 1 • Relatedness queries of arbitrary length 4. Make it easy to evolve the database
Top Reasons People Use 
 Graph Databases 1.Problems with Join performance. 2.Continuously evolving data set (often involves wide and sparse tables) 3.The Shape of the Domain is naturally a graph 4.Open-ended business requirements necessitating fast, iterative development.
Graph Compute Engine Processing engine that enables graph global computational algorithms to be run against large data sets Graph Mining Engine (Working Storage) In-Memory Processing System(s) of Record Graph Compute Engine Data extraction, transformation, and load
Real-Time/ OLTP Offline/ Batch Connected Data
Wait what?
New Users? Real Time Updates?
Graph Database Deployment Application Other Databases ETL Graph Database Cluster Data Storage &
 Business Rules Execution Reporting Graph-
 Dashboards
 &
 Ad-hoc
 Analysis
 Graph Visualization End User Ad-hoc visual navigation & discovery Bulk Analytic Infrastructure (e.g. Graph Compute Engine) ETL Graph Mining & Aggregation Data Scientist Ad-Hoc
 Analysis
Graph Dashboards The Power ofVisualization
Fraud Detection & Money Laundering
IT Service Dependencies
Working with Graphs Case Studies &Working Examples
Cypher LOVESA B Graph PatternsASCII art MATCH (A) -[:LOVES]-> (B) WHERE A.name = "A" RETURN B as lover
Social Example
Social Graph - Create Practical Cypher CREATE ! ! (joe:Person {name:"Joe"}),! ! (bob:Person {name:"Bob"}),! ! (sally:Person {name:"Sally"}),! ! (anna:Person {name:"Anna"}),! ! (jim:Person {name:"Jim"}),! ! (mike:Person {name:"Mike"}),! ! (billy:Person {name:"Billy"}),! ! ! ! (joe)-[:KNOWS]->(bob),! ! (joe)-[:KNOWS]->(sally),! ! (bob)-[:KNOWS]->(sally),! ! (sally)-[:KNOWS]->(anna),! ! (anna)-[:KNOWS]->(jim),! ! (anna)-[:KNOWS]->(mike),! ! (jim)-[:KNOWS]->(mike),! ! (jim)-[:KNOWS]->(billy)
Social Graph - Friends of Joe's Friends MATCH (person)-[:KNOWS]-(friend),! (friend)-[:KNOWS]-(foaf) ! WHERE person.name = "Joe"! AND NOT(person-[:KNOWS]-foaf)! RETURN foaf ! Practical Cypher foaf {name:"Anna"}
Social Graph - Common Friends MATCH (person1)-[:KNOWS]-(friend),! (person2)-[:KNOWS]-(friend)! WHERE person1.name = "Joe" ! AND person2.name = "Sally"! RETURN friend! ! ! Practical Cypher friend {name:"Bob"}
Social Graph - Shortest Path MATCH path = shortestPath(! (person1)-[:KNOWS*..6]-(person2)! )! WHERE person1.name = "Joe" ! ! AND person2.name = "Billy"! RETURN path! ! Practical Cypher path {start:"13759", ! nodes:["13759","13757","13756","13755","13753"],! length:4,! relationships:["101407","101409","101410","101413"],! end:"13753"}
Network Management Example
Network Management - Create CREATE ! ! (crm {name:"CRM"}),! ! (dbvm {name:"Database VM"}),! ! (www {name:"Public Website"}),! ! (wwwvm {name:"Webserver VM"}),! ! (srv1 {name:"Server 1"}),! ! (san {name:"SAN"}),! ! (srv2 {name:"Server 2"}),! ! ! (crm)-[:DEPENDS_ON]->(dbvm),! ! (dbvm)-[:DEPENDS_ON]->(srv2),! ! (srv2)-[:DEPENDS_ON]->(san),! ! (www)-[:DEPENDS_ON]->(dbvm),! ! (www)-[:DEPENDS_ON]->(wwwvm),! ! (wwwvm)-[:DEPENDS_ON]->(srv1),! ! (srv1)-[:DEPENDS_ON]->(san)! Practical Cypher
Network Management - Impact Analysis // Server 1 Outage! MATCH (n)<-[:DEPENDS_ON*]-(upstream)! WHERE n.name = "Server 1"! RETURN upstream! Practical Cypher upstream {name:"Webserver VM"} {name:"Public Website"}
Network Management - Dependency Analysis // Public website dependencies! MATCH (n)-[:DEPENDS_ON*]->(downstream)! WHERE n.name = "Public Website"! RETURN downstream! ! Practical Cypher downstream {name:"Database VM"} {name:"Server 2"} {name:"SAN"} {name:"Webserver VM"} {name:"Server 1"}
Network Management - Statistics // Most depended on component! MATCH (n)<-[:DEPENDS_ON*]-(dependent)! RETURN n, ! count(DISTINCT dependent) ! AS dependents! ORDER BY dependents DESC! LIMIT 1 Practical Cypher n dependents {name:"SAN"} 6
Questions ?

Graph Database Use Cases - StampedeCon 2015

  • 1.
  • 2.
  • 3.
    LIVES WITH LOVES OWNS DRIVES LOVES name:“James” age: 32 twitter:“@spam” name:“Mary” age:35 property type:“car” brand:“Volvo” model:“V70” Graph data model
  • 4.
  • 5.
  • 6.
    • all JOINsare 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 The Problem
  • 7.
    People ConferencesAttend 143 Max 326 BigData Tech Con 725 NoSQL Now 981 Chariot Data IO143 981 143 725 143 326
  • 8.
    Max Big Data TechCon NoSQL Now Chariot Data IO 143 326 725 981 143 981 143 725 143 326
  • 9.
    uid: MDM! name: Max uid:BDTC! where: Burlinggame uid: NSN! where: San Francisco uid: CDIO! where: Philadelphia Nodes Relationships member member member A Property Graph
  • 10.
    The Neo4j SecretSauce • Pointers instead of look-ups • Do all your “Joining” on creation • Spin spin spin through this data structure
  • 11.
  • 12.
    • Neo4j isthe leading graph database in the world today • Most widely deployed: 500,000+ downloads • Largest ecosystem: active forums, code contributions, etc • Most mature product: in development since 2000, in 24/7 production since 2003 The Neo4j Graph Database
  • 13.
  • 14.
    Evolution of WebSearch Survival of the Fittest Pre-1999 WWW Indexing Discrete Data 1999 - 2012 Google Invents PageRank Connected Data (Simple) 2012-? Google Knowledge Graph, Facebook Graph Search Connected Data (Rich)
  • 15.
  • 16.
    Evolution of OnlineRecruiting 1999 Keyword Search Discrete Data Survival of the Fittest 2011-12 Social Discovery Connected Data
  • 17.
  • 18.
  • 19.
  • 20.
    Content Management & AccessControl Network Asset Management Network Cell Analysis Geo Routing (Public Transport) BioInformatics Emergent Graph in Other Industries (Actual Neo4j Graphs) Insurance Risk Analysis
  • 21.
  • 22.
    Web Browsing PortfolioAnalytics Mobile Social ApplicationGene Sequencing Emergent Graph in Other Industries (Actual Neo4j Graphs)
  • 23.
  • 24.
  • 25.
    Core Industries & UseCases: Web / ISV Finance & Insurance Datacom / Telecom Network & Data Center Management MDM Social Geo Early Adopter Segments (What we expected to happen - view from several years ago)
  • 26.
    Core Industries & UseCases: Web / ISV Finance & Insurance Telecomm- unications Network & Data Center Management MDM Social Geo Core Industries & Use Cases: Software Financial Services Telecommu nications Web Social, HR & Recruiting Health Care & Life Sciences Media & Publishing Energy, Services, Automotive, Gov’t, Logistics, Education, Gaming, Other Network & Data Center Management MDM / System of Record Social Geo Identity & Access Mgmt Content Management Recommend-ations BI, CRM, Impact Analysis, Fraud Detection, Resource Optimization, etc. Accenture Finance Energy Aerospace Neo4j Adoption Snapshot Select Commercial Customers (Community Users Not Included)
  • 27.
    What CanYou DoWith Graphs?
  • 29.
    MATCH (me:Person)-[:IS_FRIEND_OF]->(friend), (friend)-[:LIKES]->(restaurant), (restaurant)-[:LOCATED_IN]->(city:Location), (restaurant)-[:SERVES]->(cuisine:Cuisine) ! WHERE me.name= 'Philip' AND city.location='New York' AND cuisine.cuisine='Sushi' ! RETURN restaurant.name * Cypher query language examplehttp://maxdemarzi.com/?s=facebook
  • 31.
    What drugs willbind to protein X and not interact with drugY? Of course.. a graph is a graph is a graph
  • 32.
  • 33.
    Query ResponseTime* = f(graph density, graph size, query degree) RDBMS:
 >> exponential slowdown as each factor increases Neo4j:
 >> Performance remains constant as graph size increases
 >> Performance slowdown is linear or better as density & degree increase • Graph density (avg # rel’s / node) • Graph size (total # of nodes in the graph) • Query degree (# of hops in one’s query) Connected Query Performance
  • 34.
    RDBMS vs. NativeGraph Database Connected Query Performance Connectedness of Data Set ResponseTime RDBMS Degree: < 3 Size: Thousands # Hops: < 3 Neo4j Degree: Thousands+ Size: Billions+ # Hops: Tens to Hundreds
  • 35.
    Database # personsquery time MySQL Neo4j Neo4j ๏a sample social graph •with ~1,000 persons ๏average 50 friends per person ๏pathExists(a,b) limited to depth 4 ๏caches warmed up to eliminate disk I/O Graph db performance
  • 36.
    Database # personsquery time MySQL 1,000 2,000 ms Neo4j Neo4j ๏a sample social graph •with ~1,000 persons ๏average 50 friends per person ๏pathExists(a,b) limited to depth 4 ๏caches warmed up to eliminate disk I/O Graph db performance
  • 37.
    Database # personsquery time MySQL 1,000 2,000 ms Neo4j 1,000 2 ms Neo4j ๏a sample social graph •with ~1,000 persons ๏average 50 friends per person ๏pathExists(a,b) limited to depth 4 ๏caches warmed up to eliminate disk I/O Graph db performance
  • 38.
    Database # personsquery time MySQL 1,000 2,000 ms Neo4j 1,000 2 ms Neo4j 1,000,000 2 ms ๏a sample social graph •with ~1,000 persons ๏average 50 friends per person ๏pathExists(a,b) limited to depth 4 ๏caches warmed up to eliminate disk I/O Graph db performance *Additional Third Party Benchmark Available in Neo4j in Action: http://www.manning.com/partner/
  • 39.
    The Zone ofSQL Adequacy Connectedness of Data Set Performance SQL database Requirement of application Salary List ERP CRM Network / Data Center Management Social Master Data Management Geo Graph Database Optimal Comfort Zone
  • 40.
  • 41.
    #1: Graph LocalQueries e.g. Recommendations, Friend-of-Friend, Shortest Path
  • 42.
    How many restaurants,on average, has each person liked? #2: Graph Global Queries
  • 43.
    What is a GraphDatabase “A graph database... is an online database management system with CRUD methods that expose a graph data model”1 • Two important properties: • Native graph storage engine: written from the ground up to manage graph data • Native graph processing, including
 index-free adjacency to facilitate traversals 1] Robinson,Webber, Eifrem. Graph Databases. O’Reilly, 2013. p. 5. ISBN-10: 1449356265
  • 44.
    Graph Databases areDesigned to: 1. Store inter-connected data 2. Make it easy to make sense of that data 3. Enable extreme-performance operations for: • Discovery of connected data patterns • Relatedness queries > depth 1 • Relatedness queries of arbitrary length 4. Make it easy to evolve the database
  • 45.
    Top Reasons PeopleUse 
 Graph Databases 1.Problems with Join performance. 2.Continuously evolving data set (often involves wide and sparse tables) 3.The Shape of the Domain is naturally a graph 4.Open-ended business requirements necessitating fast, iterative development.
  • 46.
    Graph Compute Engine Processingengine that enables graph global computational algorithms to be run against large data sets Graph Mining Engine (Working Storage) In-Memory Processing System(s) of Record Graph Compute Engine Data extraction, transformation, and load
  • 47.
  • 55.
  • 56.
  • 58.
    Graph Database Deployment Application Other Databases ETL GraphDatabase Cluster Data Storage &
 Business Rules Execution Reporting Graph-
 Dashboards
 &
 Ad-hoc
 Analysis
 Graph Visualization End User Ad-hoc visual navigation & discovery Bulk Analytic Infrastructure (e.g. Graph Compute Engine) ETL Graph Mining & Aggregation Data Scientist Ad-Hoc
 Analysis
  • 59.
  • 60.
    Fraud Detection &Money Laundering
  • 61.
  • 62.
    Working with Graphs CaseStudies &Working Examples
  • 63.
    Cypher LOVESA B Graph PatternsASCIIart MATCH (A) -[:LOVES]-> (B) WHERE A.name = "A" RETURN B as lover
  • 64.
  • 65.
    Social Graph -Create Practical Cypher CREATE ! ! (joe:Person {name:"Joe"}),! ! (bob:Person {name:"Bob"}),! ! (sally:Person {name:"Sally"}),! ! (anna:Person {name:"Anna"}),! ! (jim:Person {name:"Jim"}),! ! (mike:Person {name:"Mike"}),! ! (billy:Person {name:"Billy"}),! ! ! ! (joe)-[:KNOWS]->(bob),! ! (joe)-[:KNOWS]->(sally),! ! (bob)-[:KNOWS]->(sally),! ! (sally)-[:KNOWS]->(anna),! ! (anna)-[:KNOWS]->(jim),! ! (anna)-[:KNOWS]->(mike),! ! (jim)-[:KNOWS]->(mike),! ! (jim)-[:KNOWS]->(billy)
  • 66.
    Social Graph -Friends of Joe's Friends MATCH (person)-[:KNOWS]-(friend),! (friend)-[:KNOWS]-(foaf) ! WHERE person.name = "Joe"! AND NOT(person-[:KNOWS]-foaf)! RETURN foaf ! Practical Cypher foaf {name:"Anna"}
  • 67.
    Social Graph -Common Friends MATCH (person1)-[:KNOWS]-(friend),! (person2)-[:KNOWS]-(friend)! WHERE person1.name = "Joe" ! AND person2.name = "Sally"! RETURN friend! ! ! Practical Cypher friend {name:"Bob"}
  • 68.
    Social Graph -Shortest Path MATCH path = shortestPath(! (person1)-[:KNOWS*..6]-(person2)! )! WHERE person1.name = "Joe" ! ! AND person2.name = "Billy"! RETURN path! ! Practical Cypher path {start:"13759", ! nodes:["13759","13757","13756","13755","13753"],! length:4,! relationships:["101407","101409","101410","101413"],! end:"13753"}
  • 69.
  • 70.
    Network Management -Create CREATE ! ! (crm {name:"CRM"}),! ! (dbvm {name:"Database VM"}),! ! (www {name:"Public Website"}),! ! (wwwvm {name:"Webserver VM"}),! ! (srv1 {name:"Server 1"}),! ! (san {name:"SAN"}),! ! (srv2 {name:"Server 2"}),! ! ! (crm)-[:DEPENDS_ON]->(dbvm),! ! (dbvm)-[:DEPENDS_ON]->(srv2),! ! (srv2)-[:DEPENDS_ON]->(san),! ! (www)-[:DEPENDS_ON]->(dbvm),! ! (www)-[:DEPENDS_ON]->(wwwvm),! ! (wwwvm)-[:DEPENDS_ON]->(srv1),! ! (srv1)-[:DEPENDS_ON]->(san)! Practical Cypher
  • 71.
    Network Management -Impact Analysis // Server 1 Outage! MATCH (n)<-[:DEPENDS_ON*]-(upstream)! WHERE n.name = "Server 1"! RETURN upstream! Practical Cypher upstream {name:"Webserver VM"} {name:"Public Website"}
  • 72.
    Network Management -Dependency Analysis // Public website dependencies! MATCH (n)-[:DEPENDS_ON*]->(downstream)! WHERE n.name = "Public Website"! RETURN downstream! ! Practical Cypher downstream {name:"Database VM"} {name:"Server 2"} {name:"SAN"} {name:"Webserver VM"} {name:"Server 1"}
  • 73.
    Network Management -Statistics // Most depended on component! MATCH (n)<-[:DEPENDS_ON*]-(dependent)! RETURN n, ! count(DISTINCT dependent) ! AS dependents! ORDER BY dependents DESC! LIMIT 1 Practical Cypher n dependents {name:"SAN"} 6
  • 74.