8. Joins are executed every time
you query the relationship
Executing a Join means to
search for a key
B-Tree Index: O(log(n))
Your data grows by 10x, your speed
slows down by half
More Data = More Searches
Slower Performance
The Problem
1
2
3
4
10. Relational Databases can’t handle Relationships
Degraded Performance
Speed plummets as data grows
and as the number of joins grows
Wrong Language
SQL was built with Set Theory in
mind, not Graph Theory
Not Flexible
New types of data and relationships
require schema redesign
Wrong Model
They cannot model or store
relationships without complexity1
2
3
4
11. NoSQL Databases can’t handle Relationships
Degraded Performance
Speed plummets as you try to join
data together in the application
Wrong Languages
Lots of wacky “almost sql”
languages terrible at “joins”
Not ACID
Eventually Consistent means
Eventually Corrupt
Wrong Model
They cannot model or store
relationships without complexity1
2
3
4
15. Fixed Sized Records
“Joins” on Creation
Spin Spin Spin through
this data structure
Pointers instead of
Lookups
1
2
3
4
Neo4j Secret Sauce
16. Remains steady as database grows
Real Time Query Performance
Connectedness and Size of Data Set
Response Time
0 to 2 hops
0 to 3 degrees
Thousands of connections
Tens to hundreds of hops
Thousands of degrees
Billions of connections
Relational and
Other NoSQL
Databases
Neo4j
Neo4j is
1000x faster
Reduces minutes
to milliseconds
17. I don’t know the average height of all hollywood actors, but I do know the Six Degrees of Kevin Bacon
But not for every query
18. Reimagine your Data as a Graph
Better Performance
Query relationships in real time
Right Language
Cypher was purpose built for
Graphs
Flexible and Consistent
Evolve your schema seamlessly
while keeping transactions
Right Model
Graphs simplify how you think
1
2
3
4
Agile, High Performance
and Scalable without Sacrifice
19. Just draw stuff and “walla” there is your data model
Graphs are Whiteboard Friendly
33. Do not try and bend the data. That’s im possible.
34. If they can do it, you can do it!
How do you model Comic Books?
35. Cloning Twitter
Building a News Feed
9:00 am
@hipster
This is what I had for breakfast! <Insert Image of squirrel food>
8:30 am
@neo4j
Automated tweet telling me about Graph Connect 2017 in NYC on Oct 23-24
8:12 am
@ex-coworker
Stuff I no longer care about.
8:03 am
@someguy
Inspirational Quote of the Day
48. Interesting to Learn
Traversal API
• Start with the Simple Defaults (order, relationships, depth,
uniqueness, etc)
• Custom Expanders
• Where should I go next
• Custom Evaluators
• I’ve gone there… should I accept this path?
84. Don’t use SOLR Facets for this!
Multiple Dimensions
AgeSize
FeaturesProperty
Cost
85. Multiple Dimensions
Java
Audio Book!
What about Publisher?
What about Author?
What about Publication Year?
What about Java Version?
What About….
Left parentheses, n, right
parentheses, semi-colon!
86. Bucket or Group Values if you have to
Discrete Values for Each Dimension
87. Nodes for Discrete Dimensional Values
Dimensional Model
*Use Named Relationship Types instead of HAS