Today’s complex data is big, variably-structured and densely connected. In this session we’ll look at how size, structure and connectedness have converged to change the way we work with data. We’ll then go on to look at some of the new opportunities for creating end-user value that have emerged in a world of connected data, illustrated with graph search examples implemented using the Neo4j graph database.
19. The
Power
of
Rela]onships
Connectedness
• Pre-‐computed
joins
• Several
million
joins
per
second
per
thread
per
core
Variable
Structure
• Defined
with
regard
to
node
instances,
not
classes
of
nodes
– Contrast
with
rela]onal
schemas,
where
foreign
key
rela]onships
apply
to
all
rows
in
a
table
20. Graph
Database
Benefits
“Minutes
to
milliseconds”
performance
• Millions
of
‘joins’
per
second
• Consistent
query
]mes
as
dataset
grows
Fit
for
the
domain
• Lots
of
join
tables?
Connectedness
• Lots
of
sparse
tables?
Semi-‐structure
Business
responsiveness
• Easy
to
evolve
21. Querying
Graph
Data
• Describing
graphs
• Crea]ng
nodes,
rela]onships
and
proper]es
• Querying
graphs
32. Cypher
Query
Which
people,
who
work
for
the
same
company
as
me,
have
similar
skills
to
me?
MATCH (company)<-[:WORKS_FOR]-(me:Person)-[:HAS_SKILL]->(skill),
(company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]->(skill)
WHERE me.name = 'ian'
RETURN colleague.name AS name,
count(skill) AS score,
collect(skill.name) AS skills
ORDER BY score DESC
33. Graph
Padern
Which
people,
who
work
for
the
same
company
as
me,
have
similar
skills
to
me?
MATCH (company)<-[:WORKS_FOR]-(me:Person)-[:HAS_SKILL]->(skill),
(company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]->(skill)
WHERE me.name = 'ian'
RETURN colleague.name AS name,
count(skill) AS score,
collect(skill.name) AS skills
ORDER BY score DESC
34. Anchor
Padern
in
Graph
Which
people,
who
work
for
the
same
company
as
me,
have
similar
skills
to
me?
MATCH (company)<-[:WORKS_FOR]-(me:Person)-[:HAS_SKILL]->(skill),
(company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]->(skill)
WHERE me.name = 'ian'
RETURN colleague.name AS name,
count(skill) AS score,
collect(skill.name) AS skills
ORDER BY score DESC
Search
nodes
labelled
‘Person’,
matching
on
‘name’
property
35. Create
Results
Which
people,
who
work
for
the
same
company
as
me,
have
similar
skills
to
me?
MATCH (company)<-[:WORKS_FOR]-(me:Person)-[:HAS_SKILL]->(skill),
(company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]->(skill)
WHERE me.name = 'ian'
RETURN colleague.name AS name,
count(skill) AS score,
collect(skill.name) AS skills
ORDER BY score DESC
42. Social
Network
&
Recommenda]ons
• Which
assets
can
I
access?
• Who
shares
my
interests?
43. graphdatabases.com
ts gy
en lo
i m no
pl h
m ec
Co eo T
N
of
Graph
h
Databases
Ian Robinson,
Jim Webber & Emil Eifrem
Thank
you
@ianSrobinson
ian@neotechnology.com