SlideShare a Scribd company logo
1 of 81
Download to read offline
Introduction in Graph
Databases and Neo4j
most slides from:
Stefan Armbruster
Michael Hunger
@darthvader42
stefan.armbruster@neotechnology.com

1
1
The Path Forward
1.No .. NO .. NOSQL
2.Why graphs?
3.What's a graph database?
4.Some things about Neo4j.
5.How do people use Neo4j?
2
Trends in BigData & NOSQL
1. increasing data size (big data)

• “Every 2 days we create as much information as we did up to 2003”
- Eric Schmidt

2. increasingly connected data (graph data)

• for example, text documents to html
3. semi-structured data

• individualization of data, with common sub-set
4. architecture - a facade over multiple services

• from monolithic to modular, distributed applications
3
What is NOSQL?
It’s not “No to SQL”
It’s not “Never SQL”

It’s “Not

Only SQL”

NOSQL no-seek-wool n. Describes
ongoing trend where developers
increasingly opt for non-relational
databases
to
help
solve
their
problems, in an effort to use the right
tool for the right job.
4
4
NOSQL

5
5
6
7
http://www.flickr.com/photos/crazyneighborlady/355232758/
8
http://gallery.nen.gov.uk/image82582-.html
9
http://www.xtranormal.com/watch/6995033/mongo-db-is-web-scale
NOSQL Databases

1
0
Living in a NOSQL World
Density ~= Complexity

Graph
Databases
RDBMS

Document
Databases

Column
Family
Key-Value
Store

Volume ~= Size

1
1
1
1
complexity = f(size, connectedness, uniformity)

1
2
Patrik Runald @patrikrunald 3 Nov
“@mgonto: The best explanation about what BigData is. Hilarious: pic.twitter.com/d8ZVP7xJFu

1
3
1
4
A Graph?
Yes, a graph
1
5
Leonhard Euler 1707-1783

1
6
1
7
They are everywhere

1
8
They are everywhere

http://www.bbc.co.uk/london/travel/downloads/tube_map.html

1
9
Graphs Everywhere
๏ Relationships in

• Politics, Economics, History, Science, Transportation

๏ Biology, Chemistry, Physics, Sociology

• Body, Ecosphere, Reaction, Interactions

๏ Internet

• Hardware, Software, Interaction

๏ Social Networks

• Family, Friends
• Work, Communities
• Neighbours, Cities, Society

2
0
Good Relationships
๏ the world is rich, messy and related data
๏ relationships are as least as important as the things they connect
๏ Graphs

= Whole > Σ parts

๏ complex interactions
๏ always changing, change of structures as well
๏ Graph: Relationships are part of the data
๏ RDBMS: Relationships part of the fixed schema

2
1
Everyone is talking about graphs...

2
7
Everyone is talking about graphs...

2
8
Graph DB 101

3
1
A graph database...
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 session,
but a graph database will tell you who is most likely to buy you a
beer.”

3
3
2
2
You know relational

foo

foo_bar

bar
3
3
3
3
now consider relationships...

foo

foo_bar

bar

3
3
4
4
We're talking about a
Property Graph

Properties (each a key+value)
+ Indexes (for easy look-ups)
+ Labels (Neo4j 2.0)

3
3
5
5
Looks different, fine. Who cares?
๏ a sample social graph

• with ~1,000 persons

๏ average 50 friends per person
๏ pathExists(a,b) limited to depth 4
๏ caches warmed up to eliminate disk I/O
# persons

query time

Relational database

1.000

2000ms

Neo4j

1.000

2ms

Neo4j

1.000.000

2ms
3
3
6
6
Graph Database: Pros & Cons
๏ Strengths

• Powerful data model, as general as RDBMS
• Fast, for connected data
• Easy to query

๏ Weaknesses:

• Sharding (though they can scale reasonably well)
‣also, stay tuned for developments here

• Requires conceptual shift

‣though graph-like thinking becomes addictive
3
3
7
7
And, but, so how do you
query this "graph"
database?

3
3
8
8
Query a graph with a traversal
// lookup starting point in an index
then traverse to find results
start n=node:People(name = ‘Andreas’)
match (n)--()--(foaf) return foaf

3
3
9
9
Modeling for graphs

4
4
0
0
4
4
1
1
Adam
SHARED

FRIEND_OF

LOL Cat

LIKES

ON

FUNNY

Sarah

COMMENTED

4
4
2
2
Neo4j 2.0:
Lables

Person

Adam

SHARED

FRIEND_OF

Photo

LOL Cat

LIKES
Person

ON

FUNNY

Sarah

COMMENTED

4
3
Adam
SHARED

FRIEND_OF

LOL Cat

LIKES

ON

FUNNY

Sarah

COMMENTED

4
4
Neo4j - the Graph Database

4
5
4
6
(Neo4j) -[:IS_A]-> (Graph Database)

HIG
H

_AV
AIL

.

TRAVERSA
LS

HA

T
IN

S
TE
RA
EG

PROVIDES

SCAL
ES_T
O

EN
SE
D

_L
IK
E

ON

RU
NS
_A

LIC
_
NS
RU

S

RUN
S_AS

4
7
Neo4j is a Graph Database
๏ A Graph Database:

• a schema-free Property Graph
• perfect for complex, highly connected data

๏ A Graph Database:

• reliable with real ACID Transactions
• fast with more than 1M traversals / second
• Server with REST API, or Embeddable on the JVM
• scale out for higher-performance reads with High-Availability
4
8
Whiteboard --> Data
Andre
as

knows

knows

Peter

knows

Emil

knows

Alliso
n

// Cypher query - friend of a friend
start n=node(0)
match (n)--()--(foaf)
return foaf
4
9
Two Ways to Work with Neo4j
๏ 1. Embeddable on JVM

• Java, JRuby, Scala...
• Tomcat, Rails, Akka, etc.
• great for testing

5
0
Show me some code, please
GraphDatabaseService graphDb =
new EmbeddedGraphDatabase(“var/neo4j”);
Transaction tx = graphDb.beginTx();
try {
Node steve = graphDb.createNode();
Node michael = graphDb.createNode();
steve.setProperty(“name”, “Steve Vinoski”);
michael.setProperty(“name”, “Michael Hunger”);
Relationship presentedWith = steve.createRelationshipTo(
michael, PresentationTypes.PRESENTED_WITH);
presentedWith.setProperty(“date”, today);
tx.success();
} finally {
tx.finish();
}
Spring Data Neo4j
@NodeEntity
public class Movie {
@Indexed private String title;
@RelatedToVia(type = “ACTS_IN”, direction=INCOMING)
private Set<Role> cast;
private Director director;
}
@NodeEntity
public class Actor {
@RelatedTo(type = “ACTS_IN”)
private Set<Movies> movies;
}
@RelationshipEntity
public class Role {
@StartNode private Actor actor;
@EndNode private Movie movie;
private String roleName;
}
Cypher Query Language
๏ Declarative query language

• Describe what you want, not how
• Based on pattern matching

๏ Examples:
START david=node:people(name=”David”) # index lookup
MATCH david-[:knows]-friends-[:knows]-new_friends
WHERE new_friends.age > 18
RETURN new_friends
START user=node(5, 15, 26, 28) # node IDs
MATCH user--friend
RETURN user, COUNT(friend), SUM(friend.money)

5
4
Create Graph with Cypher

CREATE
(steve {name: “Steve Vinoski”})
-[:PRESENTED_WITH {date:{day}}]->
(michael {name: “Michael Hunger”})
Two Ways to Work with Neo4j
๏ 2. Server with REST API

