intro to neo4j - nicole white
DESCRIPTION
An introduction to graph databases and Neo4j.TRANSCRIPT
Intro to Neo4jby Nicole White
Data Scientist at Neo4j @_nicolemargaret
Agenda
What is a Graph?
What is
Neo4j?
Data Modeling
Cypher
Query Langu
age
Neo4j Brows
er Demo
Next
Steps
What is a Graph?
Are These Graphs?
Category 1 Category 2 Category 3 Category 40
1
2
3
4
5
6
Series 1 Series 2 Series 3
Category 1 Category 2 Category 3 Category 40
2
4
6
8
10
12
14
Series 1 Series 2 Series 3
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
This is a Graph
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
Node
Relationship
Twitter Social Graph
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
Internet Graph
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
What is Neo4j?
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
language:’Swedish’
open_source:true
year:2007
The Property Graph
Neo4j
Recommendations
eHarmony
Glassdoor
Logistics
eBay
shutl
Content Management
OneFineStay
Lufthansa
Customers
neo4j.com/customers
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
Data Modeling
A Journey from SQL to Graph
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
Example: YouTube in SQL
ID Name
1 Alice
2 Bob
3 Charles
4 David
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
ID Name
1 Bob’s Gaming Channel
2 Bob’s Cute Dog
3 Cooking with Charles
4 David’s How-To Channel
5 Disco Dancing with David
User ID Channel ID
2 1
2 2
3 3
4 4
4 5
USERS
CHANNELSUSERS_CHANNELS
User ID Channel ID
1 3
1 4
2 3
2 5
3 1
USERS_SUBSCRIPTIONS
Example: YouTube in a Graph
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
name:’Alice’
name:’Bob’
name:’Charles’
name:’David’
name:’Cooking with Charles’
name:’David’s How-To Channel’
name:’Disco Dancing with David’
name:’Bob’s Gaming Channel’
name:’Bob’s Cute Dog’User
Channel
OPERATES
OPERATES
OPERATES
OPERATES
OPERATES
SUBSCRIBEDSUBSCRIBED
SUBSCRIBED
SUBS
CRIB
ED
SUBSCRIBED
Cypher Query Language
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
name:’Alice’
name:’Bob’
name:’Charles’
name:’David’
name:’Cooking with Charles’
name:’David’s How-To Channel’
name:’Disco Dancing with David’
name:’Bob’s Gaming Channel’
name:’Bob’s Cute Dog’User
Channel
OPERATES
OPERATES
OPERATES
OPERATES
OPERATES
SUBSCRIBEDSUBSCRIBED
SUBSCRIBED
SUBS
CRIB
ED
SUBSCRIBED
MATCH (n)RETURN n;
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
name:’Alice’
name:’Bob’
name:’Charles’
name:’David’
name:’Cooking with Charles’
name:’David’s How-To Channel’
name:’Disco Dancing with David’
name:’Bob’s Gaming Channel’
name:’Bob’s Cute Dog’User
Channel
OPERATES
OPERATES
OPERATES
OPERATES
OPERATES
SUBSCRIBEDSUBSCRIBED
SUBSCRIBED
SUBS
CRIB
ED
SUBSCRIBED
MATCH (u:User)RETURN u;
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
name:’Alice’
name:’Bob’
name:’Charles’
name:’David’
name:’Cooking with Charles’
name:’David’s How-To Channel’
name:’Disco Dancing with David’
name:’Bob’s Gaming Channel’
name:’Bob’s Cute Dog’User
Channel
OPERATES
OPERATES
OPERATES
OPERATES
OPERATES
SUBSCRIBEDSUBSCRIBED
SUBSCRIBED
SUBS
CRIB
ED
SUBSCRIBED
MATCH (c:Channel)RETURN c;
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
name:’Alice’
name:’Bob’
name:’Charles’
name:’David’
name:’Cooking with Charles’
name:’David’s How-To Channel’
name:’Disco Dancing with David’
name:’Bob’s Gaming Channel’
name:’Bob’s Cute Dog’User
Channel
OPERATES
OPERATES
OPERATES
OPERATES
OPERATES
SUBSCRIBEDSUBSCRIBED
SUBSCRIBED
SUBS
CRIB
ED
SUBSCRIBED
MATCH (bob:User {name:’Bob’})RETURN bob;
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
name:’Alice’
name:’Bob’
name:’Charles’
name:’David’
name:’Cooking with Charles’
name:’David’s How-To Channel’
name:’Disco Dancing with David’
name:’Bob’s Gaming Channel’
name:’Bob’s Cute Dog’User
Channel
OPERATES
OPERATES
OPERATES
OPERATES
OPERATES
SUBSCRIBEDSUBSCRIBED
SUBSCRIBED
SUBS
CRIB
ED
SUBSCRIBED
MATCH (u:User)-[r]->(c:Channel)RETURN u, r, c;
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
name:’Alice’
name:’Bob’
name:’Charles’
name:’David’
name:’Cooking with Charles’
name:’David’s How-To Channel’
name:’Disco Dancing with David’
name:’Bob’s Gaming Channel’
name:’Bob’s Cute Dog’User
Channel
OPERATES
OPERATES
OPERATES
OPERATES
OPERATES
SUBSCRIBEDSUBSCRIBED
SUBSCRIBED
SUBS
CRIB
ED
SUBSCRIBED
MATCH (u:User)-[r:OPERATES]->(c:Channel)RETURN u, r, c;
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
name:’Alice’
name:’Bob’
name:’Charles’
name:’David’
name:’Cooking with Charles’
name:’David’s How-To Channel’
name:’Disco Dancing with David’
name:’Bob’s Gaming Channel’
name:’Bob’s Cute Dog’User
Channel
OPERATES
OPERATES
OPERATES
OPERATES
OPERATES
SUBSCRIBEDSUBSCRIBED
SUBSCRIBED
SUBS
CRIB
ED
SUBSCRIBED
MATCH p=(:User)-[:OPERATES]->(:Channel)RETURN p;
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
name:’Alice’
name:’Bob’
name:’Charles’
name:’David’
name:’Cooking with Charles’
name:’David’s How-To Channel’
name:’Disco Dancing with David’
name:’Bob’s Gaming Channel’
name:’Bob’s Cute Dog’User
Channel
OPERATES
OPERATES
OPERATES
OPERATES
OPERATES
SUBSCRIBEDSUBSCRIBED
SUBSCRIBED
SUBS
CRIB
ED
SUBSCRIBED
MATCH p=(:User {name:’Bob’})-[:OPERATES]->(:Channel)<-[:SUBSCRIBED]-(:User)RETURN p;
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
name:’Alice’
name:’Bob’
name:’Charles’
name:’David’
name:’Cooking with Charles’
name:’David’s How-To Channel’
name:’Disco Dancing with David’
name:’Bob’s Gaming Channel’
name:’Bob’s Cute Dog’User
Channel
OPERATES
OPERATES
OPERATES
OPERATES
OPERATES
SUBSCRIBEDSUBSCRIBED
SUBSCRIBED
SUBS
CRIB
ED
SUBSCRIBED
MATCH (u:User)-[r]->(c:Channel)RETURN u.name, TYPE(r), c.name;
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
name:’Alice’
name:’Bob’
name:’Charles’
name:’David’
name:’Cooking with Charles’
name:’David’s How-To Channel’
name:’Disco Dancing with David’
name:’Bob’s Gaming Channel’
name:’Bob’s Cute Dog’User
Channel
OPERATES
OPERATES
OPERATES
OPERATES
OPERATES
SUBSCRIBEDSUBSCRIBED
SUBSCRIBED
SUBS
CRIB
ED
SUBSCRIBED
MATCH (:User {name:’Bob’})-[:OPERATES]->(c:Channel)RETURN COUNT(c);
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
name:’Alice’
name:’Bob’
name:’Charles’
name:’David’
name:’Cooking with Charles’
name:’David’s How-To Channel’
name:’Disco Dancing with David’
name:’Bob’s Gaming Channel’
name:’Bob’s Cute Dog’User
Channel
OPERATES
OPERATES
OPERATES
OPERATES
OPERATES
SUBSCRIBEDSUBSCRIBED
SUBSCRIBED
SUBS
CRIB
ED
SUBSCRIBED
MATCH (u:User)-[:OPERATES]->(c:Channel)RETURN u.name, COUNT(c) AS channelsORDER BY channels DESC;
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
name:’Alice’
name:’Bob’
name:’Charles’
name:’David’
name:’Cooking with Charles’
name:’David’s How-To Channel’
name:’Disco Dancing with David’
name:’Bob’s Gaming Channel’
name:’Bob’s Cute Dog’User
Channel
OPERATES
OPERATES
OPERATES
OPERATES
OPERATES
SUBSCRIBEDSUBSCRIBED
SUBSCRIBED
SUBS
CRIB
ED
SUBSCRIBED
MATCH p=(:User {name:'Charles'})-[*1..4]-(:User {name:'David'})RETURN pLIMIT 1;
Uniqueness Constraints
CREATE CONSTRAINT ON (u:User) ASSERT u.name IS UNIQUE;
CREATE CONSTRAINT ON (c:Channel) ASSERT c.name IS UNIQUE;
Download the Cypher Refcard
bit.ly/cypher-refcard
Neo4j Browser Demo
Next Steps
Download Neo4j
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
neo4j.com
Choose a Driverneo4j.com/contrib
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
Join the Community
bit.ly/neo4j-google
@neo4j
#neo4j
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
neo4j.meetup.com
Come to the RNeo4j Meetup
• Tuesday, September 9th, 2014• 6:00-7:30PM• In this room• bit.ly/graphs-r-cool
What is a Graph? What is Neo4j? Data Modeling Cypher Query Language Neo4j Browser Demo Next Steps
October 22, 2014SF JazzInnovate. Share. Connect.
Register @ graphconnect.com
Discount for Meetup attendees:SFLOCAL200