Graphs & Neo4j
Past - Present - Future
Meetup Sept 27, Stockholm - NetEnt
Michael Hunger
Caretaker General Neo4j Community
(Michael)*[:WORKS_FOR]*>(Neo4j)
michael@neo4j.com |?@mesirii?|?github.com/jexp?|?jexp.de/blog
Michael?Hunger??* Caretaker?General?@Neo4j
KNOWS
KNOWS
NAME: ANN
AGE: 32
SINCE: 2012
KNOWS
NODE
PROPERTY
RELATIONSHIPS
KNOWS
KNOWS
KNOWS
NAME: EVE
AGE: 32
SINCE: 2012
KNOWS
SELL
VIEWS
SELL
PRICE:10$
PALO ALTO
PRICE:5$
OAKLAND
SELL
15 years later…
“Graph analysis is the true killer
app for Big Data.”
“Forrester estimates that over 25%
of enterprises will be using graph
databases by 2017.”
Today It Is An Industry
“Graph analysis is possibly the single most
effective competitive differentiator for
organizations pursuing data-driven operations
and decisions after the design of data capture.”
“By the end of 2018, 70% of leading organizations
will have one or more pilot or proof-of-concept
efforts underway utilizing graph databases.”
Today It Is An Industry
Neo4j Adoption by Selected Verticals
SOFTWARE
FINANCIAL
SERVICES
RETAIL MEDIA & OTHER
SOCIAL
NETWORKS
TELECOM HEALTHCARE
How did we get here?
Let‘s build a,
1. database
2. query language
3. billion $,company
how hard can it be?
Our Founders
Our Culture
Be Open Listen!
Foster
Community & Collaboration
Appreciate
Empower
Support
Make it easy
Graph&Query&Language:&Cypher
(jan:Person {,name:“Jan”},) 3[:LOVES]3>,(anne:Person {,name:“Anne”},)
LOVES
Jan Anne
NODE NODE
LABEL PROPERTYLABEL PROPERTY
MATCH
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
Find%all%reports%and%how%many%
people%they%manage,%
up%to%3%levels%down
Cypher'Query
SQL'Query
THE IMPACT OF GRAPHS
How Graphs Are Changing The World
#1
GRAPHS
FOR
GOOD
Biggest Leak in History
Panama Papers
Offshore Leaks Database
Snowden – NSA
WikiLeaks Cablegate
Pentagon Papers
0 5M 10M
Documents Leaked
Unraveling the Cancer Code with Graphs
#2
DISRUPTION
WITH
GRAPHS
Anybody with an idea
and a purpose,

can now use a
technology that is
powerful enough to
change an industry
273
#3
BETTER
BUSINESS
WITH GRAPHS
Real-Time
Recommendations
Fraud
Detection
Network &
IT Operations
Master Data
Management
Graph-Based
Search
Identity & Access
Management
Sustainable Competitive
Advantage With Graphs
WHAT’S NEXT?
Building The Graph Database For The Future
What Users Love about Neo4j
Design
Whiteboard
friendliness
Develop Deploy
Great query
language
Native graph
performance
What Users Want More Of
Design
Whiteboard
friendliness
Develop Deploy
Great query
language
Native graph
performance
Productivity
Developer graph
applications faster
Scale
Design bigger and
faster graph apps
Operations
Deploy graph
applications
anywhere easily
Productivity
2016 - : 3.x — Official Language Drivers
0.x — Embedded Java API2000 - 2010:
2.x — Cypher2014 - 2015:
2010 - 2014: 1.x — REST
Example - Java with Neo4j 2.x
Official Language Drivers
Official Language Drivers
Driver driver = GraphDatabase.driver( "bolt://localhost" );
try ( Session session = driver.session() ) {
StatementResult result = session.run("MATCH (u:User) RETURN u.name");
}
With	Java
With	JavaScript
var driver = Graph.Database.driver("bolt://localhost");
var session = driver.session();
var result = session.run("MATCH (u:User) RETURN u.name");
Official Language Drivers
With	Python
driver = Graph.Database.driver("bolt://localhost")
session = driver.session()
result = session.run("MATCH (u:User) RETURN u.name")
Official Language Drivers
Official Language Drivers
using (var driver = GraphDatabase.Driver("bolt://localhost"))
using (var session = driver.Session())
{
var result = session.Run("MATCH (u:User) RETURN u.name");
}
With	.NET
JavaScript Java .NET Python
Community	
Drivers
Drivers
Bolt	
PHP, Go, 

Elixir, Ruby
Neo4j OGM
Spring Data Neo4j 4
Browser.Next
Spark Driver
JDBC Driver
Enabling:
User Defined
Procedures
Neo4j	Execu+on	Engine	
Java	Stored	
Procedure	
Applica+ons	
Bolt
Java Stored Procedure
@Procedure
public Stream<StringResult> uuid() {
return Stream.of(new StringResult(UUID.randomUUID().toString()));
}
@Procedure
public Stream<StringResult> uuid() {
return Stream.of(new StringResult(UUID.randomUUID().toString()));
}
Cypher
Java Stored Procedure
RDF / Linked Data
Parallelization
Meta Data
Utilities
Data Integration
Date & Time
Graph Algorithms
Enabling:
Spatial
Operations
Official Docker Image
Ease of:
Testing
Provisioning
Scaling
Extending
Using
Enabling:
Configuration
Log Files
Startup Behavior
Directory Structure
Consistency
Scale
Scalability Performance
The Inherent Tension Between
Scalability And Performance
Unlimited Size Graphs
Huge Networks of:
People
Devices
Software
Genes & Proteins
Behaviors
Documents
Enabling:
Drivers
User Defined Procedures
Unlimited Size Graphs
Future
These are my personal predictions
- Stay Tuned -
Core-Edge Clustering
Enterprise Grade Security
User Defined Functions
3.1
beta
Large Scale Clusters
Basis for Sharding
Spark Co-Location
Compute Instances
Auto-Scaling
Core Edge
LDAP
Active Directory
default roles
fine grained roles
procedure security
later:
Kerberos
data level security
Security
data conversion
date & time
json
data structures
business rules
decomposition
User Defined Functions
Graph Compute, Cypher on X
Sharding
Compiled Runtime
3.2
4.0
Connected Age
Age of Graphs
and Graph
Databases
Thank You
Questions? ;-)
Ask Me Anything
Graphs & Neo4j - Past Present Future
Graphs & Neo4j - Past Present Future

Graphs & Neo4j - Past Present Future