rdbms to graphs

161
(RDBMS) -[:TO]->(Graph) An Introduction To Graphs and Neo4j William Lyon @lyonwj

Upload: neo4j-the-fastest-and-most-scalable-native-graph-database

Post on 16-Apr-2017

462 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: RDBMS to Graphs

(RDBMS) -[:TO]->(Graph)An Introduction To Graphs and Neo4j

William Lyon @lyonwj

Page 2: RDBMS to Graphs

William LyonDeveloper Relations Engineer @neo4j

[email protected] @lyonwj lyonwj.com

Page 3: RDBMS to Graphs

AGENDA• Use Cases • SQL Pains • Building a Neo4j Application • Moving from RDBMS -> Graph Models

• Walk through an Example • Creating Data in Graphs • Querying Data

Page 4: RDBMS to Graphs
Page 5: RDBMS to Graphs

The Traditional Approach Towards Data

Page 6: RDBMS to Graphs

SYSTEMS OF RECORD

Page 7: RDBMS to Graphs

RDBMS

SYSTEMS OF RECORD

Page 8: RDBMS to Graphs

HR-tools Supply Payments Logistics CRM Support

TRADITIONAL DATA STRUCTURE

RDBMS RDBMS RDBMSRDBMS RDBMS RDBMS

Page 9: RDBMS to Graphs

SHIFT TOWARDS SYSTEMS OF ENGAGEMENT

Page 10: RDBMS to Graphs

Users Engaging With DevicesUsers Engaging With Users Devices Engaging With Devices

SYSTEMS OF ENGAGEMENT

Page 11: RDBMS to Graphs

SHIFT TOWARDS SYSTEMS OF ENGAGEMENT

You are here!

Data volume

Page 12: RDBMS to Graphs

SYSTEMS OF RECORDRelational Database Model

StructuredPre-computed

Based on rigid rules

SYSTEMS OF ENGAGEMENTNoSQL Database Model

Highly FlexibleReal-Time QueriesHighly Contextual

Page 13: RDBMS to Graphs

SYSTEMS OF RECORD

Page 14: RDBMS to Graphs

SYSTEMS OF ENGAGEMENT

This is data modeled as a graph!

Page 15: RDBMS to Graphs

WHAT IS A GRAPH?

Page 16: RDBMS to Graphs

A Graph Is

NODE

NODE

NODE

RELATIONSHIP

RELATIONSHIP

RELATIONSHIP

Page 17: RDBMS to Graphs

A Graph Is Connected Data

Page 18: RDBMS to Graphs

ROAD

TRAFFIC

LIGHTS

Page 19: RDBMS to Graphs

HA

S

AVAILABLE

HOTEL

ROOMS

AVAILABLE

Page 20: RDBMS to Graphs

CREATING COMPETITIVE ADVANTAGE FROM THE USE OF DATA

Page 21: RDBMS to Graphs

ACCOUNT HOLDER 2

ACCOUNT HOLDER 1

ACCOUNT HOLDER 3

CREDIT CARD

BANKACCOUNT

BANKACCOUNT

BANKACCOUNT

ADDRESS

PHONE NUMBER

PHONE NUMBER

SSN 2

UNSECURE LOAN

SSN 2

UNSECURE LOAN

CREDIT CARD

Page 22: RDBMS to Graphs

IntuitivnessSpeedAgility

Page 23: RDBMS to Graphs

IntuitivenessSpeedAgility

Page 24: RDBMS to Graphs

Intuitiveness

Page 25: RDBMS to Graphs

IntuitivnessSpeedAgility

Page 26: RDBMS to Graphs

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

Page 27: RDBMS to Graphs

IntuitivnessSpeedAgility

Page 28: RDBMS to Graphs

A Naturally Adaptive Model

A Query Language Designed for Connectedness

+

=Agility

Page 29: RDBMS to Graphs

CypherTypical 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 ImpactLess time writing queries

Less time debugging queries

Code that’s easier to read

Page 30: RDBMS to Graphs

NEO4j USE CASESReal Time Recommendations

Master Data Management

Fraud Detection

Identity & Access Management

Graph Based Search

Network & IT-Operations

Page 31: RDBMS to Graphs

NEO4j USE CASESReal Time Recommendations

Master Data Management

Fraud Detection

Identity & Access Management

Graph Based Search

Network & IT-Operations

GRAPH THINKING: Real Time Recommendations

VIEW

ED

VIEWED

BOUG

HT

VIEWED BOUGHT

BOUGHT

BO

