Data Modeling with Neo4j

136
Data Modeling with Neo4j 1 Michael Hunger, Neo Technology @neo4j | @mesirii | [email protected]

description

This presentation covers several aspects of modeling data and domains with a graph database like Neo4j. The graph data model allows high fidelity modeling. Using the first class relationships of the graph model allow to use much higher forms of normalization than you would use in a relational database. Video here: https://vimeo.com/67371996

Transcript of Data Modeling with Neo4j

Page 1: Data Modeling with Neo4j

Data Modeling with Neo4j

1

Michael Hunger, Neo Technology@neo4j | @mesirii | [email protected]

Page 2: Data Modeling with Neo4j

(Michael) -[:WORKS_ON]-> (Neo4j)

ME

Spring Cloud

Community

Cypher

console

community graph

Server

2

Page 3: Data Modeling with Neo4j

3

Page 4: Data Modeling with Neo4j

is a

4

Page 5: Data Modeling with Neo4j

5

NOSQL

Page 6: Data Modeling with Neo4j

Graph Database

6

Page 7: Data Modeling with Neo4j

A graph database...

7

Page 8: Data Modeling with Neo4j

A graph database...

7

NO: not for charts & diagrams, or vector artwork

Page 9: Data Modeling with Neo4j

A graph database...

7

NO: not for charts & diagrams, or vector artwork

YES: for storing data that is structured as a graph

Page 10: Data Modeling with Neo4j

A graph database...

7

NO: not for charts & diagrams, or vector artwork

YES: for storing data that is structured as a graph

remember linked lists, trees?

Page 11: Data Modeling with Neo4j

A graph database...

7

NO: not for charts & diagrams, or vector artwork

YES: for storing data that is structured as a graph

remember linked lists, trees?

graphs are the general-purpose data structure

Page 12: Data Modeling with Neo4j

A graph database...

7

NO: not for charts & diagrams, or vector artwork

YES: for storing data that is structured as a graph

remember linked lists, trees?

graphs are the general-purpose data structure

“A relational database may tell you the average age of everyone in this place,

but a graph database will tell you who is most likely to buy you a beer.”

Page 13: Data Modeling with Neo4j

8

Page 14: Data Modeling with Neo4j

You know relational

8

Page 15: Data Modeling with Neo4j

You know relational

8

Page 16: Data Modeling with Neo4j

You know relational

8

foo

Page 17: Data Modeling with Neo4j

You know relational

8

foo bar

Page 18: Data Modeling with Neo4j

You know relational

8

foo barfoo_bar

Page 19: Data Modeling with Neo4j

You know relational

8

foo barfoo_bar

Page 20: Data Modeling with Neo4j

You know relational

8

foo barfoo_bar

Page 21: Data Modeling with Neo4j

You know relational

8

foo barfoo_bar

Page 22: Data Modeling with Neo4j

You know relational

8

now consider relationships...

Page 23: Data Modeling with Neo4j

You know relational

8

now consider relationships...

Page 24: Data Modeling with Neo4j

You know relational

8

now consider relationships...

Page 25: Data Modeling with Neo4j

You know relational

8

now consider relationships...

Page 26: Data Modeling with Neo4j

You know relational

8

now consider relationships...

Page 27: Data Modeling with Neo4j

You know relational

8

now consider relationships...

Page 28: Data Modeling with Neo4j

8

Page 29: Data Modeling with Neo4j

9

Page 30: Data Modeling with Neo4j

We're talking about aProperty Graph

9

Page 31: Data Modeling with Neo4j

We're talking about aProperty Graph

9

Nodes

Page 32: Data Modeling with Neo4j

We're talking about aProperty Graph

9

Nodes

Relationships

Page 33: Data Modeling with Neo4j

Emil

Andrés

Lars

Johan

Allison

Peter

Michael

Tobias

Andreas

IanMica

Delia

knows

knows

knowsknows

knows

knows

knows

knows

knows

knowsMica

knowsknowsMica

Delia

knows

We're talking about aProperty Graph

9

Nodes

Relationships

Properties (each a key+value)

Page 34: Data Modeling with Neo4j

Emil

Andrés

Lars

Johan

Allison

Peter

Michael

Tobias

Andreas

IanMica

Delia

knows

knows

knowsknows

knows

knows

knows

knows

knows

knowsMica

knowsknowsMica