• every language on the planet
• flexible deployment scenarios
• DIY server, or cloud managed

5
6
Bindings
REST://

5
7
Two Ways to Work with Neo4j
๏ Server capability == Embedded capability

• same scalability, transactionality, and availability

5
8
the Real World

5
9
Industry: Communications

Use case: Recommendations

San Jose, CA

Cisco.com

Knowledg
Knowledg
e
e
Base
Base
Article
Article
Support
Support
Case
Case

• Cisco.com serves customer and business customers with
Support Services
• Needed real-time recommendations, to encourage use of
online knowledge base
• Cisco had been successfully using Neo4j for its internal
master data management solution.
• Identified a strong fit for online recommendations

Knowledg
Knowledg
e
e
Base
Base
Article
Article

Support
Support
Case
Case

Solution
Solution
Knowledg
Knowledg
e
e
Base
Base
Article
Article

Message
Message

• Call center volumes needed to be lowered by improving

• Cases, solutions, articles, etc. continuously scraped for

the efficacy of online self service
• Leverage large amounts of knowledge stored in service
cases, solutions, articles, forums, etc.
• Problem resolution times, as well as support costs, needed
to be lowered

cross-reference links, and represented in Neo4j
• Real-time reading recommendations via Neo4j
• Neo4j Enterprise with HA cluster
• The result: customers obtain help faster, with decreased
reliance on customer support
Industry: Communications

Use case: Master Data Management

San Jose, CA

Cisco HMP

• One of the world’s largest communications equipment
manufacturers#91 Global 2000. $44B in annual sales.
• Needed a system that could accommodate its master
data hierarchies in a performant way
• HMP is a Master Data Management system at whose
heart is Neo4j. Data access services available 24x7 to
applications companywide

• Sales compensation system had become unable to meet

• Cisco created a new system: the Hierarchy Management

Cisco’s needs
• Existing Oracle RAC system had reached its limits:
• Insufficient flexibility for handling complex
organizational hierarchies and mappings
• “Real-time” queries were taking > 1 minute!
• Business-critical “P1” system needs to be continually
available, with zero downtime

Platform (HMP)
• Allows Cisco to manage master data centrally, and centralize
data access and business rules
• Neo4j provided “Minutes to Milliseconds” performance over
Oracle RAC, serving master data in real time
• The graph database model provided exactly the flexibility
needed to support Cisco’s business rules
• HMP so successful that it has expanded to
include product hierarchy
Industry: Logistics

Use case: Parcel Routing

• One of the world’s largest logistics carriers
• Projected to outgrow capacity of old system
• New parcel routing system
• Single source of truth for entire network
• B2C & B2B parcel tracking
• Real-time routing: up to 5M parcels per day

• 24x7 availability, year round
• Peak loads of 2500+ parcels per second
• Complex and diverse software stack
• Need predictable performance & linear scalability
• Daily changes to logistics network: route from any point,
to any point

• Neo4j provides the ideal domain fit:
• a logistics network is a graph
• Extreme availability & performance with Neo4j clustering
• Hugely simplified queries, vs. relational for complex routing
• Flexible data model can reflect real-world data variance much
better than relational
• “Whiteboard friendly” model easy to understand
Industry: Online Job Search

Use case: Social / Recommendations

Sausalito, CA

GlassDoor

S_AT
WORK

• Online jobs and career community, providing anonymized

Company
Company

Person
Person

Person
Person

WS
KNO

KN
OW
S

inside information to job seekers

KN
OW
S

Person
Person

WORKS_AT

Company
Company

• Wanted to leverage known fact that most jobs are found

• First-to-market with a product that let users find jobs through

through personal & professional connections
• Needed to rely on an existing source of social network
data. Facebook was the ideal choice.
• End users needed to get instant gratification
• Aiming to have the best job search service, in a very
competitive market

their network of Facebook friends
• Job recommendations served real-time from Neo4j
• Individual Facebook graphs imported real-time into Neo4j
• Glassdoor now stores > 50% of the entire Facebook social
graph
• Neo4j cluster has grown seamlessly, with new instances being
brought online as graph size and load have increased
Industry: Communications

Use case: Network Management

Paris, France

SFR

Service
Service
ON
S_
ND
PE
DE

ND
S_O
N
DEP
E

S_ON
LIN
KE
D

Router
Router

LINKED

Switch
Switch

DEP
E

N
DS_O

Switch
Switch

N
DEPE

D

DEPENDS_ON

DS
_O
N

D
DEPEN

Router
Router
KE
LIN

• Second largest communications company in France
• Part of Vivendi Group, partnering with Vodafone

DE
PE
N

ND
S_O

N

DEPENDS_ON
DEPENDS_ON

Fiber
Fiber
Link
Link

Fiber
Fiber
Link
Link

DEPENDS_ON

Fiber
Fiber
Link
Link

DEPENDS_ON

Oceanfloor
Oceanfloor
Cable
Cable

• Infrastructure maintenance took one full week to plan,

• Flexible network inventory management system, to support

because of the need to model network impacts
• Needed rapid, automated “what if” analysis to ensure
resilience during unplanned network outagesIdentify
weaknesses in the network to uncover the need for
additional redundancy
• Network information spread across > 30 systems, with
daily changes to network infrastructureBusiness needs
sometimes changed very rapidly

modeling, aggregation & troubleshooting
• Single source of truth (Neo4j) representing the entire network
• Dynamic system loads data from 30+ systems, and allows new
applications to access network data
• Modeling efforts greatly reduced because of the near 1:1
mapping between the real world and the graph
• Flexible schema highly adaptable to changing business
requirements
Industry: Web/ISV, Communications

Use case: Network Management

Global (U.S., France)

Hewlett Packard

• World’s largest provider of IT infrastructure, software &
services
• HP’s Unified Correlation Analyzer (UCA) application is a
key application inside HP’s OSS Assurance portfolio
• Carrier-class resource & service management, problem
determination, root cause & service impact analysis
• Helps communications operators manage large, complex
and fast changing networks

• Use network topology information to identify root
problems causes on the network
• Simplify alarm handling by human operators
• Automate handling of certain types of alarms
• Help operators respond rapidly to network issues
• Filter/group/eliminate redundant Network Management
System alarms by event correlation

• Accelerated product development time
• Extremely fast querying of network topology
• Graph representation a perfect domain fit
• 24x7 carrier-grade reliability with Neo4j HA clustering
• Met objective in under 6 months
Industry: Communications

Use case: Resource Authorization & Access Control

Oslo, Norway

Telenor

User
User
USER_ACCESS

Customer
Customer

• 10th largest Telco provider in the world, leading in the
Nordics
• Online self-serve system where large business admins
manage employee subscriptions and plans
• Mission-critical system whose availability and
responsiveness is critical to customer satisfaction

PART_OF

Customer
Customer
CONTROLLED_BY

Account
Account
SUBSCRIBED_BY

Subscripti
Subscripti
on
on

• Degrading relational performance. User login taking
minutes while system retrieved access rights
• Millions of plans, customers, admins, groups.
Highly interconnected data set w/massive joins
• Nightly batch workaround solved the performance
problem, but meant data was no longer current
• Primary system was Sybase. Batch pre-compute
workaround projected to reach 9 hours by 2014: longer
than the nightly batch window

• Moved authorization functionality from Sybase to Neo4j
• Modeling the resource graph in Neo4j was straightforward, as
the domain is inherently a graph
• Able to retire the batch process, and move to real-time
responses: measured in milliseconds
• Users able to see fresh data, not yesterday’s
snapshotCustomer retention risks fully mitigated
Industry: Web/ISV, Communications