UG

HT

BOUG

HT

Page 32: RDBMS to Graphs

“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 CASESReal Time Recommendations

Master Data Management

Fraud Detection

Identity & Access Management

Graph Based Search

Network & IT-Operations

Page 33: RDBMS to Graphs

NEO4j USE CASESReal 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

MANAGES

MANAGES

REGION

LEADS

LEADS

COLL

ABO

RATE

S

Page 34: RDBMS to Graphs

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 CASESReal Time Recommendations

Master Data Management

Fraud Detection

Identity & Access Management

Graph Based Search

Network & IT-Operations

Page 35: RDBMS to Graphs

NEO4j USE CASESReal Time Recommendations

Master Data Management

Fraud Detection

Identity & Access Management

Graph Based Search

Network & IT-Operations

GRAPH THINKING: Master Data Management

Solu%onSupportCase

SupportCase

KnowledgeBaseAr%cle

Message

KnowledgeBaseAr%cle

KnowledgeBaseAr%cle

Neo4j is the heart of Cisco’s Helpdesk Solution too.

Page 36: RDBMS to Graphs

NEO4j USE CASESReal Time Recommendations

Master Data Management

Fraud Detection

Identity & Access Management

Graph Based Search

Network & IT-Operations

GRAPH THINKING: Fraud Detection

OPENED_ACCOUNT

HAS IS_ISSUED

HAS

LIVES LIVES

IS_ISSUED

OPE

NED_

ACCO

UNT

Page 37: RDBMS to Graphs

“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 SadowskiCyber Security Expert

NEO4j USE CASESReal Time Recommendations

Master Data Management

Fraud Detection

Identity & Access Management

Graph Based Search

Network & IT-Operations

Page 38: RDBMS to Graphs

GRAPH THINKING: Graph Based Search

NEO4j USE CASESReal Time Recommendations

Master Data Management

Fraud Detection

Identity & Access Management

Graph Based Search

Network & IT-Operations

PUBLISH

INCLUDE

INCLUDE

CREATE

CAPT

URE

IN

INSO

URCE

USES

USES

IN

IN

USES

SOURCE SOURCE

Page 39: RDBMS to Graphs

Uses Neo4j to manage the digital assets inside of its next generation in-flight entertainment system.

NEO4j USE CASESReal Time Recommendations

Master Data Management

Fraud Detection

Identity & Access Management

Graph Based Search

Network & IT-Operations

Page 40: RDBMS to Graphs

NEO4j USE CASESReal Time Recommendations

Master Data Management

Fraud Detection

Identity & Access Management

Graph Based Search

Network & IT-Operations

BROWSESCO

NNEC

TS

BRIDGES

ROUTES

POW

ERSROUTES

POWERSPOWERS

HOSTS

QUERIES

GRAPH THINKING: Network & IT-Operations

Page 41: RDBMS to Graphs

Uses Neo4j for network topology analysis for big telco service providers

NEO4j USE CASESReal Time Recommendations

Master Data Management

Fraud Detection

Identity & Access Management

Graph Based Search

Network & IT-Operations

Page 42: RDBMS to Graphs

GRAPH THINKING: Identity And Access Management

NEO4j USE CASESReal Time Recommendations

Master Data Management

Fraud Detection

Identity & Access Management

Graph Based Search

Network & IT-Operations

TRUSTS

TRUSTS

ID

ID

AUTHENTICATES

AUTH

ENTI

CATE

S

OWNS

OWNSC

AN

_REA

D

Page 43: RDBMS to Graphs

UBS was the recipient of the 2014 Graphie Award for “Best Identify And Access Management App”

NEO4j USE CASESReal Time Recommendations

Master Data Management

Fraud Detection

Identity & Access Management

Graph Based Search

Network & IT-Operations

Page 44: RDBMS to Graphs
Page 45: RDBMS to Graphs

Neo4j Adoption by Selected VerticalsSOFTWARE FINANCIAL

SERVICES RETAIL MEDIA & BROADCASTING

SOCIAL NETWORKS TELECOM HEALTHCARE

Page 46: RDBMS to Graphs

SQL

Day in the Life of a RDBMS Developer

Page 47: RDBMS to Graphs
Page 48: RDBMS to Graphs
Page 49: RDBMS to Graphs
Page 50: RDBMS to Graphs
Page 51: RDBMS to Graphs
Page 52: RDBMS to Graphs
Page 53: RDBMS to Graphs
Page 54: RDBMS to Graphs

