GraphConnect 2014 SF: From Zero to Graph in 120: Model

56
SAN FRANCISCO | 10.22.2014 powered by Zero to Graph in 120 Data Modeling presented by @kennybastani 1

description

GraphConnect 2014 SF: From Zero to Graph in 120: Model

Transcript of GraphConnect 2014 SF: From Zero to Graph in 120: Model

Page 1: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Zero����������� ������������������  to����������� ������������������  Graph����������� ������������������  in����������� ������������������  120Data Modeling

!presented by @kennybastani

1

Page 2: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Agenda

• Introduction����������� ������������������  to����������� ������������������  graphs����������� ������������������  

• Introduction����������� ������������������  to����������� ������������������  the����������� ������������������  labeled����������� ������������������  property����������� ������������������  graph����������� ������������������  data����������� ������������������  model����������� ������������������  

• Cypher����������� ������������������  Query����������� ������������������  Language����������� ������������������  

• Introduction����������� ������������������  to����������� ������������������  graph-based����������� ������������������  modeling����������� ������������������  

• Graph����������� ������������������  data����������� ������������������  modeling����������� ������������������  guidelines����������� ������������������  

• Intermediate����������� ������������������  nodes

2

Page 3: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Introduction����������� ������������������  to����������� ������������������  graphs

Page 4: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

What����������� ������������������  is����������� ������������������  a����������� ������������������  graph?

Page 5: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

5

John

Sally

Graph Databases Book

Friend Of

Friend Of

Has Rea

d

Has Read

Page 6: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

6

name: John age: 27

name: Sally age: 32

title: Graph Databases authors: Ian Robinson, Jim Webber

FRIEND_OF since: 01/09/2013

HAS_READ on: 2/03/2013 rating: 5

HAS_READ on: 02/09/2013 rating: 4

FRIEND_OF since: 01/09/2013

Page 7: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

The����������� ������������������  Relational����������� ������������������  Table����������� ������������������  Model

Page 8: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

8

Customers AccountsCustomer_Accounts

143 Alice 326 $100

725 $632

981 $212

143 981

143 725

143 326

Page 9: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Introduction����������� ������������������  to����������� ������������������  the����������� ������������������  labeled����������� ������������������  property����������� ������������������  graph����������� ������������������  data����������� ������������������  model

Page 10: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Four����������� ������������������  Building����������� ������������������  Blocks

•Nodes����������� ������������������  

•Relationships����������� ������������������  

•Properties����������� ������������������  

•Labels

10

Page 11: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

11

Nodes

Page 12: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Nodes

•Nodes����������� ������������������  are����������� ������������������  used����������� ������������������  to����������� ������������������  represent����������� ������������������  entities����������� ������������������  and����������� ������������������  complex����������� ������������������  value����������� ������������������  types����������� ������������������  in����������� ������������������  your����������� ������������������  domain����������� ������������������  

•Nodes����������� ������������������  contain����������� ������������������  properties����������� ������������������  

•Key-value����������� ������������������  pairs����������� ������������������  

•Java����������� ������������������  primitives����������� ������������������  

•Arrays����������� ������������������  

•null����������� ������������������  is����������� ������������������  not����������� ������������������  a����������� ������������������  valid����������� ������������������  value����������� ������������������  

•Every����������� ������������������  node����������� ������������������  can����������� ������������������  have����������� ������������������  different����������� ������������������  properties����������� ������������������  

•Nodes����������� ������������������  do����������� ������������������  not����������� ������������������  have����������� ������������������  to����������� ������������������  have����������� ������������������  the����������� ������������������  same����������� ������������������  keys

12

Page 13: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

13

Relationships

Page 14: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

14

Relationships����������� ������������������  (continued)

Nodes can have more than one relationship

Self relationships are allowed

Nodes can be connected by more than one relationship

Page 15: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Relationships

•Every����������� ������������������  relationship����������� ������������������  has����������� ������������������  a����������� ������������������  name����������� ������������������  and����������� ������������������  a����������� ������������������  direction����������� ������������������  

•Add����������� ������������������  structure����������� ������������������  to����������� ������������������  the����������� ������������������  graph����������� ������������������  

•Provide����������� ������������������  semantic����������� ������������������  context����������� ������������������  for����������� ������������������  nodes����������� ������������������  

•Can����������� ������������������  contain����������� ������������������  properties����������� ������������������  

•Used����������� ������������������  to����������� ������������������  represent����������� ������������������  quality����������� ������������������  or����������� ������������������  weight����������� ������������������  of����������� ������������������  relationship,����������� ������������������  or����������� ������������������  metadata����������� ������������������  