Use case: Data Center Management

Zürich, Switzerland

Junisphere

• Junisphere AG is a Zurich-based IT solutions provider
• Founded in 2001.
• Profitable.
• Self funded.
• Software & services.
• Novel approach to infrastructure monitoring:
Starts with the end user, mapped to business processes
and services, and dependent infrastructure

• “Business Service Management” requires mapping of

• Actively sought out a Java-based solution that could store data

complex graph, covering: business processes--> business
services--> IT infrastructure
• Embed capability of storing and retrieving this information
into OEM application
• Re-architecting outdated C++ application based on
relational database, with Java

as a graph
• Domain model is reflected directly in the database:“No time
lost in translation”
• “Our business and enterprise consultants now speak the same
language, and can model the domain with the database on a
1:1 ratio.”
• Spring Data Neo4j strong fit for Java architecture
Industry: Education

Use case: Resource Authorization & Access Control

San Francisco, CA

Teachscape

• Teachscape, Inc. develops online learning tools for K-12
teachers, school principals, and other instructional leaders.
• Teachscape evaluated relational as an option, considering
MySQL and Oracle.
• Neo4j was selected because the graph data model
provides a more natural fit for managing organizational
hierarchy and access to assets.

• Domain and technology fit

• Neo4j was selected to be at the heart of a new
architecture. The user management system, centered
around Neo4j, will be used to support single sign-on, user
management, contract management, and end-user access
to their subscription entitlements.

•
•
•
•
•
•
•

simple domain model where the
relationships are relatively complex.
Secondary factors included support for transactions, strong Java
support, and well-implemented Lucene indexing integration
Speed and Flexibility The business depends on being able to do
complex walks quickly and efficiently. This was a major factor in the
decision to use Neo4j.
Ease of Use accommodate efficient access for home-grown and
commercial off-the-shelf applications, as well as ad-hoc use.
Extreme availability & performance with Neo4j clustering
Hugely simplified queries, vs. relational for complex routing
Flexible data model can reflect real-world data variance much better
than relational
“Whiteboard friendly” model easy to understand
Really, once you start
thinking in graphs
it's hard to stop

What will you build?
Recommendations

MDM

Business intelligence
Geospatial
catalogs
Systems
access control Social computing Management
your brain
Biotechnology
routing
genealogy
linguistics
Making Sense of all that
compensation data
market vectors
7
4
Cypher
a pattern-matching
query language for
graphs
7
6
Cypher - overview
๏
a pattern-matching query language

๏ declarative grammar with clauses (like SQL)
๏ aggregation, ordering, limits
๏ create, update, delete

7
7
Cypher: START +
๏
RETURN
๏
START <lookup> RETURN <expressions>
START binds terms using simple look-up

•directly using known ids
•or based on indexed Property

๏ RETURN expressions specify result set
// lookup node id 0, return that node
start n=node(0) return n
// lookup node in Index, return that node
start n=node:Person(name="Andreas") return n
// lookup all nodes, return all name properties
start n=node(*) return n.name

7
8
Cypher: MATCH

๏ START <lookup> MATCH <pattern> RETURN <expr>
๏ MATCH describes a pattern of nodes+relationships

•node terms in optional parenthesis
•lines with arrows for relationships

// lookup 'n', traverse any relationship to some 'm'
start n=node(0) match (n)--(m) return n,m
// any outgoing relationship from 'n' to 'm'
start n=node(0) match n-->m return n,m
// only 'KNOWS' relationships from 'n' to 'm'
start n=node(0) match n-[:KNOWS]->m return n,m
// from 'n' to 'm' and capture the relationship as 'r'
start n=node(0) match n-[r]->m return n,r,m
// from 'n' outgoing to 'm', then incoming from 'o'
start n=node(0) match n-->m<--o return n,m,o
7
9
Cypher: WHERE

๏ START <lookup> [MATCH <pattern>]

๏ WHERE <condition> RETURN <expr>
๏ WHERE filters nodes or relationships

•uses expressions to constrain elements

// lookup all nodes as 'n', constrained to name 'Andreas'
start n=node(*) where n.name='Andreas' return n
// filter nodes where age is less than 30
start n=node(*) where n.age<30 return n
// filter using a regular expression
start n=node(*) where n.name =~ /Tob.*/ return n
// filter for a property exists
start n=node(*) where has(n.name) return n

8
0
Cypher: CREATE

๏ CREATE <node>[,node or relationship] RETURN
<expr>

•create nodes with optional properties
•create relationship (must have a type)
// create an anonymous node
create n
// create node with a property, returning it
create n={name:'Andreas'} return n
// lookup 2 nodes, then create a relationship and return it
start n=node(0),m=node(1) create n-[r:KNOWS]-m return r
// lookup nodes, then create a relationship with properties
start n=node(1),m=node(2) create n-[r:KNOWS {since:2008}]->m

8
1
Cypher: SET

๏ SET [<node property>] [<relationship property>]

•update a property on a node or relationship
•must follow a START

// update the name property
start n=node(0) set n.name='Peter'
// update many nodes, using a calculation
start n=node(*) set n.size=n.size+1
// match & capture a relationship, update a property
start n=node(1) match n-[r]-m set r.times=10

8
2
Cypher: DELETE

๏ DELETE [<node>|<relationship>|<property>]

•delete a node, relationship or property
•must follow a START
•to delete a node, all relationships must be deleted
first

// delete a node
start n=node(5) delete n
// remove a node and all relationships
start n=node(3) match n-[r]-() delete n, r
// remove a property
start n=node(3) delete n.age

8
3
8
4
The Rabbithole

http://console.neo4j.org
This Graph: http://tinyurl.com/7cnvmlq
8
5
High Availability

8
8
6

6
Scaling on a single server
๏ data size can increase into the billions
๏ however

• performance relies on memory caches
• server must be taken offline for backups
• single point of failure

๏ For 24x7 production, it's time to introduce HA

8
7
High Availability
๏ master-slave replication

• read/write to any cluster member
• slave writes commit to master first (redundancy)
• master writes are faster
• all writes propagate to slaves (polling interval)

8
8
High Availability
๏ automatic fail-over

• any cluster member can be elected master
• on failure, a new master will be automatically elected
• a failed master can re-join as a slave
• automatic branch detection & resolution

8
9
High Availability
๏ online backups

• backup pulls updates directly from live cluster
• backup is a full, directly useable Neo4j database

๏ to restore: shutdown cluster, distribute backup, restart

9
0
3 Lessons Learned

9
9
1

1
1. Healthy Relationships
๏ replace many-to-many join tables...
Language

Country

LanguageCountry

language_code

language_code

country_code

language_name

country_code

country_name

word_count

primary

flag_uri

๏ ...with a relationship in the graph
Language
name
code
word_count

Country
IS_SPOKEN_IN
as_primary

name
code
flag_uri

9
2
2. Property Lists
๏ Don’t try to embed multiple values into a single property
๏ That makes it harder to traverse using these values
name: “Canada”
languages_spoken: “[ ‘English’, ‘French’ ]”

๏ Instead, extract “list” values into separate nodes
name: “Canada”

spoken_in

language: “English”

spoken_in

language: “French”

spoken_in

spok
en_i
n

name: “USA”

name: “France”

9
3
3. One Concept Per Node
Country

๏ Don’t bundle multiple concepts

name
flag_uri
language_name
number_of_words
yes_in_langauge

๏ Instead, break out the separate concepts...

no_in_language
currency_code
currency_name

Country

Language

name

name

flag_uri

SPEAKS

number_of_words
yes
no

Currency
code
name
USES_CURRENCY

