SlideShare a Scribd company logo
1 of 61
How Graphs make Databases Fun again
Value in Relationships
Michael Hunger (@mesirii)
vJUG July 2015
(Michael)-[:HELPS]->(People)-[:WORK_WITH]->(Neo4j)
• Coding
• Writing
• Speaking
• Helping
• Connecting
• Organizing
Topics
• Databases are No Fun
• Relational Pain -> Graph Fun
• The world is a Graph
• Neo4j
• Model, Query, Import
• Having Fun in the Developer Zone
• GitHub Events
• Software Analytics
• Neo4j from Java
Databases are No Fun
We have all been there
What pained me
• Object vs. Database Model = Pain
• Hard to Model
• Object relational impedance mismatch (and ORMs)
• Schema evolution = DBA Fights
• Slow queries = JOIN Pain
• Complex Queries = Pages of SQL
• Query Optimization = Denormalization
• Roundtrips (n+1 select, complex operations) = Cumbersome
What saved me? – Meeting Emil
Geek Cruise in 2008
Neo4j: A Story of Pain
With a Happy Ending
History of Neo4j - Problem
• Digital Asset Management System in 2000
• SaaS many users in many countries
• Two hard use-cases
• Multi language keyword search
• Including synonyms / word hierarchies
• Access Management to Assets for SaaS Scale
• Groups, Hierarchies, Permissions, Realtime
History of Neo4j – Relational Attempt
• Tried with many relational DBs
• JOIN Performance Problems
• Hierarchies, Networks, Graphs
• Modeling Problems
• Data Model evolution
• No Success, even …
• With expensive database consultants!
History of Neo4j – First working Implementation
• Graph Model & API sketched on a napkin
• Nodes connected by Relationships
• Just like your conceptual model
• Implemented network-database in memory
• Java API, fast Traversals
• Worked well, but …
• No persistence, No Transactions
• Long import / export time from relational storage
History of Neo4j - Solution
• Evolved to full fledged database in Java
• With persistence using files + memory mapping
• Transactions with Transaction Log (WAL)
• Lucene for fast entity lookup
• Founded Company in 2007
• Neo4j (REST)-Server
• Neo4j Clustering & HA
• Cypher Query Language
• Today …
Neo Technology Overview
Product
• Neo4j - World’s leading graph
database
• 1M+ downloads, adding 70k+
per month
• 150+ enterprise subscription
customers including over
50 of the Global 2000
Company
• Neo Technology, Creator of Neo4j
• 100+ employees with HQ in Silicon
Valley, London, Munich, Paris and
Malmö
• $45M in funding from Fidelity,
Sunstone, Conor, Creandum,
Dawn Capital
What, Who, Where, How?
Financial
Services
Communications
Health &
Life
Sciences
HR &
Recruiting
Media &
Publishing
Social
Web
Industry
& Logistics
Entertainment Consumer Retail Information ServicesBusiness Services
http://neo4j.com/use-cases http://neo4j.com/customers
Why should I care?
Because Relationships
Matter
What is it with Relationships?
• World is full of connected people, events, things
• There is “Value in Relationships” !
• What about Data Relationships?
• How do you store your object model?
• How do you explain
JOIN tables to your boss?
Neo4j – allows you to connect the dots
• Was built to efficiently
• store,
• query and
• manage highly connected data
• Transactional, ACID
• Real-time OLTP
• Open source
• Highly scalable already on few machines
Value from Data Relationships
Common Use Cases
Internal Applications
Master Data Management
Network and
IT Operations
Fraud Detection
Customer-Facing Applications
Real-Time Recommendations
Graph-Based Search
Identity and
Access Management
Neo4j Browser – Built-in Learning
RDBMS to Graph – Familiar Examples
Neo4j Browser – Visualization
Demo
Meetup Import
Teaser: Meetup.com Import
• For a Meetup Event
• Import Attendees
• For each Attendee
• Import Interests / Topics
• Import other Meetup Memberships
• Other groups our members are in
• Top 10 topics
• Topics & Groups of active Member
https://github.com/ikwattro/meetup2neo
http://markhneedham.com/blog?s=meetup
From RDBMS to Neo4j
Relational Pains =
Graph Pleasure
Relational DBs Can’t Handle Relationships Well
• Data Model built for tabular forms not JOINS
managing connections was bolted on both in
schema and query
• Strict schema not suitable for variable structured
data which is generated and used by todays
applications
• Data volume and JOIN number affect cost of query
operation exponentially
• Variable hierarchies and networks are hard to store
and query so many “patterns” were developed
… often only denormalization makes complex
relational queries fast but destroys the good
normalized data-model
Built for Forms
Joins are expensive
Denormalize #FTW
Unlocking Value from Your Data Relationships
• Model your data naturally as a graph
of data and relationships
• Drive graph model from domain and
use-cases
• Use relationship information in real-
time to transform your business
• Add new relationships on the fly to
adapt to your changing requirements
High Query Performance with a Native Graph DB
• Relationships are first class citizen
• No need for joins, just follow pre-
materialized relationships of nodes
• Query & Data-locality – navigate out
from your starting points
• Only load what’s needed
• Aggregate and project results as you
go
• Optimized disk and memory model
for graphs
Relational Versus Graph Models
Relational Model Graph Model
KNOWS
ANDREAS
TOBIAS
MICA
DELIA
Person FriendPerson-Friend
ANDREAS
DELIA
TOBIAS
MICA
For Instance …
… Is Actually
Order
Product
Customer Employee
SOLD
ORDERS
Category
Employee
REPORTS_TO
PART_OF
PURCHASED
Supplier
SUPPLIES
MATCH (boss)-[:MANAGES*0..3]->(mgr),
(mgr)-[:MANAGES*1..3]->(report)
WHERE boss.name = “John Doe”
RETURN mgr.name AS Subordinate,
count(report) AS Total
Express Complex Queries Easily with Cypher
Find all direct reports and how
many people they manage,
each up to 3 levels down
Cypher Query
SQL Query
High Query Performance: Some Numbers
• Traverse 2-4M+ relationships per
second and core
• Cost based query optimizer –
complex queries return in
milliseconds
• Import 100K-1M records per second
transactionally
• Bulk import tens of billions of records
in a few hours
Working with a Graph
Model, Import, Query
The Whiteboard Model Is the Physical Model
Eliminates Graph-to-
Relational Mapping
In your data model
Bridge the gap
between business
and IT models
In your application
Greatly reduce need
for application code
CAR
name: “Dan”
born: May 29, 1970
twitter: “@dan”
name: “Ann”
born: Dec 5, 1975
since:
Jan 10, 2011
brand: “Volvo”
model: “V70”
Property Graph Model Components
Nodes
• The objects in the graph
• Can have name-value properties
• Can be labeled
Relationships
• Relate nodes by type and direction
• Can have name-value properties
LOVES
LOVES
LIVES WITH
PERSON PERSON
Cypher: Powerful and Expressive Query Language
MATCH (:Person { name:“Dan”} ) -[:LOVES]-> (:Person { name:“Ann”} )
LOVES
Dan Ann
LABEL PROPERTY
NODE NODE
LABEL PROPERTY
Getting Data into Neo4j
Cypher-Based “LOAD CSV” Capability
• Transactional (ACID) writes
• Initial and incremental loads of up to
10 million nodes and relationships
Command-Line Bulk Loader neo4j-import
• For initial database population
• For loads up to 10B+ records
• Up to 1M records per second
4.58 million things
and their relationships…
Loads in 100 seconds!
CSV
Querying Your Data
Basic Pattern: Tom Hanks Movies?
MATCH (:Person {name:”Tom Hanks"} ) -[:ACTED_IN]-> (:Movie {title:”Forrest Gump"} )
ACTED_IN
Tom Hanks
Forrest
Gump
LABEL PROPERTY
NODE NODE
Forrest
Gump
LABEL PROPERTY
Basic Query: Tom Hanks‘ Movies?
MATCH
(actor:Person)-[:ACTED_IN]->(m:Movie)
WHERE actor.name = "Tom Hanks"
RETURN *
Basic Query: Tom Hanks‘ Movies?
Query Comparison: Colleagues of Tom Hanks?
SELECT *
FROM Person as actor
JOIN ActorMovie AS am1 ON (actor.id = am1.actor_id)
JOIN ActorMovie AS am2 ON (am1.movie_id = am2.movie_id)
JOIN Person AS coll ON (coll.id = am2.actor_id)
WHERE actor.name = "Tom Hanks“
MATCH
(actor:Person)-[:ACTED_IN]->()<-[:ACTED_IN]-(coll:Person)
WHERE actor.name = "Tom Hanks"
RETURN *
Basic Query Comparison: Colleagues of Tom Hanks?
Most prolific actors and their filmography?
MATCH (p:Person)-[:ACTED_IN]->(m:Movie)
RETURN p.name, count(*), collect(m.title) as movies
ORDER BY count(*) desc, p.name asc
LIMIT 10;
Most prolific actors and their filmography?
Neo4j Query Planner
Cost based Query Planner since Neo4j 2.2
• Uses database stats to select best plan
• Currently for Read Operations
• Query Plan Visualizer, finds
• Non optimal queries
• Cartesian Product
• Missing Indexes, Global Scans
• Typos
• Massive Fan-Out
Query Planner
Slight change, add an :Person label -> more stats
available -> new plan with fewer database-hits
Demo
Software Analytics
jqassistant.org
Software Analytics
Software is connected information, aka a graph
• Source -> AST
• Inheritance, Composition, Delegation
• Call Trees
• Runtime Memory
• Dependencies
• Modules, Libraries
• Tests
• ...
https://jqassistant.org
jQAssistant
• GeekCruise: My first Neo4j project
• Software deteriorates
• Develop rules and enforce them
• Commercial Tools too inflexible
• Open Source Software ...
• Scanner -> Enhancer -> Analyzer
• Enrichment, Concepts and Rulez in Cypher
• Scanner Plugins
• Integrate in Build Process
• Fail, Generate Reports, ... https://jqassistant.org
Let‘s explore ...
https://jqassistant.org
... The JDK
Demo
GitHub Events
github.com/ikwattro
Demo: GitHub Events
• GitHub: Social Coding
• GH-Events:
• Fork, Comment, PR, ...
• Archive + API
• Application for Import:
• GitHub ->PHP -> RabbitMQ -> Neo4j
• Data:
• 1M Users, 1.4M Repos, 62k Orgs
• 13M Events
https://github.com/ikwattro/github2cypher
https://github.com/ikwattro/github-event
Model: GitHub Events (partial)
Event: Watch a Repository
MATCH (w:WatchEvent)
WITH w LIMIT 1
MATCH p = (w)-[:EVENT_TIME]->(:Minute)<-[:CHILD*]-(:Year),
(w)-[:EVENT_ACTOR]->(u:User)-->(r:Repository)
<-[:WATCHED_REPOSITORY]-(w)
RETURN *;
https://twitter.com/ikwattro/status/618431227100532737
Using Neo4j from Java
Choices Galore!
Neo4j.com/developer/java
Neo4j: OSS, Made in Java
• Java 7 / 8, Scala
• High Performance IO, Memory Mapping,
• Collections, Caches, Cursors,
• Remoting,
• Paxos, Raft, ...
• Libraries
• Jetty, Lucene, Netty, Parboiled, ...
https://github.com/neo4j/neo4j
Using: Neo4j from Java
• Neo4j Java APIs
• Server Extensions
• Embedded
• (parallel) Batch-Import APIs
• REST / HTTP
• JDBC Driver
• Neo4j-OGM
• Spring Data Neo4j
• Upcoming: Binary Protocol Driver
https://neo4j.com/developer/java
Get up to speed with Neo4j
Quickly and Easily
There Are Lots of Ways to Easily Learn Neo4j
neo4j.com/developer
Thank You!
Ask Questions, or Tweet
@neo4j | http://neo4j.com
@mesirii | Michael Hunger