•Every����������� ������������������  relationship����������� ������������������  must����������� ������������������  have����������� ������������������  a����������� ������������������  start����������� ������������������  node����������� ������������������  and����������� ������������������  end����������� ������������������  node����������� ������������������  

•No����������� ������������������  dangling����������� ������������������  relationships

15

Page 16: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

16

Labels

Page 17: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Labels

•Every����������� ������������������  node����������� ������������������  can����������� ������������������  have����������� ������������������  zero����������� ������������������  or����������� ������������������  more����������� ������������������  labels����������� ������������������  

•Used����������� ������������������  to����������� ������������������  represent����������� ������������������  roles����������� ������������������  (e.g.����������� ������������������  user,����������� ������������������  product,����������� ������������������  company)����������� ������������������  

•Group����������� ������������������  nodes����������� ������������������  

•Allow����������� ������������������  us����������� ������������������  to����������� ������������������  associate����������� ������������������  indexes����������� ������������������  and����������� ������������������  constraints����������� ������������������  with����������� ������������������  groups����������� ������������������  of����������� ������������������  nodes

17

Page 18: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Four����������� ������������������  Building����������� ������������������  Blocks

•Nodes����������� ������������������  

•Entities����������� ������������������  

•Relationships����������� ������������������  

•Connect����������� ������������������  entities����������� ������������������  and����������� ������������������  structure����������� ������������������  domain����������� ������������������  

•Properties����������� ������������������  

•Entity����������� ������������������  attributes,����������� ������������������  relationship����������� ������������������  qualities,����������� ������������������  and����������� ������������������  metadata����������� ������������������  

•Labels����������� ������������������  

•Group����������� ������������������  nodes����������� ������������������  by����������� ������������������  role

18

Page 19: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Cypher����������� ������������������  Query����������� ������������������  Language

Page 20: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Cypher����������� ������������������  is����������� ������������������  Neo4j's����������� ������������������  graph����������� ������������������  query����������� ������������������  language

•Declarative����������� ������������������  Pattern-Matching����������� ������������������  language����������� ������������������  

•SQL-like����������� ������������������  syntax����������� ������������������  

•Designed����������� ������������������  for����������� ������������������  graphs

20

Page 21: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

21

It’s����������� ������������������  all����������� ������������������  about����������� ������������������  Patterns

A

B C

Page 22: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

22

Page 23: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

23

Page 24: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Introduction����������� ������������������  to����������� ������������������  Graph����������� ������������������  Modeling

Page 25: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Start����������� ������������������  with����������� ������������������  a����������� ������������������  whiteboard

Page 26: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

26

Page 27: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Adam

LOL Cat

FRIEND_OFSHARED

COMMENTED

SarahFUNNY

ON

LIKES

Page 28: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Adam

LOL Cat

FRIEND_OFSHARED

COMMENTED

SarahFUNNY

ON

LIKES

Page 29: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Page 30: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Tom Hanks Hugo Weaving

Cloud AtlasThe Matrix

Lana Wachowski

ACTED_IN

ACTED_INACTED_IN

DIRECTED

DIRECTED

Page 31: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Model����������� ������������������  Incrementally

Page 32: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Tom Hanks Hugo Weaving

Cloud AtlasThe Matrix

Lana Wachowski

ACTED_IN

ACTED_INACTED_IN

DIRECTED

DIRECTED

Page 33: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

name: Tom Hanks nationality: USA won: Oscar, Emmy

name: Hugo Weaving nationality: Australia won: MTV Movie Award

title: Cloud Atlas genre: drama, sci-fi

title: The Matrix genre: sci-fi

name: Lana Wachowski nationality: USA won: Razzie, Hugo

ACTED_IN role: Zachry

ACTED_IN role: Bill Smoke

DIRECTED

DIRECTED

ACTED_IN role: Agent Smith

Page 34: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Data����������� ������������������  Modeling����������� ������������������  Guidelines

Page 35: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

35

Symmetric����������� ������������������  Relationships

OR

Page 36: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Infer����������� ������������������  Symmetric����������� ������������������  Relationship

Find child: MATCH (parent{name:'Sarah'}) -[:PARENT_OF]->(child) RETURN child

Find parent: MATCH (parent)-[:PARENT_OF]-> (child{name:'Eric'}) RETURN parent

36

Page 37: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

37

Bi-Directional����������� ������������������  Relationships

Page 38: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Use����������� ������������������  Single����������� ������������������  Relationship����������� ������������������  and����������� ������������������  Ignore����������� ������������������  Relationship����������� ������������������  Direction����������� ������������������  in����������� ������������������  Queries

MATCH (p1{name:'Eric'}) -[:KNOWS]-(p2)RETURN p2

38

Page 39: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