9
4
3 Lessons Learned
๏ Use Relationships
๏ Use Relationships
๏ Use Relationships

9
5

More Related Content

What's hot

Introducing Neo4j
Introducing Neo4jIntroducing Neo4j
Introducing Neo4jNeo4j
 
Graphs for Enterprise Architects
Graphs for Enterprise ArchitectsGraphs for Enterprise Architects
Graphs for Enterprise ArchitectsNeo4j
 
Intro to Neo4j Webinar
Intro to Neo4j WebinarIntro to Neo4j Webinar
Intro to Neo4j WebinarNeo4j
 
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
 
Introduction: Relational to Graphs
Introduction: Relational to GraphsIntroduction: Relational to Graphs
Introduction: Relational to GraphsNeo4j
 
How Graph Databases efficiently store, manage and query connected data at s...
How Graph Databases efficiently  store, manage and query  connected data at s...How Graph Databases efficiently  store, manage and query  connected data at s...
How Graph Databases efficiently store, manage and query connected data at s...jexp
 
Family tree of data – provenance and neo4j
Family tree of data – provenance and neo4jFamily tree of data – provenance and neo4j
Family tree of data – provenance and neo4jM. David Allen
 
The year of the graph: do you really need a graph database? How do you choose...
The year of the graph: do you really need a graph database? How do you choose...The year of the graph: do you really need a graph database? How do you choose...
The year of the graph: do you really need a graph database? How do you choose...George Anadiotis
 
Intro to Graphs and Neo4j
Intro to Graphs and Neo4jIntro to Graphs and Neo4j
Intro to Graphs and Neo4jjexp
 
Graphs for Finance - AML with Neo4j Graph Data Science
Graphs for Finance - AML with Neo4j Graph Data Science Graphs for Finance - AML with Neo4j Graph Data Science
Graphs for Finance - AML with Neo4j Graph Data Science Neo4j
 
Hadoop and Neo4j: A Winning Combination for Bioinformatics
Hadoop and Neo4j: A Winning Combination for BioinformaticsHadoop and Neo4j: A Winning Combination for Bioinformatics
Hadoop and Neo4j: A Winning Combination for Bioinformaticsosintegrators
 
RDBMS to Graph Webinar
RDBMS to Graph WebinarRDBMS to Graph Webinar
RDBMS to Graph WebinarNeo4j
 
Neo4j GraphTalk Helsinki - Introduction and Graph Use Cases
Neo4j GraphTalk Helsinki - Introduction and Graph Use CasesNeo4j GraphTalk Helsinki - Introduction and Graph Use Cases
Neo4j GraphTalk Helsinki - Introduction and Graph Use CasesNeo4j
 
Introduction to Neo4j
Introduction to Neo4jIntroduction to Neo4j
Introduction to Neo4jNeo4j
 
NOSQLEU - Graph Databases and Neo4j
NOSQLEU - Graph Databases and Neo4jNOSQLEU - Graph Databases and Neo4j
NOSQLEU - Graph Databases and Neo4jTobias Lindaaker
 
Introduction to Neo4j
Introduction to Neo4jIntroduction to Neo4j
Introduction to Neo4jNeo4j
 
Introducing Neo4j graph database
Introducing Neo4j graph databaseIntroducing Neo4j graph database
Introducing Neo4j graph databaseAmirhossein Saberi
 
Democratizing Data at Airbnb
Democratizing Data at AirbnbDemocratizing Data at Airbnb
Democratizing Data at AirbnbNeo4j
 
NoSQL Graph Databases - Why, When and Where
NoSQL Graph Databases - Why, When and WhereNoSQL Graph Databases - Why, When and Where
NoSQL Graph Databases - Why, When and WhereEugene Hanikblum
 

What's hot (20)

Introducing Neo4j
Introducing Neo4jIntroducing Neo4j
Introducing Neo4j
 
Graphs for Enterprise Architects
Graphs for Enterprise ArchitectsGraphs for Enterprise Architects
Graphs for Enterprise Architects
 
Intro to Neo4j Webinar
Intro to Neo4j WebinarIntro to Neo4j Webinar
Intro to Neo4j Webinar
 
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
 
Introduction: Relational to Graphs
Introduction: Relational to GraphsIntroduction: Relational to Graphs
Introduction: Relational to Graphs
 
How Graph Databases efficiently store, manage and query connected data at s...
How Graph Databases efficiently  store, manage and query  connected data at s...How Graph Databases efficiently  store, manage and query  connected data at s...
How Graph Databases efficiently store, manage and query connected data at s...
 
Family tree of data – provenance and neo4j
Family tree of data – provenance and neo4jFamily tree of data – provenance and neo4j
Family tree of data – provenance and neo4j
 
The year of the graph: do you really need a graph database? How do you choose...
The year of the graph: do you really need a graph database? How do you choose...The year of the graph: do you really need a graph database? How do you choose...
The year of the graph: do you really need a graph database? How do you choose...
 
Intro to Graphs and Neo4j
Intro to Graphs and Neo4jIntro to Graphs and Neo4j
Intro to Graphs and Neo4j
 
Graphs for Finance - AML with Neo4j Graph Data Science
Graphs for Finance - AML with Neo4j Graph Data Science Graphs for Finance - AML with Neo4j Graph Data Science
Graphs for Finance - AML with Neo4j Graph Data Science
 
Hadoop and Neo4j: A Winning Combination for Bioinformatics
Hadoop and Neo4j: A Winning Combination for BioinformaticsHadoop and Neo4j: A Winning Combination for Bioinformatics
Hadoop and Neo4j: A Winning Combination for Bioinformatics
 
RDBMS to Graph Webinar
RDBMS to Graph WebinarRDBMS to Graph Webinar
RDBMS to Graph Webinar
 
Neo4j GraphTalk Helsinki - Introduction and Graph Use Cases
Neo4j GraphTalk Helsinki - Introduction and Graph Use CasesNeo4j GraphTalk Helsinki - Introduction and Graph Use Cases
Neo4j GraphTalk Helsinki - Introduction and Graph Use Cases
 
Introduction to Neo4j
Introduction to Neo4jIntroduction to Neo4j
Introduction to Neo4j
 
Neo4j in Depth
Neo4j in DepthNeo4j in Depth
Neo4j in Depth
 
NOSQLEU - Graph Databases and Neo4j
NOSQLEU - Graph Databases and Neo4jNOSQLEU - Graph Databases and Neo4j
NOSQLEU - Graph Databases and Neo4j
 
Introduction to Neo4j
Introduction to Neo4jIntroduction to Neo4j
Introduction to Neo4j
 
Introducing Neo4j graph database
Introducing Neo4j graph databaseIntroducing Neo4j graph database
Introducing Neo4j graph database
 
Democratizing Data at Airbnb
Democratizing Data at AirbnbDemocratizing Data at Airbnb
Democratizing Data at Airbnb
 
NoSQL Graph Databases - Why, When and Where
NoSQL Graph Databases - Why, When and WhereNoSQL Graph Databases - Why, When and Where
NoSQL Graph Databases - Why, When and Where
 

Viewers also liked

Introduction à Neo4j - La base de données de graphes - 2016
Introduction à Neo4j - La base de données de graphes - 2016Introduction à Neo4j - La base de données de graphes - 2016
Introduction à Neo4j - La base de données de graphes - 2016Cédric Fauvet
 
Getting started with Graph Databases & Neo4j
Getting started with Graph Databases & Neo4jGetting started with Graph Databases & Neo4j
Getting started with Graph Databases & Neo4jSuroor Wijdan
 