Delia

knows

We're talking about aProperty Graph

9

Nodes

Relationships

Properties (each a key+value)

+ Indexes (for easy look-ups)

Page 35: Data Modeling with Neo4j

Aggregate vs. Connected Data-Model

10

Page 36: Data Modeling with Neo4j

NOSQL

RelationalGraph

Document

KeyValue

Riak

Column oriented

11

Redis

Cassandra

Mongo

Couch

Neo4j

MySQL Postgres

NOSQL Databases

Page 37: Data Modeling with Neo4j

12

“There is a significant downside - the whole approach works really well when data access is aligned with the aggregates, but what if you want to look at the data in a different way? Order entry naturally stores orders as aggregates, but analyzing product sales cuts across the aggregate structure. The advantage of not using an aggregate structure in the database is that it allows you to slice and dice your data different ways for different audiences.

This is why aggregate-oriented stores talk so much about map-reduce.”

Martin Fowler

Aggregate Oriented Model

Page 38: Data Modeling with Neo4j

13

The connected data model is based on fine grained elements that are richly connected, the emphasis is on extracting many

dimensions and attributes as elements. Connections are cheap and can be used not only for the

domain-level relationships but also for additional structures that allow efficient access for different use-cases. The fine

grained model requires a external scope for mutating operations that ensures Atomicity, Consistency, Isolation and

Durability - ACID also known as Transactions.

Michael Hunger

Connected Data Model

Page 39: Data Modeling with Neo4j

Data Modeling

14

Page 40: Data Modeling with Neo4j

Why Data Modeling

15

๏What is modeling?

๏Aren‘t we schema free?

๏How does it work in a graph?

๏Where should modeling happen? DB or Application

Page 41: Data Modeling with Neo4j

Data Models

16

Page 42: Data Modeling with Neo4j

Model mis-match

Real World Model

Page 43: Data Modeling with Neo4j

Model mis-match

Application Model Database Model

Page 44: Data Modeling with Neo4j

Trinity of models

Page 45: Data Modeling with Neo4j

Whiteboard --> Data

20

Page 46: Data Modeling with Neo4j

Whiteboard --> Data

20

Andreas Peter

Emil

Allison

Page 47: Data Modeling with Neo4j

Whiteboard --> Data

20

Andreas Peter

Emil

Allison

knows

knows knows

knows

Page 48: Data Modeling with Neo4j

Whiteboard --> Data

20

Andreas Peter

Emil

Allison

knows

knows knows

knows

Page 49: Data Modeling with Neo4j

Whiteboard --> Data

20

Andreas Peter

Emil

Allison

knows

knows knows

knows

// Cypher query - friend of a friendstart n=node(0)match (n)--()--(foaf) return foaf

Page 50: Data Modeling with Neo4j

21

Page 51: Data Modeling with Neo4j

You traverse the graph

21

Page 52: Data Modeling with Neo4j

You traverse the graph

21

Page 53: Data Modeling with Neo4j

// lookup starting point in an indexSTART n=node:People(name = ‘Andreas’)

Andreas

You traverse the graph

21

Page 54: Data Modeling with Neo4j

// lookup starting point in an indexSTART n=node:People(name = ‘Andreas’)

Andreas

You traverse the graph

21

// then traverse to find resultsSTART me=node:People(name = ‘Andreas’MATCH (me)-[:FRIEND]-(friend)-[:FRIEND]-(friend2) RETURN friend2

Page 55: Data Modeling with Neo4j

21

Page 56: Data Modeling with Neo4j

SELECT skills.*, user_skill.* FROM users JOIN user_skill ON users.id = user_skill.user_id JOIN skills ON user_skill.skill_id = skill.id WHERE users.id = 1

22

START user = node(1) MATCH user -[user_skill]-> skill RETURN skill, user_skill

Page 57: Data Modeling with Neo4j

An Example

23

Page 58: Data Modeling with Neo4j

What language do they speak here?

Language Country

Page 59: Data Modeling with Neo4j

What language do they speak here?

Language Country

Page 60: Data Modeling with Neo4j

What language do they speak here?

Language Country

Page 61: Data Modeling with Neo4j

Tables

language_codelanguage_nameword_count

Languagecountry_codecountry_nameflag_uri

Country

Page 62: Data Modeling with Neo4j

Need to model the relationship

language_codelanguage_nameword_count

