5. Use of Relationship Information in
The Consumer Web
INDUSTRY TRENDS:
GRAPHS TRANSFORMED CONSUMER WEB
6. Use of Relationship Information in
The Consumer Web
INDUSTRY TRENDS:
GRAPHS TRANSFORMED CONSUMER WEB
7. Ref: http://www.gartner.com/id=2081316
Interest Graph
Payment Graph
Intent Graph
Mobile Graph
Consumer Web Giants Depends on Five Graphs
Gartner’s “5 Graphs”
Social Graph
GARTNER’S 5 GRAPHS OF CONSUMER WEB:
SUSTAINABLE COMPETITIVE DIFFERENTIATION
COMES FROM MASTERING 5 GRAPHS
8. Key-Value
Graph DB
Riak
Redis
Neo4j
membase
0x235C Philip
0xCD21 Neo4j Chicago
0x2014 [PPR,RB,NL]
0x3821 [CHI, SFO, BOS]
0x3890 B75DD108A
Column FamilyName UID Members Groups Photo
0x235C Philip PPR CHI, SFO,
BOS B75DD108A893A
0xCD21 Neo4j
Chicago
CHI PPR,RB,
NL
218758D88E901
Cassandra
HBase
Document DB0x235C {name:Philip, UID: PPR, Groups: [CHI,SFO,BOS]}
0xCD21
{name:Neo4j Chicago, UID: PPR, Members:[PPR,RB,NL],
where:{city:Chicago, State: IL}}
MongoDB
CouchDB
NI
name:Neo4j Chicago, UID: CHI,
Photo: 218758D88E901
ABK
name:Philip, UID: PPR,
Photo: B75DD108A893A
MEMBERsince: 2011
UNLOCKING THE POTENTIAL
OF RELATIONSHIPS IN DATA
9. A GRAPH DATABASE IS
PURPOSE-BUILT FOR:
When your business depends on Relationships in Data
13. The Property Graph Model
(Ann) –[:LOVES]-> (Dan)
THE PROPERTY GRAPH
MODEL
Ann DanLoves
14. The Property Graph Model
(:Person {name:"Ann"}) –[:LOVES]-> (:Person {name:"Dan"})
THE PROPERTY GRAPH
MODEL
Ann DanLoves
15. The Property Graph Model
(:Person {name:"Ann"}) –[:LOVES]-> (:Person {name:"Dan"})
THE PROPERTY GRAPH
MODEL
Ann DanLoves
Node Relationship Node
16. The Property Graph Model
(:Person {name:"Ann"}) –[:LOVES]-> (:Person {name:"Dan"})
THE PROPERTY GRAPH
MODEL
Ann DanLoves
Node Relationship Node
property propertylabel labeltype
23. #1: EASIER TO UNDERSTAND
COMPLEX MODELS
“Find all sushi restaurants in NYC that
my friends like”
24. “Find all direct reports and how many they
manage, up to 3 levels down”
#2: EASIER TO EXPRESS
COMPLEX QUERIES
Example HR Query:
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
25. (SELECT T.directReportees AS directReportees, sum(T.count) AS count
FROM (
SELECT manager.pid AS directReportees, 0 AS count
FROM person_reportee manager
WHERE manager.pid = (SELECT id FROM person WHERE name = "fName lName")
UNION
SELECT manager.pid AS directReportees, count(manager.directly_manages) AS count
FROM person_reportee manager
WHERE manager.pid = (SELECT id FROM person WHERE name = "fName lName")
GROUP BY directReportees
UNION
SELECT manager.pid AS directReportees, count(reportee.directly_manages) AS count
FROM person_reportee manager
JOIN person_reportee reportee
ON manager.directly_manages = reportee.pid
WHERE manager.pid = (SELECT id FROM person WHERE name = "fName lName")
GROUP BY directReportees
UNION
SELECT manager.pid AS directReportees, count(L2Reportees.directly_manages) AS count
FROM person_reportee manager
JOIN person_reportee L1Reportees
ON manager.directly_manages = L1Reportees.pid
JOIN person_reportee L2Reportees
ON L1Reportees.directly_manages = L2Reportees.pid
WHERE manager.pid = (SELECT id FROM person WHERE name = "fName lName")
GROUP BY directReportees
) AS T
GROUP BY directReportees)
UNION
(SELECT T.directReportees AS directReportees, sum(T.count) AS count
FROM (
SELECT manager.directly_manages AS directReportees, 0 AS count
FROM person_reportee manager
WHERE manager.pid = (SELECT id FROM person WHERE name = "fName lName")
UNION
SELECT reportee.pid AS directReportees, count(reportee.directly_manages) AS count
FROM person_reportee manager
JOIN person_reportee reportee
ON manager.directly_manages = reportee.pid
WHERE manager.pid = (SELECT id FROM person WHERE name = "fName lName")
GROUP BY directReportees
UNION
(continued from previous page...)
SELECT depth1Reportees.pid AS directReportees,
count(depth2Reportees.directly_manages) AS count
FROM person_reportee manager
JOIN person_reportee L1Reportees
ON manager.directly_manages = L1Reportees.pid
JOIN person_reportee L2Reportees
ON L1Reportees.directly_manages = L2Reportees.pid
WHERE manager.pid = (SELECT id FROM person WHERE name = "fName lName")
GROUP BY directReportees
) AS T
GROUP BY directReportees)
UNION
(SELECT T.directReportees AS directReportees, sum(T.count) AS count
FROM(
SELECT reportee.directly_manages AS directReportees, 0 AS count
FROM person_reportee manager
JOIN person_reportee reportee
ON manager.directly_manages = reportee.pid
WHERE manager.pid = (SELECT id FROM person WHERE name = "fName lName")
GROUP BY directReportees
UNION
SELECT L2Reportees.pid AS directReportees, count(L2Reportees.directly_manages) AS
count
FROM person_reportee manager
JOIN person_reportee L1Reportees
ON manager.directly_manages = L1Reportees.pid
JOIN person_reportee L2Reportees
ON L1Reportees.directly_manages = L2Reportees.pid
WHERE manager.pid = (SELECT id FROM person WHERE name = "fName lName")
GROUP BY directReportees
) AS T
GROUP BY directReportees)
UNION
(SELECT L2Reportees.directly_manages AS directReportees, 0 AS count
FROM person_reportee manager
JOIN person_reportee L1Reportees
ON manager.directly_manages = L1Reportees.pid
JOIN person_reportee L2Reportees
ON L1Reportees.directly_manages = L2Reportees.pid
WHERE manager.pid = (SELECT id FROM person WHERE name = "fName lName")
)
SAME QUERY IN SQL (!!)
29. Business Impact: Move Faster
The
whole
design,
development,
QA,
and
release
process
for
CruchBase
Events
was
a
total
of
2
weeks.”
“The
ability
to
iterate
that
quickly
is
a
mammoth
step
up
for
us.
In
CrunchBase
1.0
(MySQL),
it
probably
would
have
taken
2
months.”
-‐
Kurt
Freytag,
CTO
CrunchBase
31. “Our
Neo4j
solution
is
literally
thousands
of
times
faster
than
the
prior
MySQL
solution,
with
queries
that
require
10-‐100
times
less
code.”
-‐
Volker
Pacher,
Senior
Developer
eBay
Business Impact: Run Faster
33. GRAPHS ARE TRANSFORMING
THE WORLD
Core industries
& Use Cases
WEB / ISV Financial Services Tele-communications
Network &
Data Center
Management
Master Data
Management
Social
Geo
?
34. Core industries
& Use Cases
WEB / ISV Financial Services Telecommunications
Health Care
& Life Sciences
Network &
Data Center
Management
Master Data
Management
Social
GEO
Finance
GRAPHS ARE TRANSFORMING
THE WORLD
35. Neo Technology, Inc Confidential
Core
industries
& Use Cases
WEB / ISV
Financial
Services
Telecom-
munications
Health Care
& Life
Sciences
Web Social,
HR &
Recruiting
Media &
Publishing
Energy, Services,
Automotive, Gov’t,
Logistics, Education,
Gaming, Other
Network &
Data Center
Management
Master Data
Management
Social
GEO
Recomm-
endations
Identity &
Access
Mgmt
Search &
Discovery
BI, CRM, Impact
Analysis, Fraud
Detection,
Resource
Optimization, etc.
Finance
Neo4j Adoption Snapshot
37. 0%
10%
20%
30%
2011 2014 2017
25%
2.5%
0%
%ofEnterprisesusingGraphDatabases
“Forrester estimates that over 25% of
enterprises will be using graph
databases by 2017”
Sources
• Forrester TechRadar™: Enterprise DBMS, Feb 13 2014 (http://www.forrester.com/TechRadar+Enterprise
+DBMS+Q1+2014/fulltext/-/E-RES106801)
• Dataversity Mar 31 2014: “Deconstructing NoSQL:Analysis of a 2013 Survey on the Use, Production and Assessment
of NoSQLTechnologies in the Enterprise” (http://www.dataversity.net)
• Neo Technology customer base in 2011 and 2014
• Estimation of other graph vendors’ customer base in 2011 and 2014 based on best available intelligence
“25% of survey respondents said
they plan to use Graph databases in
the future.”
Graph Databases:
Powering The Enterprise
GRAPH DATABASES - POWERING
THE ENTERPRISE
38. Ref: Gartner, ‘IT Market Clock for Database Management Systems, 2014,’ September 22, 2014
https://www.gartner.com/doc/2852717/it-market-clock-database-management
“Graph analysis is possibly the
single most effective
competitive differentiator for
organizations pursuing data-
driven operations and
decisions after the design of
data capture.”
Graph Databases:
Can Transform Your Business
GRAPH DATABASES - CAN
TRANSFORM YOUR BUSINESS