Graph Databases introduction to rug-b
Graph Databases introduction to rug-bGraph Databases introduction to rug-b
Graph Databases introduction to rug-bPere Urbón-Bayes
 
Intro to Neo4j presentation
Intro to Neo4j presentationIntro to Neo4j presentation
Intro to Neo4j presentationjexp
 
Converting Relational to Graph Databases
Converting Relational to Graph DatabasesConverting Relational to Graph Databases
Converting Relational to Graph DatabasesAntonio Maccioni
 
Designing and Building a Graph Database Application – Architectural Choices, ...
Designing and Building a Graph Database Application – Architectural Choices, ...Designing and Building a Graph Database Application – Architectural Choices, ...
Designing and Building a Graph Database Application – Architectural Choices, ...Neo4j
 
Nouvelles opportunités pour les données fortement interconnectées : La base d...
Nouvelles opportunités pour les données fortement interconnectées : La base d...Nouvelles opportunités pour les données fortement interconnectées : La base d...
Nouvelles opportunités pour les données fortement interconnectées : La base d...Cédric Fauvet
 
Introduction à Neo4j
Introduction à Neo4jIntroduction à Neo4j
Introduction à Neo4jNeo4j
 
[FRENCH] - Neo4j and Cypher - Remi Delhaye
[FRENCH] - Neo4j and Cypher - Remi Delhaye[FRENCH] - Neo4j and Cypher - Remi Delhaye
[FRENCH] - Neo4j and Cypher - Remi DelhayeRémi Delhaye
 

Viewers also liked (9)

Introduction à Neo4j - La base de données de graphes - 2016
Introduction à Neo4j - La base de données de graphes - 2016Introduction à Neo4j - La base de données de graphes - 2016
Introduction à Neo4j - La base de données de graphes - 2016
 
Getting started with Graph Databases & Neo4j
Getting started with Graph Databases & Neo4jGetting started with Graph Databases & Neo4j
Getting started with Graph Databases & Neo4j
 
Graph Databases introduction to rug-b
Graph Databases introduction to rug-bGraph Databases introduction to rug-b
Graph Databases introduction to rug-b
 
Intro to Neo4j presentation
Intro to Neo4j presentationIntro to Neo4j presentation
Intro to Neo4j presentation
 
Converting Relational to Graph Databases
Converting Relational to Graph DatabasesConverting Relational to Graph Databases
Converting Relational to Graph Databases
 
Designing and Building a Graph Database Application – Architectural Choices, ...
Designing and Building a Graph Database Application – Architectural Choices, ...Designing and Building a Graph Database Application – Architectural Choices, ...
Designing and Building a Graph Database Application – Architectural Choices, ...
 
Nouvelles opportunités pour les données fortement interconnectées : La base d...
Nouvelles opportunités pour les données fortement interconnectées : La base d...Nouvelles opportunités pour les données fortement interconnectées : La base d...
Nouvelles opportunités pour les données fortement interconnectées : La base d...
 
Introduction à Neo4j
Introduction à Neo4jIntroduction à Neo4j
Introduction à Neo4j
 
[FRENCH] - Neo4j and Cypher - Remi Delhaye
[FRENCH] - Neo4j and Cypher - Remi Delhaye[FRENCH] - Neo4j and Cypher - Remi Delhaye
[FRENCH] - Neo4j and Cypher - Remi Delhaye
 

Similar to Introduction to Graph databases and Neo4j (by Stefan Armbruster)

Graphs fun vjug2
Graphs fun vjug2Graphs fun vjug2
Graphs fun vjug2Neo4j
 
Combine Spring Data Neo4j and Spring Boot to quickl
Combine Spring Data Neo4j and Spring Boot to quicklCombine Spring Data Neo4j and Spring Boot to quickl
Combine Spring Data Neo4j and Spring Boot to quicklNeo4j
 
GraphTalks Rome - Selecting the right Technology
GraphTalks Rome - Selecting the right TechnologyGraphTalks Rome - Selecting the right Technology
GraphTalks Rome - Selecting the right TechnologyNeo4j
 
Polyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4jPolyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4jCorie Pollock
 
Graph databases and the #panamapapers
Graph databases and the #panamapapersGraph databases and the #panamapapers
Graph databases and the #panamapapersdarthvader42
 
NoSQL Simplified: Schema vs. Schema-less
NoSQL Simplified: Schema vs. Schema-lessNoSQL Simplified: Schema vs. Schema-less
NoSQL Simplified: Schema vs. Schema-lessInfiniteGraph
 
Neo4j – The Fastest Path to Scalable Real-Time Analytics
Neo4j – The Fastest Path to Scalable Real-Time AnalyticsNeo4j – The Fastest Path to Scalable Real-Time Analytics
Neo4j – The Fastest Path to Scalable Real-Time AnalyticsNeo4j
 
Agile Data Rationalization for Operational Intelligence
Agile Data Rationalization for Operational IntelligenceAgile Data Rationalization for Operational Intelligence
Agile Data Rationalization for Operational IntelligenceInside Analysis
 
GraphTour 2020 - Neo4j: What's New?
GraphTour 2020 - Neo4j: What's New?GraphTour 2020 - Neo4j: What's New?
GraphTour 2020 - Neo4j: What's New?Neo4j
 
Considerations for using NoSQL technology on your next IT project - Akmal Cha...
Considerations for using NoSQL technology on your next IT project - Akmal Cha...Considerations for using NoSQL technology on your next IT project - Akmal Cha...
Considerations for using NoSQL technology on your next IT project - Akmal Cha...jaxconf
 
NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages
NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages  NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages
NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages DATAVERSITY
 
Introduction to Neo4j and .Net
Introduction to Neo4j and .NetIntroduction to Neo4j and .Net
Introduction to Neo4j and .NetNeo4j
 
Séminaire Big Data Alter Way - Elasticsearch - octobre 2014
Séminaire Big Data Alter Way - Elasticsearch - octobre 2014Séminaire Big Data Alter Way - Elasticsearch - octobre 2014
Séminaire Big Data Alter Way - Elasticsearch - octobre 2014ALTER WAY
 
Graph Database Use Cases - StampedeCon 2015
Graph Database Use Cases - StampedeCon 2015Graph Database Use Cases - StampedeCon 2015
Graph Database Use Cases - StampedeCon 2015StampedeCon
 
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
 
Introducción a NoSQL
Introducción a NoSQLIntroducción a NoSQL
Introducción a NoSQLMongoDB
 

Similar to Introduction to Graph databases and Neo4j (by Stefan Armbruster) (20)

Graphs fun vjug2
Graphs fun vjug2Graphs fun vjug2
Graphs fun vjug2
 
Combine Spring Data Neo4j and Spring Boot to quickl
Combine Spring Data Neo4j and Spring Boot to quicklCombine Spring Data Neo4j and Spring Boot to quickl
Combine Spring Data Neo4j and Spring Boot to quickl
 
GraphTalks Rome - Selecting the right Technology
GraphTalks Rome - Selecting the right TechnologyGraphTalks Rome - Selecting the right Technology
GraphTalks Rome - Selecting the right Technology
 
Polyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4jPolyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4j
 
NOSQL Overview
NOSQL OverviewNOSQL Overview
NOSQL Overview
 
Graph databases and the #panamapapers
Graph databases and the #panamapapersGraph databases and the #panamapapers
Graph databases and the #panamapapers
 
NoSQL Simplified: Schema vs. Schema-less
NoSQL Simplified: Schema vs. Schema-lessNoSQL Simplified: Schema vs. Schema-less
NoSQL Simplified: Schema vs. Schema-less
 