SELECT p.name, c.country, c.leader, p.hair, u.name, u.pres, u.stateFROM people p LEFT JOIN country c ON c.ID=p.country LEFT JOIN uni u ON p.uni=u.idWHERE u.state=‘CT’

Page 55: RDBMS to Graphs

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

Page 56: RDBMS to Graphs

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

Page 57: RDBMS to Graphs

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

JOIN

Page 58: RDBMS to Graphs
Page 59: RDBMS to Graphs
Page 60: RDBMS to Graphs

• Complex to model and store relationships • Performance degrades with increases in data • Queries get long and complex • Maintenance is painful

SQL Pains

Page 61: RDBMS to Graphs

• 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

Page 62: RDBMS to Graphs

Relational Versus Graph Models

Relational Model Graph Model

KNOWS

KNOWS

KNOWS

ANDREAS

TOBIAS

MICA

DELIA

Person FriendPerson-Friend

ANDREASDELIA

TOBIAS

MICA

Page 63: RDBMS to Graphs

What does this Graph look like?

Page 64: RDBMS to Graphs

CYPHER

Ann DanLoves

Page 65: RDBMS to Graphs

Property Graph Model

CREATE (:Person { name:“Dan”} ) - [:LOVES]-> (:Person { name:“Ann”} )

LOVES

LABEL PROPERTY

NODE NODE

LABEL PROPERTY

Page 66: RDBMS to Graphs
Page 67: RDBMS to Graphs

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

Page 68: RDBMS to Graphs

How do you use Neo4j?

CREATE MODEL

+

LOAD DATA QUERY DATA

Page 69: RDBMS to Graphs

How do you use Neo4j?

Page 70: RDBMS to Graphs
Page 71: RDBMS to Graphs

How do you use Neo4j?

Page 72: RDBMS to Graphs

Language Drivers

Page 73: RDBMS to Graphs

Language Drivers

Page 74: RDBMS to Graphs

User Defined Procedures

Page 75: RDBMS to Graphs

Architectural Options

DataStorageandBusinessRulesExecu5on

DataMiningandAggrega5on

Applica'on

GraphDatabaseCluster

Neo4j Neo4j Neo4j

AdHocAnalysis

BulkAnaly'cInfrastructureHadoop,EDW…

DataScien'st

EndUser

DatabasesRela5onalNoSQLHadoop

Page 76: RDBMS to Graphs

RDBMS to Graph Options

MIGRATEALLDATA

MIGRATESUBSET

DUPLICATESUBSET

Non-GraphQueries GraphQueries

GraphQueriesNon-GraphQueries

AllQueries

Rela3onalDatabase

GraphDatabase

Application

Application

Application

NonGraphData

AllData

Page 77: RDBMS to Graphs

FROM RDBMS TO GRAPHS

Page 78: RDBMS to Graphs
Page 79: RDBMS to Graphs
Page 80: RDBMS to Graphs

Northwind

Page 81: RDBMS to Graphs

Northwind - the canonical RDBMS Example

Page 82: RDBMS to Graphs

( )-[:TO]->(Graph)

Page 83: RDBMS to Graphs
Page 84: RDBMS to Graphs

( )-[:IS_BETTER_AS]->(Graph)

Page 85: RDBMS to Graphs

Starting with the ER Diagram

Page 86: RDBMS to Graphs

Locate the Foreign Keys

Page 87: RDBMS to Graphs

Drop the Foreign Keys

Page 88: RDBMS to Graphs

Find the JOIN Tables

Page 89: RDBMS to Graphs

(Simple) JOIN Tables Become Relationships

Page 90: RDBMS to Graphs

Attributed JOIN Tables -> Relationships with Properties

Page 91: RDBMS to Graphs

Querying a Subset Today

Page 92: RDBMS to Graphs

As a Graph

Page 93: RDBMS to Graphs

QUERYING THE GRAPH

Page 94: RDBMS to Graphs

using openCypher

Page 95: RDBMS to Graphs

Property Graph Model

CREATE(:Employee{firstName:“Steven”})-[:REPORTS_TO]->(:Employee{firstName:“Andrew”})

REPORTS_TO Steven Andrew

LABEL PROPERTY

NODE NODE

LABEL PROPERTY

Page 96: RDBMS to Graphs

Who do people report to?MATCH (e:Employee)<-[:REPORTS_TO]-(sub:Employee)RETURN *

Page 97: RDBMS to Graphs

Who do people report to?

Page 98: RDBMS to Graphs

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;

Page 99: RDBMS to Graphs