Languagecountry_codecountry_nameflag_urilanguage_code

Country

Page 63: Data Modeling with Neo4j

What if the cardinality changes?

language_codelanguage_nameword_countcountry_code

Languagecountry_codecountry_nameflag_uri

Country

Page 64: Data Modeling with Neo4j

Or we go many-to-many?

language_codelanguage_nameword_count

Languagecountry_codecountry_nameflag_uri

Countrylanguage_codecountry_code

LanguageCountry

Page 65: Data Modeling with Neo4j

Or we want to qualify the relationship?

language_codelanguage_nameword_count

Languagecountry_codecountry_nameflag_uri

Countrylanguage_codecountry_codeprimary

LanguageCountry

Page 66: Data Modeling with Neo4j

Start talking about Graphs

Page 67: Data Modeling with Neo4j

Explicit Relationship

nameword_count

Languagenameflag_uri

Country

IS_SPOKEN_IN

Page 68: Data Modeling with Neo4j

Relationship Properties

nameword_count

Languagenameflag_uri

Country

IS_SPOKEN_INas_primary

Page 69: Data Modeling with Neo4j

What’s different?

language_codelanguage_nameword_count

Languagecountry_codecountry_nameflag_uri

Countrylanguage_codecountry_codeprimary

LanguageCountryIS_SPOKEN_IN

Page 70: Data Modeling with Neo4j

What’s different?๏ Implementation of maintaining relationships is left up

to the database๏ Artificial keys disappear or are unnecessary๏ Relationships get an explicit name

• can be navigated in both directions

Page 71: Data Modeling with Neo4j

Relationship specialisation

nameword_count

Languagenameflag_uri

Country

IS_SPOKEN_INas_primary

Page 72: Data Modeling with Neo4j

Bidirectional relationships

nameword_count

Languagenameflag_uri

Country

IS_SPOKEN_IN

PRIMARY_LANGUAGE

Page 73: Data Modeling with Neo4j

Weighted relationships

nameword_count

Languagenameflag_uri

Country

POPULATION_SPEAKSpopulation_fraction

Page 74: Data Modeling with Neo4j

Keep on adding relationships

nameword_count

Languagenameflag_uri

Country

POPULATION_SPEAKSpopulation_fraction

SIMILAR_TO ADJACENT_TO

Page 75: Data Modeling with Neo4j

EMBRACE the paradigm

Page 76: Data Modeling with Neo4j

Use the building blocks๏ Nodes

๏ Relationships

๏ Properties name: value

RELATIONSHIP_NAME

Page 77: Data Modeling with Neo4j

Anti-pattern: rich properties

name: “Canada”languages_spoken: “[ ‘English’, ‘French’ ]”

Page 78: Data Modeling with Neo4j

Normalize Nodes

Page 79: Data Modeling with Neo4j

Anti-Pattern: Node represents multiple concepts

nameflag_urilanguage_namenumber_of_wordsyes_in_languageno_in_languagecurrency_codecurrency_name

Country

Page 80: Data Modeling with Neo4j

USES_CURRENCY

Split up in separate concepts

nameflag_uricurrency_codecurrency_name

Countrynamenumber_of_wordsyesno

Country

SPEAKS

Currencycurrency_codecurrency_name

Page 81: Data Modeling with Neo4j

Challenge: Property or Relationship?

๏ Can every property be replaced by a relationship?• Hint: triple stores. Are they easy to use?

๏ Should every entities with the same property values be connected?

Page 82: Data Modeling with Neo4j

Object Mapping๏ Similar to how you would map objects to a relational

database, using an ORM such as Hibernate๏ Generally simpler and easier to reason about๏ Examples

• Java: Spring Data Neo4j• Ruby: Active Model

๏ Why Map?• Do you use mapping because you are scared of SQL?• Following DDD, could you write your repositories

directly against the graph API?

Page 83: Data Modeling with Neo4j

CONNECT for fast accessIn-Graph Indices

Page 84: Data Modeling with Neo4j

Relationships for querying๏ like in other databases

• same structure for different use-cases (OLTP and OLAP) doesn‘t work

• graph allows: add more structures๏ Relationships should the primary means to access

nodes in the database๏ Traversing relationships is cheap – that’s the whole

design goal of a graph database๏ Use lookups only to find starting nodes for a query

Data Modeling examples in Manual