Neo4j – The Fastest Path to Scalable Real-Time Analytics
Neo4j – The Fastest Path to Scalable Real-Time AnalyticsNeo4j – The Fastest Path to Scalable Real-Time Analytics
Neo4j – The Fastest Path to Scalable Real-Time Analytics
 
Agile Data Rationalization for Operational Intelligence
Agile Data Rationalization for Operational IntelligenceAgile Data Rationalization for Operational Intelligence
Agile Data Rationalization for Operational Intelligence
 
NoSQL databases
NoSQL databasesNoSQL databases
NoSQL databases
 
SQL vs NoSQL
SQL vs NoSQLSQL vs NoSQL
SQL vs NoSQL
 
Spark at Zillow
Spark at ZillowSpark at Zillow
Spark at Zillow
 
GraphTour 2020 - Neo4j: What's New?
GraphTour 2020 - Neo4j: What's New?GraphTour 2020 - Neo4j: What's New?
GraphTour 2020 - Neo4j: What's New?
 
Considerations for using NoSQL technology on your next IT project - Akmal Cha...
Considerations for using NoSQL technology on your next IT project - Akmal Cha...Considerations for using NoSQL technology on your next IT project - Akmal Cha...
Considerations for using NoSQL technology on your next IT project - Akmal Cha...
 
NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages
NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages  NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages
NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages
 
Introduction to Neo4j and .Net
Introduction to Neo4j and .NetIntroduction to Neo4j and .Net
Introduction to Neo4j and .Net
 
Séminaire Big Data Alter Way - Elasticsearch - octobre 2014
Séminaire Big Data Alter Way - Elasticsearch - octobre 2014Séminaire Big Data Alter Way - Elasticsearch - octobre 2014
Séminaire Big Data Alter Way - Elasticsearch - octobre 2014
 
Graph Database Use Cases - StampedeCon 2015
Graph Database Use Cases - StampedeCon 2015Graph Database Use Cases - StampedeCon 2015
Graph Database Use Cases - StampedeCon 2015
 
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
 
Introducción a NoSQL
Introducción a NoSQLIntroducción a NoSQL
Introducción a NoSQL
 

Recently uploaded

Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 

Recently uploaded (20)

Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 