More Related Content

What's hot

Neo4j Database and Graph Platform Overview
Neo4j Database and Graph Platform OverviewNeo4j Database and Graph Platform Overview
Neo4j Database and Graph Platform OverviewNeo4j
 
Mobile / Tablet Application Development - What are my options?
Mobile / Tablet Application Development - What are my options?Mobile / Tablet Application Development - What are my options?
Mobile / Tablet Application Development - What are my options?DATA Inc.
 
Intro to Graphs and Neo4j
Intro to Graphs and Neo4jIntro to Graphs and Neo4j
Intro to Graphs and Neo4jjexp
 
Big Data and NoSQL for Database and BI Pros
Big Data and NoSQL for Database and BI ProsBig Data and NoSQL for Database and BI Pros
Big Data and NoSQL for Database and BI ProsAndrew Brust
 
Neo4j Training Cypher
Neo4j Training CypherNeo4j Training Cypher
Neo4j Training CypherMax De Marzi
 
Webinar: An Enterprise Architect’s View of MongoDB
Webinar: An Enterprise Architect’s View of MongoDBWebinar: An Enterprise Architect’s View of MongoDB
Webinar: An Enterprise Architect’s View of MongoDBMongoDB
 
Data modeling with neo4j tutorial
Data modeling with neo4j tutorialData modeling with neo4j tutorial
Data modeling with neo4j tutorialMax De Marzi
 