Page 85: Data Modeling with Neo4j

Anti-pattern: unconnected graph

name: “Jones” name: “Jones”

name: “Jones”

name: “Jones”name: “Jones”

name: “Jones”

name: “Jones” name: “Jones”

name: “Jones”

name: “Jones”

name: “Jones”

Page 86: Data Modeling with Neo4j

Pattern: Linked List

52

Page 87: Data Modeling with Neo4j

Pattern: Multiple Relationships

53

Page 88: Data Modeling with Neo4j

Pattern-Trees: Tags and Categories

54

Page 89: Data Modeling with Neo4j

Pattern-Tree: Multi-Level-Tree

55

Page 90: Data Modeling with Neo4j

Pattern-Trees: R-Tree (spatial)

56

Page 91: Data Modeling with Neo4j

Example: Activity Stream

57

Page 92: Data Modeling with Neo4j

Graph Evolution

58

Page 94: Data Modeling with Neo4j

Combine multiple Domains in a Graph๏ you start with a single domain๏ add more connected domains as your system evolves๏ more domains allow to ask different queries๏ one domain „indexes“ the other๏ Example Facebook Graph Search

• social graph• location graph• activity graph• favorite graph• ...

Page 95: Data Modeling with Neo4j

Notes on the Graph Data Model๏Schema free, but constraints

๏Model your graph with a whiteboard and a wise man

๏Nodes as main entities but useless without connections

๏Relationships are first level citizens in the model and database

๏Normalize more than in a relational database

๏use meaningful relationship-types, not generic ones like IS_

๏use in-graph structures to allow different access paths

๏evolve your graph to your needs, incremental growth

61

Page 96: Data Modeling with Neo4j

Realworld Examples

62

Page 97: Data Modeling with Neo4j

63

Page 98: Data Modeling with Neo4j

63

Real World Use Cases:

Page 99: Data Modeling with Neo4j

63

Real World Use Cases:

•[A] ACL from Hell

Page 100: Data Modeling with Neo4j

63

Real World Use Cases:

•[A] ACL from Hell

•[B] Timely recommendations

Page 101: Data Modeling with Neo4j

63

Real World Use Cases:

•[A] ACL from Hell

•[B] Timely recommendations

•[C] Global collaboration

Page 102: Data Modeling with Neo4j

[A] ACL from Hell

64

Page 103: Data Modeling with Neo4j

[A] ACL from Hell๏ Customer:

• leading consumer utility company with tons and tons of users

๏ Goal:

• comprehensive access control administration for customers

๏ Benefits:

• Flexible and dynamic architecture

• Exceptional performance

• Extensible data model supports new applications and features

• Low cost

64

Page 104: Data Modeling with Neo4j

[A] ACL from Hell๏ Customer:

• leading consumer utility company with tons and tons of users

๏ Goal:

• comprehensive access control administration for customers

๏ Benefits:

• Flexible and dynamic architecture

• Exceptional performance

• Extensible data model supports new applications and features

• Low cost

64

• A Reliable access control administration system for

5 million customers, subscriptions and agreements

• Complex dependencies between groups, companies, individuals, accounts, products, subscriptions, services and agreements

• Broad and deep graphs (master customers with 1000s of customers, subscriptions & agreements)

Page 105: Data Modeling with Neo4j

[A] ACL from Hell๏ Customer:

• leading consumer utility company with tons and tons of users

๏ Goal:

• comprehensive access control administration for customers

๏ Benefits:

• Flexible and dynamic architecture

• Exceptional performance

• Extensible data model supports new applications and features

• Low cost

64

• A Reliable access control administration system for

5 million customers, subscriptions and agreements

• Complex dependencies between groups, companies, individuals, accounts, products, subscriptions, services and agreements

• Broad and deep graphs (master customers with 1000s of customers, subscriptions & agreements)

name: Andreas

subscription: sports

service: NFL

account: 9758352794

agreement: ultimate

owns

subscribes to

has plan

includes

provides group: graphistas

promotion: fall

member of

offered

discounts

company: Neo Technologyworks with

gets discount on

subscription: local

subscribes to

provides service: Ravens

includes

Page 106: Data Modeling with Neo4j

[B] Timely Recommendations

65

Page 107: Data Modeling with Neo4j

[B] Timely Recommendations๏ Customer:

• a professional social network

• 35 millions users, adding 30,000+ each day