Introduction to Graph databases and Neo4j (by Stefan Armbruster)

  • 1. Introduction in Graph Databases and Neo4j most slides from: Stefan Armbruster Michael Hunger @darthvader42 stefan.armbruster@neotechnology.com 1 1
  • 2. The Path Forward 1.No .. NO .. NOSQL 2.Why graphs? 3.What's a graph database? 4.Some things about Neo4j. 5.How do people use Neo4j? 2
  • 3. Trends in BigData & NOSQL 1. increasing data size (big data) • “Every 2 days we create as much information as we did up to 2003” - Eric Schmidt 2. increasingly connected data (graph data) • for example, text documents to html 3. semi-structured data • individualization of data, with common sub-set 4. architecture - a facade over multiple services • from monolithic to modular, distributed applications 3
  • 4. What is NOSQL? It’s not “No to SQL” It’s not “Never SQL” It’s “Not Only SQL” NOSQL no-seek-wool n. Describes ongoing trend where developers increasingly opt for non-relational databases to help solve their problems, in an effort to use the right tool for the right job. 4 4
  • 6. 6
  • 11. Living in a NOSQL World Density ~= Complexity Graph Databases RDBMS Document Databases Column Family Key-Value Store Volume ~= Size 1 1 1 1
  • 12. complexity = f(size, connectedness, uniformity) 1 2
  • 13. Patrik Runald @patrikrunald 3 Nov “@mgonto: The best explanation about what BigData is. Hilarious: pic.twitter.com/d8ZVP7xJFu 1 3
  • 14. 1 4
  • 15. A Graph? Yes, a graph 1 5
  • 17. 1 7
  • 20. Graphs Everywhere ๏ Relationships in • Politics, Economics, History, Science, Transportation ๏ Biology, Chemistry, Physics, Sociology • Body, Ecosphere, Reaction, Interactions ๏ Internet • Hardware, Software, Interaction ๏ Social Networks • Family, Friends • Work, Communities • Neighbours, Cities, Society 2 0
  • 21. Good Relationships ๏ the world is rich, messy and related data ๏ relationships are as least as important as the things they connect ๏ Graphs = Whole > Σ parts ๏ complex interactions ๏ always changing, change of structures as well ๏ Graph: Relationships are part of the data ๏ RDBMS: Relationships part of the fixed schema 2 1
  • 22. Everyone is talking about graphs... 2 7
  • 23. Everyone is talking about graphs... 2 8
  • 25. A graph database... 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 session, but a graph database will tell you who is most likely to buy you a beer.” 3 3 2 2
  • 28. We're talking about a Property Graph Properties (each a key+value) + Indexes (for easy look-ups) + Labels (Neo4j 2.0) 3 3 5 5
  • 29. Looks different, fine. Who cares? ๏ a sample social graph • with ~1,000 persons ๏ average 50 friends per person ๏ pathExists(a,b) limited to depth 4 ๏ caches warmed up to eliminate disk I/O # persons query time Relational database 1.000 2000ms Neo4j 1.000 2ms Neo4j 1.000.000 2ms 3 3 6 6
  • 30. Graph Database: Pros & Cons ๏ Strengths • Powerful data model, as general as RDBMS • Fast, for connected data • Easy to query ๏ Weaknesses: • Sharding (though they can scale reasonably well) ‣also, stay tuned for developments here • Requires conceptual shift ‣though graph-like thinking becomes addictive 3 3 7 7
  • 31. And, but, so how do you query this "graph" database? 3 3 8 8
  • 32. Query a graph with a traversal // lookup starting point in an index then traverse to find results start n=node:People(name = ‘Andreas’) match (n)--()--(foaf) return foaf 3 3 9 9
  • 38. Neo4j - the Graph Database 4 5
  • 39. 4 6
  • 40. (Neo4j) -[:IS_A]-> (Graph Database) HIG H _AV AIL . TRAVERSA LS HA T IN S TE RA EG PROVIDES SCAL ES_T O EN SE D _L IK E ON RU NS _A LIC _ NS RU S RUN S_AS 4 7
  • 41. Neo4j is a Graph Database ๏ A Graph Database: • a schema-free Property Graph • perfect for complex, highly connected data ๏ A Graph Database: • reliable with real ACID Transactions • fast with more than 1M traversals / second • Server with REST API, or Embeddable on the JVM • scale out for higher-performance reads with High-Availability 4 8
  • 42. Whiteboard --> Data Andre as knows knows Peter knows Emil knows Alliso n // Cypher query - friend of a friend start n=node(0) match (n)--()--(foaf) return foaf 4 9
  • 43. Two Ways to Work with Neo4j ๏ 1. Embeddable on JVM • Java, JRuby, Scala... • Tomcat, Rails, Akka, etc. • great for testing 5 0
  • 44. Show me some code, please GraphDatabaseService graphDb = new EmbeddedGraphDatabase(“var/neo4j”); Transaction tx = graphDb.beginTx(); try { Node steve = graphDb.createNode(); Node michael = graphDb.createNode(); steve.setProperty(“name”, “Steve Vinoski”); michael.setProperty(“name”, “Michael Hunger”); Relationship presentedWith = steve.createRelationshipTo( michael, PresentationTypes.PRESENTED_WITH); presentedWith.setProperty(“date”, today); tx.success(); } finally { tx.finish(); }
  • 45. Spring Data Neo4j @NodeEntity public class Movie { @Indexed private String title; @RelatedToVia(type = “ACTS_IN”, direction=INCOMING) private Set<Role> cast; private Director director; } @NodeEntity public class Actor { @RelatedTo(type = “ACTS_IN”) private Set<Movies> movies; } @RelationshipEntity public class Role { @StartNode private Actor actor; @EndNode private Movie movie; private String roleName; }
  • 46. Cypher Query Language ๏ Declarative query language • Describe what you want, not how • Based on pattern matching ๏ Examples: START david=node:people(name=”David”) # index lookup MATCH david-[:knows]-friends-[:knows]-new_friends WHERE new_friends.age > 18 RETURN new_friends START user=node(5, 15, 26, 28) # node IDs MATCH user--friend RETURN user, COUNT(friend), SUM(friend.money) 5 4
  • 47. Create Graph with Cypher CREATE (steve {name: “Steve Vinoski”}) -[:PRESENTED_WITH {date:{day}}]-> (michael {name: “Michael Hunger”})
  • 48. Two Ways to Work with Neo4j ๏ 2. Server with REST API • every language on the planet • flexible deployment scenarios • DIY server, or cloud managed 5 6
  • 50. Two Ways to Work with Neo4j ๏ Server capability == Embedded capability • same scalability, transactionality, and availability 5 8
  • 52. Industry: Communications Use case: Recommendations San Jose, CA Cisco.com Knowledg Knowledg e e Base Base Article Article Support Support Case Case • Cisco.com serves customer and business customers with Support Services • Needed real-time recommendations, to encourage use of online knowledge base • Cisco had been successfully using Neo4j for its internal master data management solution. • Identified a strong fit for online recommendations Knowledg Knowledg e e Base Base Article Article Support Support Case Case Solution Solution Knowledg Knowledg e e Base Base Article Article Message Message • Call center volumes needed to be lowered by improving • Cases, solutions, articles, etc. continuously scraped for the efficacy of online self service • Leverage large amounts of knowledge stored in service cases, solutions, articles, forums, etc. • Problem resolution times, as well as support costs, needed to be lowered cross-reference links, and represented in Neo4j • Real-time reading recommendations via Neo4j • Neo4j Enterprise with HA cluster • The result: customers obtain help faster, with decreased reliance on customer support
  • 53. Industry: Communications Use case: Master Data Management San Jose, CA Cisco HMP • One of the world’s largest communications equipment manufacturers#91 Global 2000. $44B in annual sales. • Needed a system that could accommodate its master data hierarchies in a performant way • HMP is a Master Data Management system at whose heart is Neo4j. Data access services available 24x7 to applications companywide • Sales compensation system had become unable to meet • Cisco created a new system: the Hierarchy Management Cisco’s needs • Existing Oracle RAC system had reached its limits: • Insufficient flexibility for handling complex organizational hierarchies and mappings • “Real-time” queries were taking > 1 minute! • Business-critical “P1” system needs to be continually available, with zero downtime Platform (HMP) • Allows Cisco to manage master data centrally, and centralize data access and business rules • Neo4j provided “Minutes to Milliseconds” performance over Oracle RAC, serving master data in real time • The graph database model provided exactly the flexibility needed to support Cisco’s business rules • HMP so successful that it has expanded to include product hierarchy
  • 54. Industry: Logistics Use case: Parcel Routing • One of the world’s largest logistics carriers • Projected to outgrow capacity of old system • New parcel routing system • Single source of truth for entire network • B2C & B2B parcel tracking • Real-time routing: up to 5M parcels per day • 24x7 availability, year round • Peak loads of 2500+ parcels per second • Complex and diverse software stack • Need predictable performance & linear scalability • Daily changes to logistics network: route from any point, to any point • Neo4j provides the ideal domain fit: • a logistics network is a graph • Extreme availability & performance with Neo4j clustering • Hugely simplified queries, vs. relational for complex routing • Flexible data model can reflect real-world data variance much better than relational • “Whiteboard friendly” model easy to understand
  • 55. Industry: Online Job Search Use case: Social / Recommendations Sausalito, CA GlassDoor S_AT WORK • Online jobs and career community, providing anonymized Company Company Person Person Person Person WS KNO KN OW S inside information to job seekers KN OW S Person Person WORKS_AT Company Company • Wanted to leverage known fact that most jobs are found • First-to-market with a product that let users find jobs through through personal & professional connections • Needed to rely on an existing source of social network data. Facebook was the ideal choice. • End users needed to get instant gratification • Aiming to have the best job search service, in a very competitive market their network of Facebook friends • Job recommendations served real-time from Neo4j • Individual Facebook graphs imported real-time into Neo4j • Glassdoor now stores > 50% of the entire Facebook social graph • Neo4j cluster has grown seamlessly, with new instances being brought online as graph size and load have increased
  • 56. Industry: Communications Use case: Network Management Paris, France SFR Service Service ON S_ ND PE DE ND S_O N DEP E S_ON LIN KE D Router Router LINKED Switch Switch DEP E N DS_O Switch Switch N DEPE D DEPENDS_ON DS _O N D DEPEN Router Router KE LIN • Second largest communications company in France • Part of Vivendi Group, partnering with Vodafone DE PE N ND S_O N DEPENDS_ON DEPENDS_ON Fiber Fiber Link Link Fiber Fiber Link Link DEPENDS_ON Fiber Fiber Link Link DEPENDS_ON Oceanfloor Oceanfloor Cable Cable • Infrastructure maintenance took one full week to plan, • Flexible network inventory management system, to support because of the need to model network impacts • Needed rapid, automated “what if” analysis to ensure resilience during unplanned network outagesIdentify weaknesses in the network to uncover the need for additional redundancy • Network information spread across > 30 systems, with daily changes to network infrastructureBusiness needs sometimes changed very rapidly modeling, aggregation & troubleshooting • Single source of truth (Neo4j) representing the entire network • Dynamic system loads data from 30+ systems, and allows new applications to access network data • Modeling efforts greatly reduced because of the near 1:1 mapping between the real world and the graph • Flexible schema highly adaptable to changing business requirements
  • 57. Industry: Web/ISV, Communications Use case: Network Management Global (U.S., France) Hewlett Packard • World’s largest provider of IT infrastructure, software & services • HP’s Unified Correlation Analyzer (UCA) application is a key application inside HP’s OSS Assurance portfolio • Carrier-class resource & service management, problem determination, root cause & service impact analysis • Helps communications operators manage large, complex and fast changing networks • Use network topology information to identify root problems causes on the network • Simplify alarm handling by human operators • Automate handling of certain types of alarms • Help operators respond rapidly to network issues • Filter/group/eliminate redundant Network Management System alarms by event correlation • Accelerated product development time • Extremely fast querying of network topology • Graph representation a perfect domain fit • 24x7 carrier-grade reliability with Neo4j HA clustering • Met objective in under 6 months
  • 58. Industry: Communications Use case: Resource Authorization & Access Control Oslo, Norway Telenor User User USER_ACCESS Customer Customer • 10th largest Telco provider in the world, leading in the Nordics • Online self-serve system where large business admins manage employee subscriptions and plans • Mission-critical system whose availability and responsiveness is critical to customer satisfaction PART_OF Customer Customer CONTROLLED_BY Account Account SUBSCRIBED_BY Subscripti Subscripti on on • Degrading relational performance. User login taking minutes while system retrieved access rights • Millions of plans, customers, admins, groups. Highly interconnected data set w/massive joins • Nightly batch workaround solved the performance problem, but meant data was no longer current • Primary system was Sybase. Batch pre-compute workaround projected to reach 9 hours by 2014: longer than the nightly batch window • Moved authorization functionality from Sybase to Neo4j • Modeling the resource graph in Neo4j was straightforward, as the domain is inherently a graph • Able to retire the batch process, and move to real-time responses: measured in milliseconds • Users able to see fresh data, not yesterday’s snapshotCustomer retention risks fully mitigated
  • 59. Industry: Web/ISV, Communications Use case: Data Center Management Zürich, Switzerland Junisphere • Junisphere AG is a Zurich-based IT solutions provider • Founded in 2001. • Profitable. • Self funded. • Software & services. • Novel approach to infrastructure monitoring: Starts with the end user, mapped to business processes and services, and dependent infrastructure • “Business Service Management” requires mapping of • Actively sought out a Java-based solution that could store data complex graph, covering: business processes--> business services--> IT infrastructure • Embed capability of storing and retrieving this information into OEM application • Re-architecting outdated C++ application based on relational database, with Java as a graph • Domain model is reflected directly in the database:“No time lost in translation” • “Our business and enterprise consultants now speak the same language, and can model the domain with the database on a 1:1 ratio.” • Spring Data Neo4j strong fit for Java architecture
  • 60. Industry: Education Use case: Resource Authorization & Access Control San Francisco, CA Teachscape • Teachscape, Inc. develops online learning tools for K-12 teachers, school principals, and other instructional leaders. • Teachscape evaluated relational as an option, considering MySQL and Oracle. • Neo4j was selected because the graph data model provides a more natural fit for managing organizational hierarchy and access to assets. • Domain and technology fit • Neo4j was selected to be at the heart of a new architecture. The user management system, centered around Neo4j, will be used to support single sign-on, user management, contract management, and end-user access to their subscription entitlements. • • • • • • • simple domain model where the relationships are relatively complex. Secondary factors included support for transactions, strong Java support, and well-implemented Lucene indexing integration Speed and Flexibility The business depends on being able to do complex walks quickly and efficiently. This was a major factor in the decision to use Neo4j. Ease of Use accommodate efficient access for home-grown and commercial off-the-shelf applications, as well as ad-hoc use. Extreme availability & performance with Neo4j clustering Hugely simplified queries, vs. relational for complex routing Flexible data model can reflect real-world data variance much better than relational “Whiteboard friendly” model easy to understand
  • 61. Really, once you start thinking in graphs it's hard to stop What will you build? Recommendations MDM Business intelligence Geospatial catalogs Systems access control Social computing Management your brain Biotechnology routing genealogy linguistics Making Sense of all that compensation data market vectors 7 4
  • 63. Cypher - overview ๏ a pattern-matching query language ๏ declarative grammar with clauses (like SQL) ๏ aggregation, ordering, limits ๏ create, update, delete 7 7
  • 64. Cypher: START + ๏ RETURN ๏ START <lookup> RETURN <expressions> START binds terms using simple look-up •directly using known ids •or based on indexed Property ๏ RETURN expressions specify result set // lookup node id 0, return that node start n=node(0) return n // lookup node in Index, return that node start n=node:Person(name="Andreas") return n // lookup all nodes, return all name properties start n=node(*) return n.name 7 8
  • 65. Cypher: MATCH ๏ START <lookup> MATCH <pattern> RETURN <expr> ๏ MATCH describes a pattern of nodes+relationships •node terms in optional parenthesis •lines with arrows for relationships // lookup 'n', traverse any relationship to some 'm' start n=node(0) match (n)--(m) return n,m // any outgoing relationship from 'n' to 'm' start n=node(0) match n-->m return n,m // only 'KNOWS' relationships from 'n' to 'm' start n=node(0) match n-[:KNOWS]->m return n,m // from 'n' to 'm' and capture the relationship as 'r' start n=node(0) match n-[r]->m return n,r,m // from 'n' outgoing to 'm', then incoming from 'o' start n=node(0) match n-->m<--o return n,m,o 7 9
  • 66. Cypher: WHERE ๏ START <lookup> [MATCH <pattern>] ๏ WHERE <condition> RETURN <expr> ๏ WHERE filters nodes or relationships •uses expressions to constrain elements // lookup all nodes as 'n', constrained to name 'Andreas' start n=node(*) where n.name='Andreas' return n // filter nodes where age is less than 30 start n=node(*) where n.age<30 return n // filter using a regular expression start n=node(*) where n.name =~ /Tob.*/ return n // filter for a property exists start n=node(*) where has(n.name) return n 8 0
  • 67. Cypher: CREATE ๏ CREATE <node>[,node or relationship] RETURN <expr> •create nodes with optional properties •create relationship (must have a type) // create an anonymous node create n // create node with a property, returning it create n={name:'Andreas'} return n // lookup 2 nodes, then create a relationship and return it start n=node(0),m=node(1) create n-[r:KNOWS]-m return r // lookup nodes, then create a relationship with properties start n=node(1),m=node(2) create n-[r:KNOWS {since:2008}]->m 8 1
  • 68. Cypher: SET ๏ SET [<node property>] [<relationship property>] •update a property on a node or relationship •must follow a START // update the name property start n=node(0) set n.name='Peter' // update many nodes, using a calculation start n=node(*) set n.size=n.size+1 // match & capture a relationship, update a property start n=node(1) match n-[r]-m set r.times=10 8 2
  • 69. Cypher: DELETE ๏ DELETE [<node>|<relationship>|<property>] •delete a node, relationship or property •must follow a START •to delete a node, all relationships must be deleted first // delete a node start n=node(5) delete n // remove a node and all relationships start n=node(3) match n-[r]-() delete n, r // remove a property start n=node(3) delete n.age 8 3
  • 70. 8 4
  • 71. The Rabbithole http://console.neo4j.org This Graph: http://tinyurl.com/7cnvmlq 8 5
  • 73. Scaling on a single server ๏ data size can increase into the billions ๏ however • performance relies on memory caches • server must be taken offline for backups • single point of failure ๏ For 24x7 production, it's time to introduce HA 8 7
  • 74. High Availability ๏ master-slave replication • read/write to any cluster member • slave writes commit to master first (redundancy) • master writes are faster • all writes propagate to slaves (polling interval) 8 8
  • 75. High Availability ๏ automatic fail-over • any cluster member can be elected master • on failure, a new master will be automatically elected • a failed master can re-join as a slave • automatic branch detection & resolution 8 9
  • 76. High Availability ๏ online backups • backup pulls updates directly from live cluster • backup is a full, directly useable Neo4j database ๏ to restore: shutdown cluster, distribute backup, restart 9 0
  • 78. 1. Healthy Relationships ๏ replace many-to-many join tables... Language Country LanguageCountry language_code language_code country_code language_name country_code country_name word_count primary flag_uri ๏ ...with a relationship in the graph Language name code word_count Country IS_SPOKEN_IN as_primary name code flag_uri 9 2
  • 79. 2. Property Lists ๏ Don’t try to embed multiple values into a single property ๏ That makes it harder to traverse using these values name: “Canada” languages_spoken: “[ ‘English’, ‘French’ ]” ๏ Instead, extract “list” values into separate nodes name: “Canada” spoken_in language: “English” spoken_in language: “French” spoken_in spok en_i n name: “USA” name: “France” 9 3
  • 80. 3. One Concept Per Node Country ๏ Don’t bundle multiple concepts name flag_uri language_name number_of_words yes_in_langauge ๏ Instead, break out the separate concepts... no_in_language currency_code currency_name Country Language name name flag_uri SPEAKS number_of_words yes no Currency code name USES_CURRENCY 9 4
  • 81. 3 Lessons Learned ๏ Use Relationships ๏ Use Relationships ๏ Use Relationships 9 5