Hitchhiker’s Guide to SharePoint BI
Hitchhiker’s Guide to SharePoint BIHitchhiker’s Guide to SharePoint BI
Hitchhiker’s Guide to SharePoint BIAndrew Brust
 
Neo4j - graph database for recommendations
Neo4j - graph database for recommendationsNeo4j - graph database for recommendations
Neo4j - graph database for recommendationsproksik
 
Query-time Nonparametric Regression with Temporally Bounded Models - Patrick ...
Query-time Nonparametric Regression with Temporally Bounded Models - Patrick ...Query-time Nonparametric Regression with Temporally Bounded Models - Patrick ...
Query-time Nonparametric Regression with Temporally Bounded Models - Patrick ...Lucidworks
 
MongoATL: How Sourceforge is Using MongoDB
MongoATL: How Sourceforge is Using MongoDBMongoATL: How Sourceforge is Using MongoDB
MongoATL: How Sourceforge is Using MongoDBRick Copeland
 
Introduction to Azure DocumentDB
Introduction to Azure DocumentDBIntroduction to Azure DocumentDB
Introduction to Azure DocumentDBDenny Lee
 
MongoDB Evenings DC: MongoDB - The New Default Database for Giant Ideas
MongoDB Evenings DC: MongoDB - The New Default Database for Giant IdeasMongoDB Evenings DC: MongoDB - The New Default Database for Giant Ideas
MongoDB Evenings DC: MongoDB - The New Default Database for Giant IdeasMongoDB
 
Einstieg in Neo4j Graph Data Science
Einstieg in Neo4j Graph Data ScienceEinstieg in Neo4j Graph Data Science
Einstieg in Neo4j Graph Data ScienceNeo4j
 
Big Data and NoSQL in Microsoft-Land
Big Data and NoSQL in Microsoft-LandBig Data and NoSQL in Microsoft-Land
Big Data and NoSQL in Microsoft-LandAndrew Brust
 
MongoDB Days Silicon Valley: Jumpstart: The Right and Wrong Use Cases for Mon...
MongoDB Days Silicon Valley: Jumpstart: The Right and Wrong Use Cases for Mon...MongoDB Days Silicon Valley: Jumpstart: The Right and Wrong Use Cases for Mon...
MongoDB Days Silicon Valley: Jumpstart: The Right and Wrong Use Cases for Mon...MongoDB
 
An Enterprise Architect's View of MongoDB
An Enterprise Architect's View of MongoDBAn Enterprise Architect's View of MongoDB
An Enterprise Architect's View of MongoDBMongoDB
 
Big Data Strategy for the Relational World
Big Data Strategy for the Relational World Big Data Strategy for the Relational World
Big Data Strategy for the Relational World Andrew Brust
 

What's hot (20)

Neo4j Database and Graph Platform Overview
Neo4j Database and Graph Platform OverviewNeo4j Database and Graph Platform Overview
Neo4j Database and Graph Platform Overview
 
Mobile / Tablet Application Development - What are my options?
Mobile / Tablet Application Development - What are my options?Mobile / Tablet Application Development - What are my options?
Mobile / Tablet Application Development - What are my options?
 
Intro to Graphs and Neo4j
Intro to Graphs and Neo4jIntro to Graphs and Neo4j
Intro to Graphs and Neo4j
 
Big Data and NoSQL for Database and BI Pros
Big Data and NoSQL for Database and BI ProsBig Data and NoSQL for Database and BI Pros
Big Data and NoSQL for Database and BI Pros
 
Neo4j Training Cypher
Neo4j Training CypherNeo4j Training Cypher
Neo4j Training Cypher
 
Webinar: An Enterprise Architect’s View of MongoDB
Webinar: An Enterprise Architect’s View of MongoDBWebinar: An Enterprise Architect’s View of MongoDB
Webinar: An Enterprise Architect’s View of MongoDB
 
Data modeling with neo4j tutorial
Data modeling with neo4j tutorialData modeling with neo4j tutorial
Data modeling with neo4j tutorial
 
Hitchhiker’s Guide to SharePoint BI
Hitchhiker’s Guide to SharePoint BIHitchhiker’s Guide to SharePoint BI
Hitchhiker’s Guide to SharePoint BI
 
Neo4j - graph database for recommendations
Neo4j - graph database for recommendationsNeo4j - graph database for recommendations
Neo4j - graph database for recommendations
 
Query-time Nonparametric Regression with Temporally Bounded Models - Patrick ...
Query-time Nonparametric Regression with Temporally Bounded Models - Patrick ...Query-time Nonparametric Regression with Temporally Bounded Models - Patrick ...
Query-time Nonparametric Regression with Temporally Bounded Models - Patrick ...
 
MongoATL: How Sourceforge is Using MongoDB
MongoATL: How Sourceforge is Using MongoDBMongoATL: How Sourceforge is Using MongoDB
MongoATL: How Sourceforge is Using MongoDB
 
Introduction to Azure DocumentDB
Introduction to Azure DocumentDBIntroduction to Azure DocumentDB
Introduction to Azure DocumentDB
 
Microsoft azure documentDB
Microsoft azure documentDBMicrosoft azure documentDB
Microsoft azure documentDB
 
MongoDB Evenings DC: MongoDB - The New Default Database for Giant Ideas
MongoDB Evenings DC: MongoDB - The New Default Database for Giant IdeasMongoDB Evenings DC: MongoDB - The New Default Database for Giant Ideas
MongoDB Evenings DC: MongoDB - The New Default Database for Giant Ideas
 