Who do people report to?

Page 100: RDBMS to Graphs

Who does Robert report to?

MATCH p=(e:Employee)<-[:REPORTS_TO]-(sub:Employee)WHERE sub.firstName = ‘Robert’RETURN p

Page 101: RDBMS to Graphs

Who does Robert report to?

Page 102: RDBMS to Graphs

What is Robert’s reporting chain?

MATCH p=(e:Employee)<-[:REPORTS_TO*]-(sub:Employee)WHERE sub.firstName = ‘Robert’RETURN p

Page 103: RDBMS to Graphs

What is Robert’s reporting chain?

Page 104: RDBMS to Graphs

Who’s the Big Boss?MATCH (e:Employee)WHERE NOT (e)-[:REPORTS_TO]->()RETURN e.firstName as bigBoss

Page 105: RDBMS to Graphs

Who’s the Big Boss?

Page 106: RDBMS to Graphs

Product Cross-SellingMATCH (choc:Product {productName: 'Chocolade'}) <-[:INCLUDES]-(:Order)<-[:SOLD]-(employee), (employee)-[:SOLD]->(o2)-[:INCLUDES]->(other:Product)RETURN employee.firstName, other.productName, COUNT(DISTINCT o2) as countORDER BY count DESCLIMIT 5;

Page 107: RDBMS to Graphs

Product Cross-Selling

Page 108: RDBMS to Graphs

https://neo4j.com/graphacademy/online-training/

Page 109: RDBMS to Graphs

POWERING AN APP

Page 110: RDBMS to Graphs

http://network.graphdemos.com/

Page 111: RDBMS to Graphs

Simple App

Page 112: RDBMS to Graphs

Simple Python Code

Page 113: RDBMS to Graphs

Simple Python Code

Page 114: RDBMS to Graphs

Simple Python Code

Page 115: RDBMS to Graphs

Simple Python Code

Page 116: RDBMS to Graphs

LOADING OUR DATA

Page 117: RDBMS to Graphs

CSV

Page 118: RDBMS to Graphs

CSV files for Northwind

Page 119: RDBMS to Graphs

CSV files for Northwind

Page 120: RDBMS to Graphs

3 Steps to Creating the Graph

IMPORT NODES CREATE INDEXES IMPORT RELATIONSHIPS

Page 121: RDBMS to Graphs

Importing Nodes// Create customersUSING PERIODIC COMMITLOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-contrib/developer-resources/gh-pages/data/northwind/customers.csv" AS rowCREATE (:Customer {companyName: row.CompanyName, customerID: row.CustomerID, fax: row.Fax, phone: row.Phone});

// Create productsUSING PERIODIC COMMITLOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-contrib/developer-resources/gh-pages/data/northwind/products.csv" AS rowCREATE (:Product {productName: row.ProductName, productID: row.ProductID, unitPrice: toFloat(row.UnitPrice)});

Page 122: RDBMS to Graphs

Importing Nodes// Create suppliersUSING PERIODIC COMMITLOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-contrib/developer-resources/gh-pages/data/northwind/suppliers.csv" AS rowCREATE (:Supplier {companyName: row.CompanyName, supplierID: row.SupplierID});

// Create employeesUSING PERIODIC COMMITLOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-contrib/developer-resources/gh-pages/data/northwind/employees.csv" AS rowCREATE (:Employee {employeeID:row.EmployeeID, firstName: row.FirstName, lastName: row.LastName, title: row.Title});

Page 123: RDBMS to Graphs

Importing Nodes// Create categoriesUSING PERIODIC COMMITLOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-contrib/developer-resources/gh-pages/data/northwind/categories.csv" AS rowCREATE (:Category {categoryID: row.CategoryID, categoryName: row.CategoryName, description: row.Description});

// Create ordersUSING PERIODIC COMMITLOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-contrib/developer-resources/gh-pages/data/northwind/orders.csv" AS rowMERGE (order:Order {orderID: row.OrderID}) ON CREATE SET order.shipName = row.ShipName;

Page 124: RDBMS to Graphs

Creating IndexesCREATE INDEX ON :Product(productID);CREATE INDEX ON :Product(productName);CREATE INDEX ON :Category(categoryID);CREATE INDEX ON :Employee(employeeID);CREATE INDEX ON :Supplier(supplierID);CREATE INDEX ON :Customer(customerID);CREATE INDEX ON :Customer(customerName);

Page 125: RDBMS to Graphs