๏ Goal: up-to-date recommendations

• Scalable solution with real-time end-user experience

• Low maintenance and reliable architecture

• 8-week implementation

65

Page 108: Data Modeling with Neo4j

[B] Timely Recommendations๏ Customer:

• a professional social network

• 35 millions users, adding 30,000+ each day

๏ Goal: up-to-date recommendations

• Scalable solution with real-time end-user experience

• Low maintenance and reliable architecture

• 8-week implementation

65

๏ Problem:

• Real-time recommendation imperative to attract new users and maintain positive user retention

• Clustered MySQL solution not scalable or fast enough to support real-time requirements

๏ Upgrade from running a batch job

• initial hour-long batch job

• but then success happened, and it became a day

• then two days

๏ With Neo4j, real time recommendations

Page 109: Data Modeling with Neo4j

[B] Timely Recommendations๏ Customer:

• a professional social network

• 35 millions users, adding 30,000+ each day

๏ Goal: up-to-date recommendations

• Scalable solution with real-time end-user experience

• Low maintenance and reliable architecture

• 8-week implementation

65

๏ Problem:

• Real-time recommendation imperative to attract new users and maintain positive user retention

• Clustered MySQL solution not scalable or fast enough to support real-time requirements

๏ Upgrade from running a batch job

• initial hour-long batch job

• but then success happened, and it became a day

• then two days

๏ With Neo4j, real time recommendations

name:Andreasjob: talking

name: Allisonjob: plumber

name: Tobiasjob: coding

knows

knows

name: Peterjob: building

name: Emiljob: plumber

knows

name: Stephenjob: DJ

knows

knows

name: Deliajob: barking

knows

knows

name: Tiberiusjob: dancer

knows

knows

knows

knows

Page 110: Data Modeling with Neo4j

[C] Collaboration on Global Scale

66

Page 111: Data Modeling with Neo4j

[C] Collaboration on Global Scale๏ Customer: a worldwide software leader

• highly collaborative end-users

๏ Goal: offer an online platform for global collaboration

• Highly flexible data analysis

• Sub-second results for large, densely-connected data

• User experience - competitive advantage

66

Page 112: Data Modeling with Neo4j

[C] Collaboration on Global Scale๏ Customer: a worldwide software leader

• highly collaborative end-users

๏ Goal: offer an online platform for global collaboration

• Highly flexible data analysis

• Sub-second results for large, densely-connected data

• User experience - competitive advantage

66

• Massive amounts of data tied to members, user groups, member content, etc. all interconnected

• Infer collaborative relationships through user-generated content

• Worldwide Availability

Page 113: Data Modeling with Neo4j

[C] Collaboration on Global Scale๏ Customer: a worldwide software leader

• highly collaborative end-users

๏ Goal: offer an online platform for global collaboration

• Highly flexible data analysis

• Sub-second results for large, densely-connected data

• User experience - competitive advantage

66

• Massive amounts of data tied to members, user groups, member content, etc. all interconnected

• Infer collaborative relationships through user-generated content

• Worldwide Availability

Asia North America Europe

Page 114: Data Modeling with Neo4j

[C] Collaboration on Global Scale๏ Customer: a worldwide software leader

• highly collaborative end-users

๏ Goal: offer an online platform for global collaboration

• Highly flexible data analysis

• Sub-second results for large, densely-connected data

• User experience - competitive advantage

66

• Massive amounts of data tied to members, user groups, member content, etc. all interconnected

• Infer collaborative relationships through user-generated content

• Worldwide Availability

Asia North America Europe

Asia North America Europe

Page 115: Data Modeling with Neo4j

How to get started?

67

Page 116: Data Modeling with Neo4j

How to get started?๏ Documentation

67

Page 117: Data Modeling with Neo4j

How to get started?๏ Documentation

• neo4j.org

67

Page 118: Data Modeling with Neo4j

How to get started?๏ Documentation

• neo4j.org

67

Page 119: Data Modeling with Neo4j

How to get started?๏ Documentation

• neo4j.org

‣http://www.neo4j.org/learn/nosql

67

Page 120: Data Modeling with Neo4j

How to get started?๏ Documentation

• neo4j.org

‣http://www.neo4j.org/learn/nosql

67

Page 121: Data Modeling with Neo4j

How to get started?๏ Documentation

• neo4j.org