Einstieg in Neo4j Graph Data Science
Einstieg in Neo4j Graph Data ScienceEinstieg in Neo4j Graph Data Science
Einstieg in Neo4j Graph Data Science
 
Big Data and NoSQL in Microsoft-Land
Big Data and NoSQL in Microsoft-LandBig Data and NoSQL in Microsoft-Land
Big Data and NoSQL in Microsoft-Land
 
MongoDB Days Silicon Valley: Jumpstart: The Right and Wrong Use Cases for Mon...
MongoDB Days Silicon Valley: Jumpstart: The Right and Wrong Use Cases for Mon...MongoDB Days Silicon Valley: Jumpstart: The Right and Wrong Use Cases for Mon...
MongoDB Days Silicon Valley: Jumpstart: The Right and Wrong Use Cases for Mon...
 
An Enterprise Architect's View of MongoDB
An Enterprise Architect's View of MongoDBAn Enterprise Architect's View of MongoDB
An Enterprise Architect's View of MongoDB
 
Graph Databases
Graph DatabasesGraph Databases
Graph Databases
 
Big Data Strategy for the Relational World
Big Data Strategy for the Relational World Big Data Strategy for the Relational World
Big Data Strategy for the Relational World
 

Viewers also liked

Graphs fun intro - Michael Hunger
Graphs fun intro - Michael HungerGraphs fun intro - Michael Hunger
Graphs fun intro - Michael HungerNeo4j
 
Graph all the things
Graph all the thingsGraph all the things
Graph all the thingsNeo4j
 
GraphConnect 2014 SF: The Business Graph
GraphConnect 2014 SF: The Business GraphGraphConnect 2014 SF: The Business Graph
GraphConnect 2014 SF: The Business GraphNeo4j
 
Graph Search and Discovery for your Dark Data
Graph Search and Discovery for your Dark DataGraph Search and Discovery for your Dark Data
Graph Search and Discovery for your Dark DataNeo4j
 
GraphConnect 2014 SF: Betting the Company on a Graph Database - Part 2
GraphConnect 2014 SF: Betting the Company on a Graph Database - Part 2GraphConnect 2014 SF: Betting the Company on a Graph Database - Part 2
GraphConnect 2014 SF: Betting the Company on a Graph Database - Part 2Neo4j
 
Graph your business
Graph your businessGraph your business
Graph your businessNeo4j
 
Metadata and Access Control
Metadata and Access ControlMetadata and Access Control
Metadata and Access ControlNeo4j
 
Neo4j Makes Graphs Easy? - GraphDay AmandaLaucher
Neo4j Makes Graphs Easy? - GraphDay AmandaLaucherNeo4j Makes Graphs Easy? - GraphDay AmandaLaucher
Neo4j Makes Graphs Easy? - GraphDay AmandaLaucherNeo4j
 
Transparency One : La (re)découverte de la chaîne d'approvisionnement
Transparency One : La (re)découverte de la chaîne d'approvisionnementTransparency One : La (re)découverte de la chaîne d'approvisionnement
Transparency One : La (re)découverte de la chaîne d'approvisionnementNeo4j
 
GraphConnect 2014 SF: Neo4j at Scale using Enterprise Integration Patterns
GraphConnect 2014 SF: Neo4j at Scale using Enterprise Integration PatternsGraphConnect 2014 SF: Neo4j at Scale using Enterprise Integration Patterns
GraphConnect 2014 SF: Neo4j at Scale using Enterprise Integration PatternsNeo4j
 
GraphTalk Frankfurt - Master Data Management bei der Bayerischen Versicherung
GraphTalk Frankfurt - Master Data Management bei der Bayerischen VersicherungGraphTalk Frankfurt - Master Data Management bei der Bayerischen Versicherung
GraphTalk Frankfurt - Master Data Management bei der Bayerischen VersicherungNeo4j
 
Neo4j Makes Graphs Easy
Neo4j Makes Graphs EasyNeo4j Makes Graphs Easy
Neo4j Makes Graphs EasyNeo4j
 
Graph Your Business - GraphDay JimWebber
Graph Your Business - GraphDay JimWebberGraph Your Business - GraphDay JimWebber
Graph Your Business - GraphDay JimWebberNeo4j
 
GraphDay Noble/Coolio
GraphDay Noble/CoolioGraphDay Noble/Coolio
GraphDay Noble/CoolioNeo4j
 
Meetup Analytics with R and Neo4j
Meetup Analytics with R and Neo4jMeetup Analytics with R and Neo4j
Meetup Analytics with R and Neo4jNeo4j
 
GraphTalk Frankfurt - Einführung in Graphdatenbanken
GraphTalk Frankfurt - Einführung in GraphdatenbankenGraphTalk Frankfurt - Einführung in Graphdatenbanken
GraphTalk Frankfurt - Einführung in GraphdatenbankenNeo4j
 
GraphTalk - Semantische Netze mit structr
GraphTalk - Semantische Netze mit structrGraphTalk - Semantische Netze mit structr
GraphTalk - Semantische Netze mit structrNeo4j
 
Graph all the things - PRathle
Graph all the things - PRathleGraph all the things - PRathle
Graph all the things - PRathleNeo4j
 
GraphTalks - Einführung
GraphTalks - EinführungGraphTalks - Einführung
GraphTalks - EinführungNeo4j
 
GraphTalk - Semantisches PDM bei Schleich
GraphTalk - Semantisches PDM bei Schleich GraphTalk - Semantisches PDM bei Schleich
GraphTalk - Semantisches PDM bei Schleich Neo4j
 

Viewers also liked (20)

Graphs fun intro - Michael Hunger
Graphs fun intro - Michael HungerGraphs fun intro - Michael Hunger
Graphs fun intro - Michael Hunger
 
Graph all the things
Graph all the thingsGraph all the things
Graph all the things
 
GraphConnect 2014 SF: The Business Graph
GraphConnect 2014 SF: The Business GraphGraphConnect 2014 SF: The Business Graph
GraphConnect 2014 SF: The Business Graph
 
Graph Search and Discovery for your Dark Data
Graph Search and Discovery for your Dark DataGraph Search and Discovery for your Dark Data
Graph Search and Discovery for your Dark Data
 
GraphConnect 2014 SF: Betting the Company on a Graph Database - Part 2
GraphConnect 2014 SF: Betting the Company on a Graph Database - Part 2GraphConnect 2014 SF: Betting the Company on a Graph Database - Part 2
GraphConnect 2014 SF: Betting the Company on a Graph Database - Part 2
 