Creating RelationshipsUSING PERIODIC COMMITLOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-contrib/developer-resources/gh-pages/data/northwind/orders.csv" AS rowMATCH (order:Order {orderID: row.OrderID})MATCH (customer:Customer {customerID: row.CustomerID})MERGE (customer)-[:PURCHASED]->(order);

USING PERIODIC COMMITLOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-contrib/developer-resources/gh-pages/data/northwind/products.csv" AS rowMATCH (product:Product {productID: row.ProductID})MATCH (supplier:Supplier {supplierID: row.SupplierID})MERGE (supplier)-[:SUPPLIES]->(product);

Page 126: RDBMS to Graphs

Creating RelationshipsUSING PERIODIC COMMITLOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-contrib/developer-resources/gh-pages/data/northwind/orders.csv" AS rowMATCH (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 COMMITLOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-contrib/developer-resources/gh-pages/data/northwind/orders.csv" AS rowMATCH (order:Order {orderID: row.OrderID})MATCH (employee:Employee {employeeID: row.EmployeeID})MERGE (employee)-[:SOLD]->(order);

Page 127: RDBMS to Graphs

Creating RelationshipsUSING PERIODIC COMMITLOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-contrib/developer-resources/gh-pages/data/northwind/products.csv" AS rowMATCH (product:Product {productID: row.ProductID})MATCH (category:Category {categoryID: row.CategoryID})MERGE (product)-[:PART_OF]->(category);

USING PERIODIC COMMITLOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-contrib/developer-resources/gh-pages/data/northwind/employees.csv" AS rowMATCH (employee:Employee {employeeID: row.EmployeeID})MATCH (manager:Employee {employeeID: row.ReportsTo})MERGE (employee)-[:REPORTS_TO]->(manager);

Page 128: RDBMS to Graphs

High Performance LOADingneo4j-import

4.58 million thingsand their relationships…

Loads in 100 seconds!

Page 129: RDBMS to Graphs

JDBC

Page 130: RDBMS to Graphs

JDBCapoc.load.jdbc

Page 131: RDBMS to Graphs

https://github.com/neo4j-contrib/neo4j-apoc-procedures

Page 132: RDBMS to Graphs

User Defined Procedures

User-defined procedures are written in Java, deployed into the database, and called from Cypher.

http://neo4j.com/docs/developer-manual/current/#procedures

Page 133: RDBMS to Graphs

Built-in Procedures

Page 134: RDBMS to Graphs

Built-in Procedures

Page 135: RDBMS to Graphs

User-defined Procedures

https://github.com/neo4j-examples/neo4j-procedure-template

Page 136: RDBMS to Graphs

Apoc Procedures

https://github.com/neo4j-contrib/neo4j-apoc-procedures

Page 137: RDBMS to Graphs

THERE’S A PROCEDURE FOR THAT

https://github.com/neo4j-contrib/neo4j-apoc-procedures

Page 138: RDBMS to Graphs

https://neo4j-contrib.github.io/neo4j-apoc-procedures/#_loading_data_from_web_apis_json_xml_csv

Page 139: RDBMS to Graphs

https://github.com/neo4j-contrib/neo4j-apoc-procedures/blob/master/readme.adoc

Page 140: RDBMS to Graphs

Northwind

Page 141: RDBMS to Graphs

Northwind

Page 142: RDBMS to Graphs
Page 143: RDBMS to Graphs
Page 144: RDBMS to Graphs
Page 145: RDBMS to Graphs
Page 146: RDBMS to Graphs
Page 147: RDBMS to Graphs
Page 148: RDBMS to Graphs
Page 149: RDBMS to Graphs

Graph Based Recommendations

Page 150: RDBMS to Graphs

Graph Based Recommendations

Page 151: RDBMS to Graphs
Page 152: RDBMS to Graphs

JDBCNeo4j-JDBC driver

Page 153: RDBMS to Graphs

ETL

Page 154: RDBMS to Graphs

https://neo4j.com/blog/icij-neo4j-unravel-panama-papers/

Page 155: RDBMS to Graphs

https://neo4j.com/blog/official-neo4j-jdbc-driver-3-0/

Page 156: RDBMS to Graphs

WRAPPING UP

Page 157: RDBMS to Graphs

Resources

http://neo4j.com/developer/

Neo4j Developer Resources

Page 158: RDBMS to Graphs

http://graphdatabases.com/

Page 159: RDBMS to Graphs

http://neo4j.com/download

Page 160: RDBMS to Graphs

:play northwind graph

Page 161: RDBMS to Graphs

THANK YOU!