mastering neo4j a graph database

Post on 25-Feb-2016

48 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Mastering Neo4j A Graph Database. Data Masters. Special Thanks To…. Planet Linux Caffe http :// planetlinuxcaffe.com. We now have a sponsor!!. John Jadvani 954-527-0090. Short bio about me… Andrew Simkovsky 15 years working with database technology - PowerPoint PPT Presentation

TRANSCRIPT

Mastering Neo4jA Graph Database

Data Masters

Special Thanks To…

Planet Linux Caffehttp://planetlinuxcaffe.com

We now have a sponsor!!

John Jadvani954-527-0090

Short bio about me… Andrew Simkovsky 15 years working with database technology

Oracle, MySQL/MariaDB, SQL Server, Postgres Redis, MongoDB, CouchDB, Cassandra, Neo4j

Worked across many industries Consulting, Retail, Telecommunications,

Energy Data, Marketing, Gaming, Health care

DBTekPro

www.dbtekpro.com

andrew@dbtekpro.com@asimkovsky

Graph Databases

Graph Databases

What is a graph database? Based on graph theory Data is stored as “nodes”, and

relationships as “edges” Nodes have attributes. Relationships have attributes

Relational vs Graph

Relational Relationships are used to join entities together to get

results Data integrity is enforced through constraints

Graph Relationships are considered data Can easily “walk” from node to node using

relationships Can “walk” the graph in multiple directions in parallel

Relational Model

actor movieactor_movie

1, Keanu Reeves2, Carrie-Ann Moss3, Lawrence Fishburne

actor_idname

movie_idtitlerelease_date

actor_idmovie_idrole

1, The Matrix2, The Matrix Reloaded3, The Matrix Revolutions

1, 1, Neo1, 2, Neo1, 3, Neo2, 1, Trinity2, 2, Trinity2, 3, Trinity3, 1, Morpheus3, 2, Morpheus3, 3, Morpheus

Graph Model

The Matrix

The Matrix 2

The Matrix 3

Keanu Reeves

Carrie-Ann Moss

Lawrence

Fishburne

Graph Model - Detailed

type: Actorname: “Keanu Reeves”

type: Movietitle:

“Matrix” :ACTS_IN

type: Role, role: “Neo”

Node Relationship

Property ValueProperty

Path

Example Graphs

Example Graphs

Example Graphs

Graph Databases – Examples Uses

Social relationships Actor / movie relationships Medicine interactions

Just some of the many possibilities!

CypherA Graph Query Language

Queries

START[MATCH][WITH][WHERE]RETURN

[ORDER BY] [SKIP] [LIMIT]

Starting node(s)

Matching pattern (except properties)

Filter on propertiesProperties to return

Further conditions / calculations

Query Example

START user=node:nodeIndexName(name={“Bob”})MATCH (user)-[:FRIEND]->(friend)WITH user, count(friend) as friendsWHERE friends > 10RETURN friend.nameORDER BY friend.nameLIMIT 100

Query Parts

START user=node:nodeIndexName(name={“Bob”})made-

up identifi

er

object type

node property identifier

index name

property

value

Query Parts

MATCH (user)-[:FRIEND]->(friend)

node node

relationship definition(including direction) Another

made-up identifier

Query Parts

WITH user, count(friend) as friends

grouping node

calculation

alias

Query Parts

WHERE friends > 10

property filter

Query Parts

RETURN friend.nameORDER BY friend.nameLIMIT 100

Query Example – All Together

START user=node:nodeIndexName(name={“Bob”})MATCH (user)-[:FRIEND]->(friend)WITH user, count(friend) as friendsWHERE friends > 10RETURN friend.nameORDER BY friend.nameLIMIT 100

This will return all nodes where they are friends with Bob, and that Bob has more than 10 friends, but limit to the first 100 found.

Query Example – Matching

START user=node:nodeIndexName(name={“Bob”})MATCH (user)-[:FRIEND {since: “2001-01-01”} ]->(friend)RETURN friend.name

Since relationships have properties, we can search on them too!!

Creating Data

CREATE [UNIQUE]*[SET | DELETE | FOREACH]*[RETURN [ORDER BY][SKIP][LIMIT]]

Creating Data - Examples

CREATE (n {name: “Bob”})

made-up identifier

again

property

value

Creating Data - Examples

CREATE (b {name: “Bob”}), (m {name: “Mary”}), (b)-[:KNOWS]->(m)

Creates two nodes with a relationship between them.This is called creating a path.

Creating Data - ExamplesYou can combine queries with create options! This allows you to create parts of the graph starting from a particular node (or nodes)!

START b=node:nodeIndexName(name={“Bob”}), m=node:nodeIndexName(name={“Mary”})MATCH (b)-[:KNOWS]->(m)CREATE (b)-[:LOVES]->(m)

Live Demo!

Where Do I Get It?

www.neo4j.org

Thank You For Coming!

Please rate this Meet Up:www.meetup.com/data-masters

(or go there to join!)Check out my blog and forums:

www.dbtekpro.comAfter Party!!

Miller’s Ale HouseMiracle Mile

top related