Graph your business
Graph your businessGraph your business
Graph your business
 
Metadata and Access Control
Metadata and Access ControlMetadata and Access Control
Metadata and Access Control
 
Neo4j Makes Graphs Easy? - GraphDay AmandaLaucher
Neo4j Makes Graphs Easy? - GraphDay AmandaLaucherNeo4j Makes Graphs Easy? - GraphDay AmandaLaucher
Neo4j Makes Graphs Easy? - GraphDay AmandaLaucher
 
Transparency One : La (re)découverte de la chaîne d'approvisionnement
Transparency One : La (re)découverte de la chaîne d'approvisionnementTransparency One : La (re)découverte de la chaîne d'approvisionnement
Transparency One : La (re)découverte de la chaîne d'approvisionnement
 
GraphConnect 2014 SF: Neo4j at Scale using Enterprise Integration Patterns
GraphConnect 2014 SF: Neo4j at Scale using Enterprise Integration PatternsGraphConnect 2014 SF: Neo4j at Scale using Enterprise Integration Patterns
GraphConnect 2014 SF: Neo4j at Scale using Enterprise Integration Patterns
 
GraphTalk Frankfurt - Master Data Management bei der Bayerischen Versicherung
GraphTalk Frankfurt - Master Data Management bei der Bayerischen VersicherungGraphTalk Frankfurt - Master Data Management bei der Bayerischen Versicherung
GraphTalk Frankfurt - Master Data Management bei der Bayerischen Versicherung
 
Neo4j Makes Graphs Easy
Neo4j Makes Graphs EasyNeo4j Makes Graphs Easy
Neo4j Makes Graphs Easy
 
Graph Your Business - GraphDay JimWebber
Graph Your Business - GraphDay JimWebberGraph Your Business - GraphDay JimWebber
Graph Your Business - GraphDay JimWebber
 
GraphDay Noble/Coolio
GraphDay Noble/CoolioGraphDay Noble/Coolio
GraphDay Noble/Coolio
 
Meetup Analytics with R and Neo4j
Meetup Analytics with R and Neo4jMeetup Analytics with R and Neo4j
Meetup Analytics with R and Neo4j
 
GraphTalk Frankfurt - Einführung in Graphdatenbanken
GraphTalk Frankfurt - Einführung in GraphdatenbankenGraphTalk Frankfurt - Einführung in Graphdatenbanken
GraphTalk Frankfurt - Einführung in Graphdatenbanken
 
GraphTalk - Semantische Netze mit structr
GraphTalk - Semantische Netze mit structrGraphTalk - Semantische Netze mit structr
GraphTalk - Semantische Netze mit structr
 
Graph all the things - PRathle
Graph all the things - PRathleGraph all the things - PRathle
Graph all the things - PRathle
 
GraphTalks - Einführung
GraphTalks - EinführungGraphTalks - Einführung
GraphTalks - Einführung
 
GraphTalk - Semantisches PDM bei Schleich
GraphTalk - Semantisches PDM bei Schleich GraphTalk - Semantisches PDM bei Schleich
GraphTalk - Semantisches PDM bei Schleich
 

Similar to Graphs fun vjug2

Introduction: Relational to Graphs
Introduction: Relational to GraphsIntroduction: Relational to Graphs
Introduction: Relational to GraphsNeo4j
 
Introducing Neo4j
Introducing Neo4jIntroducing Neo4j
Introducing Neo4jNeo4j
 
Introduction to Neo4j and .Net
Introduction to Neo4j and .NetIntroduction to Neo4j and .Net
Introduction to Neo4j and .NetNeo4j
 
Graph databases and the #panamapapers
Graph databases and the #panamapapersGraph databases and the #panamapapers
Graph databases and the #panamapapersdarthvader42
 
Relational to Big Graph
Relational to Big GraphRelational to Big Graph
Relational to Big GraphNeo4j
 
Feature driven agile oriented web applications
Feature driven agile oriented web applicationsFeature driven agile oriented web applications
Feature driven agile oriented web applicationsRam G Athreya
 
GraphTalks Rome - Selecting the right Technology
GraphTalks Rome - Selecting the right TechnologyGraphTalks Rome - Selecting the right Technology
GraphTalks Rome - Selecting the right TechnologyNeo4j
 
Graph database Use Cases
Graph database Use CasesGraph database Use Cases
Graph database Use CasesMax De Marzi
 
Graph Database Use Cases - StampedeCon 2015
Graph Database Use Cases - StampedeCon 2015Graph Database Use Cases - StampedeCon 2015
Graph Database Use Cases - StampedeCon 2015StampedeCon
 
GraphTalks Rome - Introducing Neo4j
GraphTalks Rome - Introducing Neo4jGraphTalks Rome - Introducing Neo4j
GraphTalks Rome - Introducing Neo4jNeo4j
 
Enabling Telco to Build and Run Modern Applications
Enabling Telco to Build and Run Modern Applications Enabling Telco to Build and Run Modern Applications
Enabling Telco to Build and Run Modern Applications Tugdual Grall
 
Mastering Customer Data on Apache Spark
Mastering Customer Data on Apache SparkMastering Customer Data on Apache Spark
Mastering Customer Data on Apache SparkCaserta
 
Big Data Tel Aviv 2019 v.3.0 I 'Graph database 4 beginners' - Michael Kogan
Big Data Tel Aviv 2019 v.3.0 I 'Graph database 4 beginners' - Michael KoganBig Data Tel Aviv 2019 v.3.0 I 'Graph database 4 beginners' - Michael Kogan
Big Data Tel Aviv 2019 v.3.0 I 'Graph database 4 beginners' - Michael KoganDataconomy Media
 
Polyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4jPolyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4jCorie Pollock
 
Neo4j GraphTalks - Introduction to GraphDatabases and Neo4j
Neo4j GraphTalks - Introduction to GraphDatabases and Neo4jNeo4j GraphTalks - Introduction to GraphDatabases and Neo4j
Neo4j GraphTalks - Introduction to GraphDatabases and Neo4jNeo4j
 
Neo4j GraphTalk Oslo - Introduction to Graphs
Neo4j GraphTalk Oslo - Introduction to GraphsNeo4j GraphTalk Oslo - Introduction to Graphs
Neo4j GraphTalk Oslo - Introduction to GraphsNeo4j
 