39

Qualified����������� ������������������  Bi-Directional����������� ������������������  Relationships

OR

Page 40: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

40

The����������� ������������������  Skill����������� ������������������  Graph

Page 41: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Use����������� ������������������  Relationships����������� ������������������  When

•Use����������� ������������������  Relationships:����������� ������������������  

•You����������� ������������������  need����������� ������������������  to����������� ������������������  specify����������� ������������������  the����������� ������������������  weight,����������� ������������������  strength,����������� ������������������  or����������� ������������������  some����������� ������������������  other����������� ������������������  quality����������� ������������������  of����������� ������������������  the����������� ������������������  relationship����������� ������������������  and����������� ������������������  the����������� ������������������  nodes����������� ������������������  it����������� ������������������  connects����������� ������������������  

•The����������� ������������������  property����������� ������������������  value����������� ������������������  comprises����������� ������������������  a����������� ������������������  complex����������� ������������������  value����������� ������������������  type����������� ������������������  (e.g.����������� ������������������  address)����������� ������������������  

•Examples:����������� ������������������  

•Find����������� ������������������  all����������� ������������������  my����������� ������������������  colleagues����������� ������������������  who����������� ������������������  are����������� ������������������  level����������� ������������������  2����������� ������������������  or����������� ������������������  above����������� ������������������  in����������� ������������������  a����������� ������������������  skill����������� ������������������  (property����������� ������������������  value)����������� ������������������  we����������� ������������������  have����������� ������������������  in����������� ������������������  common����������� ������������������  

•Find����������� ������������������  all����������� ������������������  recent����������� ������������������  orders����������� ������������������  delivered����������� ������������������  to����������� ������������������  the����������� ������������������  same����������� ������������������  delivery����������� ������������������  address����������� ������������������  (complex����������� ������������������  value����������� ������������������  type)

41

Page 42: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

42

HAS_SKILL����������� ������������������  describes����������� ������������������  a����������� ������������������  quality

Page 43: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Use����������� ������������������  Properties

•Use����������� ������������������  a����������� ������������������  property����������� ������������������  on����������� ������������������  a����������� ������������������  node����������� ������������������  when:����������� ������������������  

•There’s����������� ������������������  no����������� ������������������  need����������� ������������������  to����������� ������������������  qualify/weight����������� ������������������  the����������� ������������������  relationship����������� ������������������  

•The����������� ������������������  property����������� ������������������  value����������� ������������������  comprises����������� ������������������  a����������� ������������������  simple����������� ������������������  value����������� ������������������  type����������� ������������������  (e.g.����������� ������������������  color)����������� ������������������  

•Examples:����������� ������������������  

•Find����������� ������������������  those����������� ������������������  projects����������� ������������������  written����������� ������������������  by����������� ������������������  contributors����������� ������������������  to����������� ������������������  my����������� ������������������  projects����������� ������������������  that����������� ������������������  use����������� ������������������  the����������� ������������������  same����������� ������������������  language����������� ������������������  as����������� ������������������  my����������� ������������������  projects

43

Page 44: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

44

Version����������� ������������������  Control����������� ������������������  -����������� ������������������  GitHub����������� ������������������  Projects

Page 45: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

45

Granularity

Page 46: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

General����������� ������������������  Relationships

46

Page 47: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

47

Specific����������� ������������������  Relationships

Page 48: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

General����������� ������������������  &����������� ������������������  Specific

48

Page 49: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Intermediate����������� ������������������  Nodes

Page 50: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Intermediate����������� ������������������  Nodes

•Connect����������� ������������������  more����������� ������������������  than����������� ������������������  2����������� ������������������  nodes����������� ������������������  in����������� ������������������  a����������� ������������������  single����������� ������������������  context����������� ������������������  

•Hyperedges����������� ������������������  (n-ary����������� ������������������  relationships)����������� ������������������  

•Relate����������� ������������������  something����������� ������������������  to����������� ������������������  a����������� ������������������  relationship

50

Page 51: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Intermediate����������� ������������������  Node����������� ������������������  Example

51

Page 52: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Rich����������� ������������������  Context,����������� ������������������  Multiple����������� ������������������  Dimensions

52

Page 53: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Intermediate����������� ������������������  Nodes����������� ������������������  Between����������� ������������������  Contexts

53

Page 54: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Multiple����������� ������������������  Parties

54

Page 55: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Thank����������� ������������������  You

Page 56: GraphConnect 2014 SF: From Zero to Graph in 120: Model

SAN FRANCISCO | 10.22.2014

powered by

Follow����������� ������������������  !

@kennybastani����������� ������������������  ����������� ������������������  !

on����������� ������������������  Twitter