Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Webinar: RDBMS to Graphs

1,024 views

Published on

Relational databases were conceived to digitize paper forms and automate well-structured business processes, and still have their uses. But RDBMS cannot model or store data and its relationships without complexity, which means performance degrades with the increasing number and levels of data relationships and data size. Additionally, new types of data and data relationships require schema redesign that increases time to market.

A native graph database like Neo4j naturally stores, manages, analyzes, and uses data within the context of connections meaning Neo4j provides faster query performance and vastly improved flexibility in handling complex hierarchies than SQL.

This webinar explains why companies are shifting away from RDBMS towards graphs to unlock the business value in their data relationships.

Published in: Technology
  • Searching sex for a single night? Welcome to http://goo.gl/F88kpV
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Webinar: RDBMS to Graphs

  1. 1. RDBMS TO GRAPH Live from San Mateo, March 9, 2017 Webinar
  2. 2. HR-tools Supply Payments Logistics CRM Support TRADITIONAL DATA STRUCTURE RDBMS RDBMS RDBMSRDBMS RDBMS RDBMS
  3. 3. SHIFT TOWARDS SYSTEMS OF ENGAGEMENT
  4. 4. Users Engaging With DevicesUsers Engaging With Users Devices Engaging With Devices SYSTEMS OF ENGAGEMENT
  5. 5. SHIFT TOWARDS SYSTEMS OF ENGAGEMENT You are here! Data volume
  6. 6. SYSTEMS OF RECORD Relational Database Model Structured Pre-computed Based on rigid rules SYSTEMS OF ENGAGEMENT NoSQL Database Model Highly Flexible Real-Time Queries Highly Contextual
  7. 7. SYSTEMS OF RECORD
  8. 8. SYSTEMS OF ENGAGEMENT This is data modeled as a graph!
  9. 9. Intuitivness Speed Agility
  10. 10. Intuitiveness Speed Agility
  11. 11. Intuitiveness
  12. 12. Intuitivness Speed Agility
  13. 13. Speed “We found Neo4j to be literally thousands of times faster than our prior MySQL solution, with queries that require 10-100 times less code. Today, Neo4j provides eBay with functionality that was previously impossible.” - Volker Pacher, Senior Developer “Minutes to milliseconds” performance Queries up to 1000x faster than RDBMS or other NoSQL
  14. 14. Intuitivness Speed, because Native Graph Database Agility
  15. 15. WHAT DOES “NATIVE” MEAN?
  16. 16. Employee ID Name PictureRef Building Office Departme nt Title Degree1 Uni1 Major1 4951870 John Doe s3://acme- pics/ 4951870.p ng 1200 124A Eng Software Engineer II MS Harvard Computer Science 9765207 Jane Smith s3://acme- pics/ 9765207.p ng 1300 187D BizOps Sr Operations Associate BS Stanford Physics 4150915 Shyam Bhatt s3://acme- pics/ 4150915.p ng 45 432C Sales Enterprise Sales Assoc MBA Penn Accountin g 7566243 Kathryn Bates s3://acme- pics/ 7566243.p ng 44 334B Eng Staff Software Engineer PhD UCB Computer Science
  17. 17. WHY DOES “NATIVE” MATTER?
  18. 18. Think of a Relational DB Query EmpID Name PictureRef 4951870 John Doe s3://acme-pics/ 4951870.png 9765207 Jane Smith s3://acme-pics/ 9765207.png 4150915 Shyam Bhatt s3://acme-pics/ 4150915.png 7566243 Kathryn Bates s3://acme-pics/ 7566243.png EmpID Manager ID StartDate EndDate 4951870 9765207 20170101 null 9765207 7566243 20150130 null 4150915 8795882 20141215 20150312 7566243 8509238 20120605 20140124 EmpID Building Office 4951870 1200 124A 9765207 1300 187D 4150915 45 432C
  19. 19. Think of a Relational DB Query EmpID Name PictureRef 4951870 John Doe s3://acme-pics/ 4951870.png 9765207 Jane Smith s3://acme-pics/ 9765207.png 4150915 Shyam Bhatt s3://acme-pics/ 4150915.png 7566243 Kathryn Bates s3://acme-pics/ 7566243.png EmpID Manager ID StartDate EndDate 4951870 9765207 20170101 null 9765207 7566243 20150130 null 4150915 8795882 20141215 20150312 7566243 8509238 20120605 20140124 EmpID Building Office 4951870 1200 124A 9765207 1300 187D 4150915 45 432C
  20. 20. Think of a Relational DB Query EmpID Name PictureRef 4951870 John Doe s3://acme-pics/ 4951870.png 9765207 Jane Smith s3://acme-pics/ 9765207.png 4150915 Shyam Bhatt s3://acme-pics/ 4150915.png 7566243 Kathryn Bates s3://acme-pics/ 7566243.png EmpID Manager ID StartDate EndDate 4951870 9765207 20170101 null 9765207 7566243 20150130 null 4150915 8795882 20141215 20150312 7566243 8509238 20120605 20140124 EmpID Building Office 4951870 1200 124A 9765207 1300 187D 4150915 45 432C 16+ Index Lookups Expensive!
  21. 21. (Partial) Graph View 1 Index Lookup 
 (find :Employee nodes)
 
 Then Index-Free Adjacency :Employee {id:4951870} :Employee {id:9765207} :Office {id: 1200124a} :Building {id: 1200} [:IS_MANAGED_BY] [:HAS_OFFICE] [:LOCATED_IN]
  22. 22. Intuitivness Speed Agility
  23. 23. A Naturally Adaptive Model A Query Language Designed for Connectedness + =Agility
  24. 24. Cypher Typical Complex SQL Join The Same Query using Cypher MATCH (boss)-[:MANAGES*0..3]->(sub), (sub)-[:MANAGES*1..3]->(report) WHERE boss.name = “John Doe” RETURN sub.name AS Subordinate, 
 count(report) AS Total Project Impact Less time writing queries Less time debugging queries Code that’s easier to read
  25. 25. ABOUT ME • Developed web apps for 5 years including e-commerce, business workflow, more. • Worked at Google for 8 years on Google Apps, Cloud Platform • Technologies: Python, Java, BigQuery, Oracle, MySQL, OAuth ryan@neo4j.com @ryguyrg
  26. 26. NEO4j USE CASES Real Time Recommendations Master Data Management Fraud Detection Identity & Access Management Graph Based Search Network & IT-Operations
  27. 27. NEO4j USE CASES Real Time Recommendations Master Data Management Fraud Detection Identity & Access Management Graph Based Search Network & IT-Operations GRAPH THINKING: Real Time Recommendations VIEWED VIEWED BOUGHT VIEWED BOUGHT BOUGHT BOUGHT BOUGHT
  28. 28. “As the current market leader in graph databases, and with enterprise features for scalability and availability, Neo4j is the right choice to meet our demands.” Marcos Wada Software Developer, Walmart NEO4j USE CASES Real Time Recommendations Master Data Management Fraud Detection Identity & Access Management Graph Based Search Network & IT-Operations
  29. 29. NEO4j USE CASES Real Time Recommendations Master Data Management Fraud Detection Identity & Access Management Graph Based Search Network & IT-Operations GRAPH THINKING: Master Data Management MANAGES MANAGES LEADS REGION M ANAG ES MANAGES REGION LEADS LEADS COLLABORATES
  30. 30. Neo4j is the heart of Cisco HMP: used for governance and single source of truth and a one-stop shop for all of Cisco’s hierarchies. NEO4j USE CASES Real Time Recommendations Master Data Management Fraud Detection Identity & Access Management Graph Based Search Network & IT-Operations
  31. 31. NEO4j USE CASES Real Time Recommendations Master Data Management Fraud Detection Identity & Access Management Graph Based Search Network & IT-Operations GRAPH THINKING: Master Data Management Solu%on Support Case Support Case Knowledge Base Ar%cle Message Knowledge Base Ar%cle Knowledge Base Ar%cle Neo4j is the heart of Cisco’s Helpdesk Solution too.
  32. 32. NEO4j USE CASES Real Time Recommendations Master Data Management Fraud Detection Identity & Access Management Graph Based Search Network & IT-Operations GRAPH THINKING: Fraud Detection O PENED_ACCO UNT HAS IS_ISSUED HAS LIVES LIVES IS_ISSUED OPENED_ACCOUNT
  33. 33. “Graph databases offer new methods of uncovering fraud rings and other sophisticated scams with a high-level of accuracy, and are capable of stopping advanced fraud scenarios in real-time.” Gorka Sadowski Cyber Security Expert NEO4j USE CASES Real Time Recommendations Master Data Management Fraud Detection Identity & Access Management Graph Based Search Network & IT-Operations
  34. 34. GRAPH THINKING: Graph Based Search NEO4j USE CASES Real Time Recommendations Master Data Management Fraud Detection Identity & Access Management Graph Based Search Network & IT-Operations PUBLISH INCLUDE INCLUDE CREATE CAPTURE IN IN SOURCE USES USES IN IN USES SOURCE SOURCE
  35. 35. Uses Neo4j to manage the digital assets inside of its next generation in-flight entertainment system. NEO4j USE CASES Real Time Recommendations Master Data Management Fraud Detection Identity & Access Management Graph Based Search Network & IT-Operations
  36. 36. NEO4j USE CASES Real Time Recommendations Master Data Management Fraud Detection Identity & Access Management Graph Based Search Network & IT-Operations BROWSES CONNECTS BRIDGES ROUTES POWERS ROUTES POWERS POWERS HOSTS QUERIES GRAPH THINKING: Network & IT-Operations
  37. 37. Uses Neo4j for network topology analysis for big telco service providers NEO4j USE CASES Real Time Recommendations Master Data Management Fraud Detection Identity & Access Management Graph Based Search Network & IT-Operations
  38. 38. GRAPH THINKING: Identity And Access Management NEO4j USE CASES Real Time Recommendations Master Data Management Fraud Detection Identity & Access Management Graph Based Search Network & IT-Operations TRUSTS TRUSTS ID ID AUTHENTICATES AUTHENTICATES O W NS OWNS CAN_READ
  39. 39. UBS was the recipient of the 2014 Graphie Award for “Best Identify And Access Management App” NEO4j USE CASES Real Time Recommendations Master Data Management Fraud Detection Identity & Access Management Graph Based Search Network & IT-Operations
  40. 40. Neo4j Adoption by Selected Verticals SOFTWARE FINANCIAL SERVICES RETAIL MEDIA & BROADCASTING SOCIAL NETWORKS TELECOM HEALTHCARE
  41. 41. AGENDA • Use Cases • SQL Pains • Building a Neo4j Application • Moving from RDBMS -> Graph Models • Walk through an Example • Creating Data in Graphs • Querying Data
  42. 42. SQL Day in the Life of a RDBMS Developer
  43. 43. SELECT p.name, c.country, c.leader, p.hair, u.name, u.pres, u.state FROM people p LEFT JOIN country c ON c.ID=p.country LEFT JOIN uni u ON p.uni=u.id WHERE u.state=‘CT’
  44. 44. JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN
  45. 45. JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN
  46. 46. JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN JOIN
  47. 47. • Complex to model and store relationships • Performance degrades with increases in data • Queries get long and complex • Maintenance is painful SQL Pains
  48. 48. • Easy to model and store relationships • Performance of relationship traversal remains constant with growth in data size • Queries are shortened and more readable • Adding additional properties and relationships can be done on the fly - no migrations Graph Gains
  49. 49. What does this Graph look like?
  50. 50. CYPHER Ann DanLoves
  51. 51. Property Graph Model CREATE (:Person { name:“Dan”} ) - [:LOVES]-> (:Person { name:“Ann”} ) LOVES LABEL PROPERTY NODE NODE LABEL PROPERTY
  52. 52. MATCH (p:Person)-[:WENT_TO]->(u:Uni), (p)-[:LIVES_IN]->(c:Country), (u)-[:LED_BY]->(l:Leader), (u)-[:LOCATED_IN]->(s:State) WHERE s.abbr = ‘CT’ RETURN p.name, c.country, c.leader, p.hair, u.name, l.name, s.abbr
  53. 53. How do you use Neo4j? CREATE MODEL + LOAD DATA QUERY DATA
  54. 54. How do you use Neo4j?
  55. 55. How do you use Neo4j?
  56. 56. Official Language Drivers
  57. 57. Community Language Drivers
  58. 58. Java Stored Procedures and Functions
  59. 59. GET STARTED TODAY!!!
  60. 60. GET STARTED TODAY!!! https://neo4j.com/sandbox-v2
  61. 61. Architectural Options Data Storage and Business Rules Execu5on Data Mining and Aggrega5on Applica'on Graph Database Cluster Neo4j Neo4j Neo4j Ad Hoc Analysis Bulk Analy'c Infrastructure Hadoop, EDW … Data Scien'st End User Databases Rela5onal NoSQL Hadoop
  62. 62. RDBMS to Graph Options MIGRATE ALL DATA MIGRATE SUBSET DUPLICATE SUBSET Non-Graph Queries Graph Queries Graph Queries Non-Graph Queries All Queries Rela3onal Database Graph Database Application Application Application Non Graph Data All Data
  63. 63. FROM RDBMS TO GRAPHS
  64. 64. Northwind
  65. 65. Northwind - the canonical RDBMS Example
  66. 66. ( )-[:TO]->(Graph)
  67. 67. ( )-[:IS_BETTER_AS]->(Graph)
  68. 68. Starting with the ER Diagram
  69. 69. Locate the Foreign Keys
  70. 70. Drop the Foreign Keys
  71. 71. Find the JOIN Tables
  72. 72. (Simple) JOIN Tables Become Relationships
  73. 73. Attributed JOIN Tables -> Relationships with Properties
  74. 74. Querying a Subset Today
  75. 75. As a Graph
  76. 76. QUERYING THE GRAPH
  77. 77. using openCypher
  78. 78. Property Graph Model CREATE (:Employee{ firstName:“Steven”} ) -[:REPORTS_TO]-> (:Employee{ firstName:“Andrew”} ) REPORTS_TO Steven Andrew LABEL PROPERTY NODE NODE LABEL PROPERTY
  79. 79. Who do people report to? MATCH (e:Employee)<-[:REPORTS_TO]-(sub:Employee) RETURN *
  80. 80. Who do people report to?
  81. 81. Who do people report to? MATCH (e:Employee)<-[:REPORTS_TO]-(sub:Employee) RETURN e.employeeID AS managerID, e.firstName AS managerName, sub.employeeID AS employeeID, sub.firstName AS employeeName;
  82. 82. Who do people report to?
  83. 83. Who does Robert report to? MATCH p=(e:Employee)<-[:REPORTS_TO]-(sub:Employee) WHERE sub.firstName = ‘Robert’ RETURN p
  84. 84. Who does Robert report to?
  85. 85. What is Robert’s reporting chain? MATCH p=(e:Employee)<-[:REPORTS_TO*]-(sub:Employee) WHERE sub.firstName = ‘Robert’ RETURN p
  86. 86. What is Robert’s reporting chain?
  87. 87. Who’s the Big Boss? MATCH (e:Employee) WHERE NOT (e)-[:REPORTS_TO]->() RETURN e.firstName as bigBoss
  88. 88. Who’s the Big Boss?
  89. 89. Product Cross-Selling MATCH (choc:Product {productName: 'Chocolade'}) <-[:INCLUDES]-(:Order)<-[:SOLD]-(employee), (employee)-[:SOLD]->(o2)-[:INCLUDES]->(other:Product) RETURN employee.firstName, other.productName, COUNT(DISTINCT o2) as count ORDER BY count DESC LIMIT 5;
  90. 90. Product Cross-Selling
  91. 91. (ASIDE ON GRAPH COMPUTE)
  92. 92. Shortest Path Between Airports MATCH p = shortestPath( (a:Airport {code:”SFO”})-[*0..2]-> (b:Airport {code: “MSO”})) RETURN p
  93. 93. (END ASIDE ON GRAPH COMPUTE)
  94. 94. POWERING AN APP
  95. 95. Simple App
  96. 96. Simple App
  97. 97. Simple Python Code
  98. 98. Simple Python Code
  99. 99. Simple Python Code
  100. 100. Simple Python Code
  101. 101. LOADING OUR DATA
  102. 102. CSV
  103. 103. CSV files for Northwind
  104. 104. CSV files for Northwind
  105. 105. 3 Steps to Creating the Graph IMPORT NODES CREATE INDEXES IMPORT RELATIONSHIPS
  106. 106. Importing Nodes // Create customers USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "https:// raw.githubusercontent.com/neo4j-contrib/developer-resources/ gh-pages/data/northwind/customers.csv" AS row CREATE (:Customer {companyName: row.CompanyName, customerID: row.CustomerID, fax: row.Fax, phone: row.Phone}); // Create products USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "https:// raw.githubusercontent.com/neo4j-contrib/developer-resources/ gh-pages/data/northwind/products.csv" AS row CREATE (:Product {productName: row.ProductName, productID: row.ProductID, unitPrice: toFloat(row.UnitPrice)});
  107. 107. Importing Nodes // Create suppliers USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "https:// raw.githubusercontent.com/neo4j-contrib/developer-resources/ gh-pages/data/northwind/suppliers.csv" AS row CREATE (:Supplier {companyName: row.CompanyName, supplierID: row.SupplierID}); // Create employees USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "https:// raw.githubusercontent.com/neo4j-contrib/developer-resources/ gh-pages/data/northwind/employees.csv" AS row CREATE (:Employee {employeeID:row.EmployeeID, firstName: row.FirstName, lastName: row.LastName, title: row.Title});
  108. 108. Creating Relationships USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "https:// raw.githubusercontent.com/neo4j-contrib/developer-resources/ gh-pages/data/northwind/orders.csv" AS row MATCH (order:Order {orderID: row.OrderID}) MATCH (customer:Customer {customerID: row.CustomerID}) MERGE (customer)-[:PURCHASED]->(order); USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "https:// raw.githubusercontent.com/neo4j-contrib/developer-resources/ gh-pages/data/northwind/products.csv" AS row MATCH (product:Product {productID: row.ProductID}) MATCH (supplier:Supplier {supplierID: row.SupplierID}) MERGE (supplier)-[:SUPPLIES]->(product);
  109. 109. Creating Relationships USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j- contrib/developer-resources/gh-pages/data/northwind/orders.csv" AS row MATCH (order:Order {orderID: row.OrderID}) MATCH (product:Product {productID: row.ProductID}) MERGE (order)-[pu:INCLUDES]->(product) ON CREATE SET pu.unitPrice = toFloat(row.UnitPrice), pu.quantity = toFloat(row.Quantity); USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j- contrib/developer-resources/gh-pages/data/northwind/orders.csv" AS row MATCH (order:Order {orderID: row.OrderID}) MATCH (employee:Employee {employeeID: row.EmployeeID}) MERGE (employee)-[:SOLD]->(order);
  110. 110. High Performance LOADing neo4j-import 4.58 million things and their relationships… Loads in 100 seconds!
  111. 111. JDBC apoc.load.jdbc
  112. 112. THERE’S A PROCEDURE FOR THAT https://github.com/neo4j-contrib/neo4j-apoc-procedures
  113. 113. WRAPPING UP
  114. 114. “We found Neo4j to be literally thousands of times faster than our prior MySQL solution, with queries that require 10 to 100 times less code. Today, Neo4j provides eBay with functionality that was previously impossible.” Volker Pacher
 Senior Developer
  115. 115. THANK YOU! Ryan Boyd @ryguyrg ryan@neo4j.com

×