How Celtra Optimizes its Advertising Platform with Databricks
How Celtra Optimizes its Advertising Platformwith DatabricksHow Celtra Optimizes its Advertising Platformwith Databricks
How Celtra Optimizes its Advertising Platform with DatabricksGrega Kespret
 
Introduction to Neo4j for the Emirates & Bahrain
Introduction to Neo4j for the Emirates & BahrainIntroduction to Neo4j for the Emirates & Bahrain
Introduction to Neo4j for the Emirates & BahrainNeo4j
 
Neo4j GraphDay Seattle- Sept19- in the enterprise
Neo4j GraphDay Seattle- Sept19-  in the enterpriseNeo4j GraphDay Seattle- Sept19-  in the enterprise
Neo4j GraphDay Seattle- Sept19- in the enterpriseNeo4j
 

Similar to Graphs fun vjug2 (20)

Introduction: Relational to Graphs
Introduction: Relational to GraphsIntroduction: Relational to Graphs
Introduction: Relational to Graphs
 
Neo4j in Depth
Neo4j in DepthNeo4j in Depth
Neo4j in Depth
 
Introducing Neo4j
Introducing Neo4jIntroducing Neo4j
Introducing Neo4j
 
Introduction to Neo4j and .Net
Introduction to Neo4j and .NetIntroduction to Neo4j and .Net
Introduction to Neo4j and .Net
 
Graph databases and the #panamapapers
Graph databases and the #panamapapersGraph databases and the #panamapapers
Graph databases and the #panamapapers
 
Relational to Big Graph
Relational to Big GraphRelational to Big Graph
Relational to Big Graph
 
Feature driven agile oriented web applications
Feature driven agile oriented web applicationsFeature driven agile oriented web applications
Feature driven agile oriented web applications
 
GraphTalks Rome - Selecting the right Technology
GraphTalks Rome - Selecting the right TechnologyGraphTalks Rome - Selecting the right Technology
GraphTalks Rome - Selecting the right Technology
 
Graph database Use Cases
Graph database Use CasesGraph database Use Cases
Graph database Use Cases
 
Graph Database Use Cases - StampedeCon 2015
Graph Database Use Cases - StampedeCon 2015Graph Database Use Cases - StampedeCon 2015
Graph Database Use Cases - StampedeCon 2015
 
GraphTalks Rome - Introducing Neo4j
GraphTalks Rome - Introducing Neo4jGraphTalks Rome - Introducing Neo4j
GraphTalks Rome - Introducing Neo4j
 
Enabling Telco to Build and Run Modern Applications
Enabling Telco to Build and Run Modern Applications Enabling Telco to Build and Run Modern Applications
Enabling Telco to Build and Run Modern Applications
 
Mastering Customer Data on Apache Spark
Mastering Customer Data on Apache SparkMastering Customer Data on Apache Spark
Mastering Customer Data on Apache Spark
 
Big Data Tel Aviv 2019 v.3.0 I 'Graph database 4 beginners' - Michael Kogan
Big Data Tel Aviv 2019 v.3.0 I 'Graph database 4 beginners' - Michael KoganBig Data Tel Aviv 2019 v.3.0 I 'Graph database 4 beginners' - Michael Kogan
Big Data Tel Aviv 2019 v.3.0 I 'Graph database 4 beginners' - Michael Kogan
 
Polyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4jPolyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4j
 
Neo4j GraphTalks - Introduction to GraphDatabases and Neo4j
Neo4j GraphTalks - Introduction to GraphDatabases and Neo4jNeo4j GraphTalks - Introduction to GraphDatabases and Neo4j
Neo4j GraphTalks - Introduction to GraphDatabases and Neo4j
 
Neo4j GraphTalk Oslo - Introduction to Graphs
Neo4j GraphTalk Oslo - Introduction to GraphsNeo4j GraphTalk Oslo - Introduction to Graphs
Neo4j GraphTalk Oslo - Introduction to Graphs
 
How Celtra Optimizes its Advertising Platform with Databricks
How Celtra Optimizes its Advertising Platformwith DatabricksHow Celtra Optimizes its Advertising Platformwith Databricks
How Celtra Optimizes its Advertising Platform with Databricks
 
Introduction to Neo4j for the Emirates & Bahrain
Introduction to Neo4j for the Emirates & BahrainIntroduction to Neo4j for the Emirates & Bahrain
Introduction to Neo4j for the Emirates & Bahrain
 
Neo4j GraphDay Seattle- Sept19- in the enterprise
Neo4j GraphDay Seattle- Sept19-  in the enterpriseNeo4j GraphDay Seattle- Sept19-  in the enterprise
Neo4j GraphDay Seattle- Sept19- in the enterprise
 

More from Neo4j

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansQIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansNeo4j
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...Neo4j
 
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosBBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosNeo4j
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Neo4j
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jNeo4j
 
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j
 
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdfRabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Neo4j
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeNeo4j
 
Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)Neo4j
 
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j
 
Enabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge GraphsEnabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge GraphsNeo4j
 
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdfNeo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdfNeo4j
 
Neo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with GraphNeo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with GraphNeo4j
 
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...Neo4j
 

More from Neo4j (20)

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansQIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
 
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosBBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
 
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
 
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdfRabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG time
 
Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)
 
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
 
Enabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge GraphsEnabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge Graphs
 
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdfNeo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
 
Neo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with GraphNeo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with Graph
 
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
 