‣http://www.neo4j.org/learn/nosql

• docs.neo4j.org - tutorials+reference

67

Page 122: Data Modeling with Neo4j

How to get started?๏ Documentation

• neo4j.org

‣http://www.neo4j.org/learn/nosql

• docs.neo4j.org - tutorials+reference

67

Page 123: Data Modeling with Neo4j

How to get started?๏ Documentation

• neo4j.org

‣http://www.neo4j.org/learn/nosql

• docs.neo4j.org - tutorials+reference

‣Data Modeling Examples

67

Page 124: Data Modeling with Neo4j

How to get started?๏ Documentation

• neo4j.org

‣http://www.neo4j.org/learn/nosql

• docs.neo4j.org - tutorials+reference

‣Data Modeling Examples

• http://console.neo4j.org

67

Page 125: Data Modeling with Neo4j

How to get started?๏ Documentation

• neo4j.org

‣http://www.neo4j.org/learn/nosql

• docs.neo4j.org - tutorials+reference

‣Data Modeling Examples

• http://console.neo4j.org

67

Page 126: Data Modeling with Neo4j

How to get started?๏ Documentation

• neo4j.org

‣http://www.neo4j.org/learn/nosql

• docs.neo4j.org - tutorials+reference

‣Data Modeling Examples

• http://console.neo4j.org

• Neo4j in Action

67

Page 127: Data Modeling with Neo4j

How to get started?๏ Documentation

• neo4j.org

‣http://www.neo4j.org/learn/nosql

• docs.neo4j.org - tutorials+reference

‣Data Modeling Examples

• http://console.neo4j.org

• Neo4j in Action

67

Page 128: Data Modeling with Neo4j

How to get started?๏ Documentation

• neo4j.org

‣http://www.neo4j.org/learn/nosql

• docs.neo4j.org - tutorials+reference

‣Data Modeling Examples

• http://console.neo4j.org

• Neo4j in Action

• Good Relationships

67

Page 129: Data Modeling with Neo4j

How to get started?๏ Documentation

• neo4j.org

‣http://www.neo4j.org/learn/nosql

• docs.neo4j.org - tutorials+reference

‣Data Modeling Examples

• http://console.neo4j.org

• Neo4j in Action

• Good Relationships

๏ Worldwide one-day Neo4j Trainings

67

Page 130: Data Modeling with Neo4j

How to get started?๏ Documentation

• neo4j.org

‣http://www.neo4j.org/learn/nosql

• docs.neo4j.org - tutorials+reference

‣Data Modeling Examples

• http://console.neo4j.org

• Neo4j in Action

• Good Relationships

๏ Worldwide one-day Neo4j Trainings

๏ Get Neo4j

67

Page 131: Data Modeling with Neo4j

How to get started?๏ Documentation

• neo4j.org

‣http://www.neo4j.org/learn/nosql

• docs.neo4j.org - tutorials+reference

‣Data Modeling Examples

• http://console.neo4j.org

• Neo4j in Action

• Good Relationships

๏ Worldwide one-day Neo4j Trainings

๏ Get Neo4j

• http://neo4j.org/download

67

Page 132: Data Modeling with Neo4j

How to get started?๏ Documentation

• neo4j.org

‣http://www.neo4j.org/learn/nosql

• docs.neo4j.org - tutorials+reference

‣Data Modeling Examples

• http://console.neo4j.org

• Neo4j in Action

• Good Relationships

๏ Worldwide one-day Neo4j Trainings

๏ Get Neo4j

• http://neo4j.org/download

• http://addons.heroku.com/neo4j/

67

Page 133: Data Modeling with Neo4j

68

Page 134: Data Modeling with Neo4j

68

Really, once you start thinking in graphs it's hard to stop

Recommendations MDM

Systems Management

Geospatial

Social computing

Business intelligence

Biotechnology

Making Sense of all that data

your brainaccess control

linguistics

catalogs

genealogy routing

compensation market vectors

Page 135: Data Modeling with Neo4j

68

Really, once you start thinking in graphs it's hard to stop

Recommendations MDM

Systems Management

Geospatial

Social computing

Business intelligence

Biotechnology

Making Sense of all that data

your brainaccess control

linguistics

catalogs

genealogy routing

compensation market vectors

What will you build?

Page 136: Data Modeling with Neo4j

Thank You!Questions ?

69