Graphs fun vjug2

  • 1. How Graphs make Databases Fun again Value in Relationships Michael Hunger (@mesirii) vJUG July 2015
  • 2. (Michael)-[:HELPS]->(People)-[:WORK_WITH]->(Neo4j) • Coding • Writing • Speaking • Helping • Connecting • Organizing
  • 3. Topics • Databases are No Fun • Relational Pain -> Graph Fun • The world is a Graph • Neo4j • Model, Query, Import • Having Fun in the Developer Zone • GitHub Events • Software Analytics • Neo4j from Java
  • 4. Databases are No Fun We have all been there
  • 5. What pained me • Object vs. Database Model = Pain • Hard to Model • Object relational impedance mismatch (and ORMs) • Schema evolution = DBA Fights • Slow queries = JOIN Pain • Complex Queries = Pages of SQL • Query Optimization = Denormalization • Roundtrips (n+1 select, complex operations) = Cumbersome
  • 6. What saved me? – Meeting Emil Geek Cruise in 2008
  • 7. Neo4j: A Story of Pain With a Happy Ending
  • 8. History of Neo4j - Problem • Digital Asset Management System in 2000 • SaaS many users in many countries • Two hard use-cases • Multi language keyword search • Including synonyms / word hierarchies • Access Management to Assets for SaaS Scale • Groups, Hierarchies, Permissions, Realtime
  • 9. History of Neo4j – Relational Attempt • Tried with many relational DBs • JOIN Performance Problems • Hierarchies, Networks, Graphs • Modeling Problems • Data Model evolution • No Success, even … • With expensive database consultants!
  • 10. History of Neo4j – First working Implementation • Graph Model & API sketched on a napkin • Nodes connected by Relationships • Just like your conceptual model • Implemented network-database in memory • Java API, fast Traversals • Worked well, but … • No persistence, No Transactions • Long import / export time from relational storage
  • 11. History of Neo4j - Solution • Evolved to full fledged database in Java • With persistence using files + memory mapping • Transactions with Transaction Log (WAL) • Lucene for fast entity lookup • Founded Company in 2007 • Neo4j (REST)-Server • Neo4j Clustering & HA • Cypher Query Language • Today …
  • 12. Neo Technology Overview Product • Neo4j - World’s leading graph database • 1M+ downloads, adding 70k+ per month • 150+ enterprise subscription customers including over 50 of the Global 2000 Company • Neo Technology, Creator of Neo4j • 100+ employees with HQ in Silicon Valley, London, Munich, Paris and Malmö • $45M in funding from Fidelity, Sunstone, Conor, Creandum, Dawn Capital
  • 13. What, Who, Where, How? Financial Services Communications Health & Life Sciences HR & Recruiting Media & Publishing Social Web Industry & Logistics Entertainment Consumer Retail Information ServicesBusiness Services http://neo4j.com/use-cases http://neo4j.com/customers
  • 14. Why should I care? Because Relationships Matter
  • 15. What is it with Relationships? • World is full of connected people, events, things • There is “Value in Relationships” ! • What about Data Relationships? • How do you store your object model? • How do you explain JOIN tables to your boss?
  • 16. Neo4j – allows you to connect the dots • Was built to efficiently • store, • query and • manage highly connected data • Transactional, ACID • Real-time OLTP • Open source • Highly scalable already on few machines
  • 17. Value from Data Relationships Common Use Cases Internal Applications Master Data Management Network and IT Operations Fraud Detection Customer-Facing Applications Real-Time Recommendations Graph-Based Search Identity and Access Management
  • 18. Neo4j Browser – Built-in Learning
  • 19. RDBMS to Graph – Familiar Examples
  • 20. Neo4j Browser – Visualization
  • 22. Teaser: Meetup.com Import • For a Meetup Event • Import Attendees • For each Attendee • Import Interests / Topics • Import other Meetup Memberships • Other groups our members are in • Top 10 topics • Topics & Groups of active Member https://github.com/ikwattro/meetup2neo http://markhneedham.com/blog?s=meetup
  • 23. From RDBMS to Neo4j Relational Pains = Graph Pleasure
  • 24. Relational DBs Can’t Handle Relationships Well • Data Model built for tabular forms not JOINS managing connections was bolted on both in schema and query • Strict schema not suitable for variable structured data which is generated and used by todays applications • Data volume and JOIN number affect cost of query operation exponentially • Variable hierarchies and networks are hard to store and query so many “patterns” were developed … often only denormalization makes complex relational queries fast but destroys the good normalized data-model Built for Forms Joins are expensive Denormalize #FTW
  • 25. Unlocking Value from Your Data Relationships • Model your data naturally as a graph of data and relationships • Drive graph model from domain and use-cases • Use relationship information in real- time to transform your business • Add new relationships on the fly to adapt to your changing requirements
  • 26. High Query Performance with a Native Graph DB • Relationships are first class citizen • No need for joins, just follow pre- materialized relationships of nodes • Query & Data-locality – navigate out from your starting points • Only load what’s needed • Aggregate and project results as you go • Optimized disk and memory model for graphs
  • 27. Relational Versus Graph Models Relational Model Graph Model KNOWS ANDREAS TOBIAS MICA DELIA Person FriendPerson-Friend ANDREAS DELIA TOBIAS MICA
  • 29. … Is Actually Order Product Customer Employee SOLD ORDERS Category Employee REPORTS_TO PART_OF PURCHASED Supplier SUPPLIES
  • 30. MATCH (boss)-[:MANAGES*0..3]->(mgr), (mgr)-[:MANAGES*1..3]->(report) WHERE boss.name = “John Doe” RETURN mgr.name AS Subordinate, count(report) AS Total Express Complex Queries Easily with Cypher Find all direct reports and how many people they manage, each up to 3 levels down Cypher Query SQL Query
  • 31. High Query Performance: Some Numbers • Traverse 2-4M+ relationships per second and core • Cost based query optimizer – complex queries return in milliseconds • Import 100K-1M records per second transactionally • Bulk import tens of billions of records in a few hours
  • 32. Working with a Graph Model, Import, Query
  • 33. The Whiteboard Model Is the Physical Model Eliminates Graph-to- Relational Mapping In your data model Bridge the gap between business and IT models In your application Greatly reduce need for application code
  • 34. CAR name: “Dan” born: May 29, 1970 twitter: “@dan” name: “Ann” born: Dec 5, 1975 since: Jan 10, 2011 brand: “Volvo” model: “V70” Property Graph Model Components Nodes • The objects in the graph • Can have name-value properties • Can be labeled Relationships • Relate nodes by type and direction • Can have name-value properties LOVES LOVES LIVES WITH PERSON PERSON
  • 35. Cypher: Powerful and Expressive Query Language MATCH (:Person { name:“Dan”} ) -[:LOVES]-> (:Person { name:“Ann”} ) LOVES Dan Ann LABEL PROPERTY NODE NODE LABEL PROPERTY
  • 36. Getting Data into Neo4j Cypher-Based “LOAD CSV” Capability • Transactional (ACID) writes • Initial and incremental loads of up to 10 million nodes and relationships Command-Line Bulk Loader neo4j-import • For initial database population • For loads up to 10B+ records • Up to 1M records per second 4.58 million things and their relationships… Loads in 100 seconds! CSV
  • 38. Basic Pattern: Tom Hanks Movies? MATCH (:Person {name:”Tom Hanks"} ) -[:ACTED_IN]-> (:Movie {title:”Forrest Gump"} ) ACTED_IN Tom Hanks Forrest Gump LABEL PROPERTY NODE NODE Forrest Gump LABEL PROPERTY
  • 39. Basic Query: Tom Hanks‘ Movies? MATCH (actor:Person)-[:ACTED_IN]->(m:Movie) WHERE actor.name = "Tom Hanks" RETURN *
  • 40. Basic Query: Tom Hanks‘ Movies?
  • 41. Query Comparison: Colleagues of Tom Hanks? SELECT * FROM Person as actor JOIN ActorMovie AS am1 ON (actor.id = am1.actor_id) JOIN ActorMovie AS am2 ON (am1.movie_id = am2.movie_id) JOIN Person AS coll ON (coll.id = am2.actor_id) WHERE actor.name = "Tom Hanks“ MATCH (actor:Person)-[:ACTED_IN]->()<-[:ACTED_IN]-(coll:Person) WHERE actor.name = "Tom Hanks" RETURN *
  • 42. Basic Query Comparison: Colleagues of Tom Hanks?
  • 43. Most prolific actors and their filmography? MATCH (p:Person)-[:ACTED_IN]->(m:Movie) RETURN p.name, count(*), collect(m.title) as movies ORDER BY count(*) desc, p.name asc LIMIT 10;
  • 44. Most prolific actors and their filmography?
  • 45. Neo4j Query Planner Cost based Query Planner since Neo4j 2.2 • Uses database stats to select best plan • Currently for Read Operations • Query Plan Visualizer, finds • Non optimal queries • Cartesian Product • Missing Indexes, Global Scans • Typos • Massive Fan-Out
  • 46. Query Planner Slight change, add an :Person label -> more stats available -> new plan with fewer database-hits
  • 48. Software Analytics Software is connected information, aka a graph • Source -> AST • Inheritance, Composition, Delegation • Call Trees • Runtime Memory • Dependencies • Modules, Libraries • Tests • ... https://jqassistant.org
  • 49. jQAssistant • GeekCruise: My first Neo4j project • Software deteriorates • Develop rules and enforce them • Commercial Tools too inflexible • Open Source Software ... • Scanner -> Enhancer -> Analyzer • Enrichment, Concepts and Rulez in Cypher • Scanner Plugins • Integrate in Build Process • Fail, Generate Reports, ... https://jqassistant.org
  • 50.
  • 53. Demo: GitHub Events • GitHub: Social Coding • GH-Events: • Fork, Comment, PR, ... • Archive + API • Application for Import: • GitHub ->PHP -> RabbitMQ -> Neo4j • Data: • 1M Users, 1.4M Repos, 62k Orgs • 13M Events https://github.com/ikwattro/github2cypher https://github.com/ikwattro/github-event
  • 54. Model: GitHub Events (partial)
  • 55. Event: Watch a Repository MATCH (w:WatchEvent) WITH w LIMIT 1 MATCH p = (w)-[:EVENT_TIME]->(:Minute)<-[:CHILD*]-(:Year), (w)-[:EVENT_ACTOR]->(u:User)-->(r:Repository) <-[:WATCHED_REPOSITORY]-(w) RETURN *; https://twitter.com/ikwattro/status/618431227100532737
  • 56. Using Neo4j from Java Choices Galore! Neo4j.com/developer/java
  • 57. Neo4j: OSS, Made in Java • Java 7 / 8, Scala • High Performance IO, Memory Mapping, • Collections, Caches, Cursors, • Remoting, • Paxos, Raft, ... • Libraries • Jetty, Lucene, Netty, Parboiled, ... https://github.com/neo4j/neo4j
  • 58. Using: Neo4j from Java • Neo4j Java APIs • Server Extensions • Embedded • (parallel) Batch-Import APIs • REST / HTTP • JDBC Driver • Neo4j-OGM • Spring Data Neo4j • Upcoming: Binary Protocol Driver https://neo4j.com/developer/java
  • 59. Get up to speed with Neo4j Quickly and Easily
  • 60. There Are Lots of Ways to Easily Learn Neo4j neo4j.com/developer
  • 61. Thank You! Ask Questions, or Tweet @neo4j | http://neo4j.com @mesirii | Michael Hunger

Editor's Notes

  1. In the near future, many of your apps will be driven by data relationships and not transactions You can unlock value from business relationships with Neo4j
  2. Presenter Notes - Challenges with current technologies? Database options are not suited to model or store data as a network of relationships Performance degrades with number and levels of relationships making it harder to use for real-time applications Not flexible to add or change relationships in realtime
  3. Presenter Notes - Challenges with current technologies? Database options are not suited to model or store data as a network of relationships Performance degrades with number and levels of relationships making it harder to use for real-time applications Not flexible to add or change relationships in realtime
  4. Presenter Notes - How does one take advantage of data relationships for real-time applications? To take advantage of relationships Data needs to be available as a network of connections (or as a graph) Real-time access to relationship information should be available regardless of the size of data set or number and complexity of relationships The graph should be able to accommodate new relationships or modify existing ones
  5. Presenter Notes - How does one take advantage of data relationships for real-time applications? To take advantage of relationships Data needs to be available as a network of connections (or as a graph) Real-time access to relationship information should be available regardless of the size of data set or number and complexity of relationships The graph should be able to accommodate new relationships or modify existing ones
  6. 680/605
  7. Presenter Notes - How does one take advantage of data relationships for real-time applications? To take advantage of relationships Data needs to be available as a network of connections (or as a graph) Real-time access to relationship information should be available regardless of the size of data set or number and complexity of relationships The graph should be able to accommodate new relationships or modify existing ones
  8. In the near future, many of your apps will be driven by data relationships and not transactions You can unlock value from business relationships with Neo4j
  9. In the near future, many of your apps will be driven by data relationships and not transactions You can unlock value from business relationships with Neo4j
  10. In the near future, many of your apps will be driven by data relationships and not transactions You can unlock value from business relationships with Neo4j
  11. In the near future, many of your apps will be driven by data relationships and not transactions You can unlock value from business relationships with Neo4j