0
Graph Databases Rock - Learn Why!
By Michael Hunger
Neo Technology

© 2013 SpringOne 2GX. All rights reserved. Do not dist...
The book on your seat! -“Graph Databases”
Written by experts - Emil Eifrem, Ian Robinson, Jim Webber
Compliments of Neo Te...
Bookmark: GraphConnect Oct 3-4 2013 San Francisco
$99

4
Mittwoch, 11. September 13

tick

et c

oup
on
in

you
rb
ook
Meetup - Tomorrow (Wed) Evening
Spring Data Neo4j: Past, Current & Future
• Wed, Sep 11, 6-9PM
• David's Restaurant,
5151 ...
(SDN)<-[:LEARN]-(YOU)-[:GET]->(Book)
GraphConnect
ticket

Book

Spring
Data
Neo4j

Neo4j?

Spring?

YOU

NoSQL?

Sleep?
Co...
(Michael)-[:CODES]->(SDN)-[:USES]->(Neo4j)
console

Cypher

community
graph

Kernel

Community

ME
Server

Customers
Sprin...
Agenda

1. Connected Data, Graph Databases and Neo4j
2. Spring Data Neo4j
3. Twitter-Graph - Small Example App
4. Real Wor...
NOSQL

Mittwoch, 11. September 13
Data Complexity

, semi-structure,

complexity = f(size

Mittwoch, 11. September 13

connectedness)
NOSQL databases
Couch

KeyValue

Riak

Redis

Document

NOSQL

Mongo

Column
oriented
Graph
Relational

Cassandra
MySQL

M...
Volume vs. Complexity & NOSQL databases

Mittwoch, 11. September 13
Volume vs. Complexity & NOSQL databases

Volume ~= Size

Mittwoch, 11. September 13
Density ~= Complexity

Volume vs. Complexity & NOSQL databases

Volume ~= Size

Mittwoch, 11. September 13
Density ~= Complexity

Volume vs. Complexity & NOSQL databases

Key-Value
Store

Volume ~= Size

Mittwoch, 11. September 1...
Density ~= Complexity

Volume vs. Complexity & NOSQL databases

Column
Family
Key-Value
Store

Volume ~= Size

Mittwoch, 1...
Density ~= Complexity

Volume vs. Complexity & NOSQL databases

Document
Databases

Column
Family
Key-Value
Store

Volume ...
Density ~= Complexity

Volume vs. Complexity & NOSQL databases

RDBMS

Document
Databases

Column
Family
Key-Value
Store

...
Volume vs. Complexity & NOSQL databases

Density ~= Complexity

Graph
Databases
RDBMS

Document
Databases

Column
Family
K...
Volume vs. Complexity & NOSQL databases

Density ~= Complexity

Graph
Databases

90%
of
use
cases

Mittwoch, 11. September...
Volume vs. Complexity & NOSQL databases
Graph
Databases

Density ~= Complexity

RDBMS

Document
Databases

Column
Family
K...
Are Graphs Everywhere ?

Mittwoch, 11. September 13
The big graphs are visible

4
Mittwoch, 11. September 13
The big graphs are visible

Facebook Open Graph

4
Mittwoch, 11. September 13
The big graphs are visible

Facebook Open Graph

4
Mittwoch, 11. September 13
Social Network

Mittwoch, 11. September 13
(Network) Impact Analysis

Mittwoch, 11. September 13
Route Finding

Mittwoch, 11. September 13
Recommendations

Mittwoch, 11. September 13
Logistics

Mittwoch, 11. September 13
Access Control

Mittwoch, 11. September 13
Fraud Analysis

Mittwoch, 11. September 13
Graphs are everywhere !!
Devices

Users

Software

Stories

Computers

Internet

Creativity Visuals

Art

Networks Service...
Graph Databases

Mittwoch, 11. September 13
23
Mittwoch, 11. September 13
You know relational

23
Mittwoch, 11. September 13
You know relational

23
Mittwoch, 11. September 13
You know relational

customer
23
Mittwoch, 11. September 13
You know relational

customer
23
Mittwoch, 11. September 13

account
You know relational

customer
23
Mittwoch, 11. September 13

cust_acct

account
You know relational

customer
23
Mittwoch, 11. September 13

cust_acct

account
You know relational

customer
23
Mittwoch, 11. September 13

cust_acct

account
You know relational

customer
23
Mittwoch, 11. September 13

cust_acct

account
You know relational
now consider relationships...

23
Mittwoch, 11. September 13
You know relational
now consider relationships...

23
Mittwoch, 11. September 13
You know relational
now consider relationships...

23
Mittwoch, 11. September 13
You know relational
now consider relationships...

23
Mittwoch, 11. September 13
You know relational
now consider relationships...

23
Mittwoch, 11. September 13
You know relational
now consider relationships...

23
Mittwoch, 11. September 13
23
Mittwoch, 11. September 13
We're talking about a Property Graph

24
Mittwoch, 11. September 13
We're talking about a Property Graph

Nodes

24
Mittwoch, 11. September 13
We're talking about a Property Graph

Nodes

Relationships

24
Mittwoch, 11. September 13
We're talking about a Property Graph

Joh
a

Em

il

knows

Nodes

Alli

Tob
i

as

Pet
e

knows

rés

knows

Miic
Mc
a
a
...
How do I query this graph?
START user=node:User(name = ‘Andreas’)
MATCH (user)<-[:OWNS]-(account)-[:CONTAINS]->
// lookup ...
How do I query this graph?

SELECT skills.*, user_skill.*
FROM users
JOIN user_skill ON users.id = user_skill.user_id
JOIN...
Whiteboard friendly

4
Mittwoch, 11. September 13
Whiteboard friendly

Peter

Andreas

Allison
Emil

4
Mittwoch, 11. September 13
Whiteboard friendly

Andreas

Peter
knows

knows

knows

Allison
Emil

4
Mittwoch, 11. September 13

knows
Whiteboard friendly

Andreas

Peter
knows

knows

knows

Allison
Emil

4
Mittwoch, 11. September 13

knows
4
Mittwoch, 11. September 13
(Neo4j) -[:IS_A]->(Graph Database)

4
Mittwoch, 11. September 13
(Neo4j) -[:IS_A]->(Graph Database)

-

4
Mittwoch, 11. September 13

A Graph Database:
(Neo4j) -[:IS_A]->(Graph Database)

-

A Graph Database:

-

4
Mittwoch, 11. September 13

a schema-free Property Graph
(Neo4j) -[:IS_A]->(Graph Database)

-

A Graph Database:

-

4
Mittwoch, 11. September 13

a schema-free Property Graph
pe...
(Neo4j) -[:IS_A]->(Graph Database)

-

A Graph Database:

-

4
Mittwoch, 11. September 13

a schema-free Property Graph
pe...
(Neo4j) -[:IS_A]->(Graph Database)

-

A Graph Database:

-

Mittwoch, 11. September 13

perfect for complex, highly conne...
(Neo4j) -[:IS_A]->(Graph Database)

-

A Graph Database:

-

Mittwoch, 11. September 13

perfect for complex, highly conne...
(Neo4j) -[:IS_A]->(Graph Database)

-

A Graph Database:

-

Mittwoch, 11. September 13

perfect for complex, highly conne...
(Neo4j) -[:IS_A]->(Graph Database)

-

A Graph Database:

-

Mittwoch, 11. September 13

perfect for complex, highly conne...
(Neo4j) -[:IS_A]->(Graph Database)

-

A Graph Database:

-

Mittwoch, 11. September 13

perfect for complex, highly conne...
(Neo4j) -[:IS_A]->(Graph Database)
Master/
Slave

embedded
4
Mittwoch, 11. September 13

_TO
LES

S_
AS

LI
CE

SC A

.net...
(Cypher) -[:IS_A]->(Graph Query Language)

•

Declarative query language

•

Describe what you want, not how
Based on grap...
Spring Data Neo4j

Mittwoch, 11. September 13
Spring Data Neo4j

• Spring Data:

SpringSource initiative to
give Spring developers easy, consistent
access to the world ...
O‘Reilly Spring Data Book
„Modern Data Access for Enterprise Java“

• book by the Spring Data project leads
• introduction...
Spring Data Neo4j features
• Annotation-based programming model
• Spring Data Repository support
• Neo4j Cypher Query and ...
Spring Data Neo4j features
• Entity types stored in the graph database
• Dynamic type projection (duck typing)
• Cross-sto...
Classic Neo4j domain class
public class User {
private final Node underlyingNode;
User( final Node node ) {
underlyingNode...
Spring Data Neo4j domain class

@NodeEntity
public class User {
@GraphId private Long id;
private String name;
}

Mittwoch...
Spring Data Neo4j domain class

@NodeEntity
public class User {
@GraphId private Long id;
@Indexed(unique = true)
private ...
Defining entity classes

Mittwoch, 11. September 13
Defining entity classes
• @NodeEntity

• Represents a node in the graph
• Fields saved as properties on node
• References ...
Defining entity classes

Mittwoch, 11. September 13
Defining entity classes
• @RelationshipEntity

• Represents a relationship in the graph
• Fields saved as properties on re...
Tweet domain class
@NodeEntity
public class Tweet {
@GraphId private Long id;
@Indexed(unique=true) Long tweetId;
String t...
Interface based Repositories
• based on Repository infrastructure in Spring Data Commons
• just define the interface and t...
Repositories
interface TweetRepository extends GraphRepository<Tweet> {
Tweet findByTweetId(String id);
Collection<Tweet> ...
Neo4j-Template (I)
• well known Spring Template Pattern
• Resource / Transaction Management
• Convenience Methods
• Nodes ...
Small Example App
-uses Spring Social (minimally)
-Simple Domain: Tweets, Users, Tags
-connected Entities
-Repositories, S...
Whiteboard friendly - Abstract
:User
ED
ST
PO

:Tag

TAGGED

:Tweet

TAGG
ED

:Tag
ED

:User

Mittwoch, 11. September 13

...
Whiteboard friendly - Abstract
:User
ED
ST
PO

:Tag

TAGGED

:Tweet

TAGG
ED

:Tag
:User

Mittwoch, 11. September 13

S
ON...
Whiteboard friendly - Example

Attending
the #S2GX
#SDN session by
@mesirii

Looking
forward to my #SDN
session

Mittwoch,...
Whiteboard friendly - Example
@peterneubauer
ED
ST
PO

Attending
the #S2GX
#SDN session by
@mesirii

@mesirii

Mittwoch, 1...
Whiteboard friendly - Example
@peterneubauer
ED
ST
PO

Attending
the #S2GX
#SDN session by
@mesirii

@mesirii

Mittwoch, 1...
Whiteboard friendly - Example
@peterneubauer
ED
ST
PO

Attending
the #S2GX
#SDN session by
@mesirii

@mesirii

Mittwoch, 1...
Twitter - Graph Data Model

4
Mittwoch, 11. September 13
Spring Data Neo4j - Sample Domain Class & Service

4
Mittwoch, 11. September 13
Neo4j - Sample Graph Query
START tag1=node:Tag("tag:*obama*")
> MATCH tag1<-[:TAG]-tweet-[:sender]->user,
user<-[:sender]-...
Real World Use-Cases with

Mittwoch, 11. September 13
(Neo4j) -[:LOVES]-> (Our Customers)

52
Mittwoch, 11. September 13
(Neo4j) -[:LOVES]-> (Our Customers)

52
Mittwoch, 11. September 13
Challenges with „Real World Use-Cases“
• hard to get permission to talk in public
• complex domain models, challenging imp...
Airline: Media Asset Management

54
Mittwoch, 11. September 13
Airline: Media Asset Management
• Many movies, music, tv-series
• Each of them with publishers, publication rights
• Permi...
Airline: Media Asset Management (Technical)
• Neo4j Embedded
• SDN Advanced Mapping
• REST Server with Spring WebMVC
• Thy...
Airline: Media Asset Management
Metadata

Route
Airport

IN
ST
AL

MediaBox

MediaBox

Airport
Country

57
Mittwoch, 11. S...
Airline: Media Asset Management

58
Mittwoch, 11. September 13
Airline: Media Asset Management

58
Mittwoch, 11. September 13
Airline: Media Asset Management

58
Mittwoch, 11. September 13
Airline: Media Asset Management

58
Mittwoch, 11. September 13
Airline: Media Asset Management

58
Mittwoch, 11. September 13
Junisphere: Complex structural document handling

59
Mittwoch, 11. September 13
Junisphere: Complex structural document handling
• Business proccess to IT systems mapping (Exec View)
• Conways Law
– Bus...
Junisphere: Complex structural document handling

•Junisphere AG is a Zurich-based IT solutions
provider
•Founded in 2001....
Junisphere: Complex structural document handling

•“Business Service Management” requires mapping of
complex graph, coveri...
Junisphere: Complex structural document handling

•Actively sought out a Java-based solution that could
store data as a gr...
Publisher: Dictionary Translation Contract Handling
• dictionary contents is created by many parties
• for each contributi...
Junisphere: eReality (technical)
• Java Embedded Neo4j
• Spring Data Neo4j
• Integrated in Java Service Architecture
• XML...
Junisphere: eReality (Model)
Process

Process
DEPENDS_ON

KPI

Activity

Activity
DEPENDS_ON

KPI
Flow Model

DEFINES

DEP...
Our requirements
> Convenient modelling of our domain
> Pushing states from measurements in "real time" through the
model ...
Our requirements
> Convenient modelling of our domain
> Pushing states from measurements in "real time" through the
model ...
Our requirements
> Convenient modelling of our domain
> Pushing states from measurements in "real time" through the
model ...
Our requirements
> Convenient modelling of our domain

Perfect fit

> Pushing states from measurements in "real time" thro...
Our requirements
> Convenient modelling of our domain
> Pushing states from measurements in "real time" through the
model ...
Our requirements
> Convenient modelling of our domain
> Pushing states from measurements in "real time" through the
model ...
Our requirements
> Convenient modelling of our domain
> Pushing states from measurements in "real time" through the
model ...
WhyOwnIt - Ownership Sharing Service

68
Mittwoch, 11. September 13
WhyOwnIt - Ownership Sharing Service
• Sharing Culture
–You own things you only seldomly need
–You need things you don‘t o...
WhyOwnIt - Ownership Sharing Service
Category
Category

OWNS

Thing

Person

TRUST
HAS

NEEDS

RATED

Person
RATED

Person...
WhyOwnIt - Ownership Sharing Service

71
Mittwoch, 11. September 13
WhyOwnIt - Ownership Sharing Service

71
Mittwoch, 11. September 13
WhyOwnIt - Ownership Sharing Service

71
Mittwoch, 11. September 13
WhyOwnIt - Ownership Sharing Service

71
Mittwoch, 11. September 13
WhyOwnIt - Ownership Sharing Service

71
Mittwoch, 11. September 13
WhyOwnIt - Ownership Sharing Service

71
Mittwoch, 11. September 13
WhyOwnIt - Ownership Sharing Service

72
Mittwoch, 11. September 13
Gamesys - Add Social to Gaming
• Classical Pay and Win Games (Poker & Co)
• Spring-Web-App with Oracle backend
• Add Socia...
Gamesys - Add Social to Gaming
Player
S
AY
L

Player
YS
LA

P

P

Round

BUDDY

BUD

REF
ERS

S
FER
RE

Player
BUDDY

DY

...
Music Sharing/Discovery/Recommendation Service

75
Mittwoch, 11. September 13
Music Sharing/Discovery/Recommendation Service
• Recommend new artists and songs to your users
– take their previous liste...
Music Sharing/Discovery/Recommendation Service
Song
Song

BY

Label

User

LIS

W
OR
K

S_

W
IT
H

Band

TE
NE
D

Artist
...
Music Sharing/Discovery/Recommendation Service

78
Mittwoch, 11. September 13
Other Use-Cases
• Financial Services - Asset / Account Management
• Bank - Permission Management and Authorization
– Entit...
SAN/NAS Provider - Lifetime device tracking
• Networked Storage Boxes
– many components, disks, controllers, power supply,...
Game Retailer
• Buy and Download & Game on Demand
• Fraud detection
–delayed payments, charge backs, fradulent keys are in...
Open Source Projects

82
Mittwoch, 11. September 13
Cineasts.net - a social movie database

Check Out: http://spring.neo4j.org/tutorial
Mittwoch, 11. September 13
Spring Data Neo4j Guidebook
“Good Relationships”
“I’m excited about Spring Data Neo4j.... makes working with Neo4j
amazing...
Spring Data Neo4j Guidebook
“Good Relationships”
“I’m excited about Spring Data Neo4j.... makes working with Neo4j
amazing...
Hubway Data Challenge - Import
• Boston Bike Sharing Network
• Import using Spring Data Neo4j
• Visualization with Cypher ...
Agent Spring - Energy Market Modeling

86
Mittwoch, 11. September 13
Agent Smith - Energy Market Modeling
• Research project (open source)
• Model energy producers and consumers
• Trace depen...
How do I get started?

4
Mittwoch, 11. September 13
How do I get started?
๏

Documentation

4
Mittwoch, 11. September 13
How do I get started?
๏

Documentation

• http://spring.neo4j.org

4
Mittwoch, 11. September 13
How do I get started?
๏

Documentation

• http://spring.neo4j.org
• Developer-Notes

4
Mittwoch, 11. September 13
How do I get started?
๏

Documentation

• http://spring.neo4j.org
• Developer-Notes
• Spring Data Book

4
Mittwoch, 11. Se...
How do I get started?
๏

Documentation

• http://spring.neo4j.org
• Developer-Notes
• Spring Data Book
• Good Relationship...
How do I get started?
๏

๏

Documentation

• http://spring.neo4j.org
• Developer-Notes
• Spring Data Book
• Good Relations...
How do I get started?
๏

๏

Documentation

• http://spring.neo4j.org
• Developer-Notes
• Spring Data Book
• Good Relations...
How do I get started?
๏

๏
๏

Documentation

• http://spring.neo4j.org
• Developer-Notes
• Spring Data Book
• Good Relatio...
How do I get started?
๏

๏
๏

Documentation

• http://spring.neo4j.org
• Developer-Notes
• Spring Data Book
• Good Relatio...
How do I get started?
๏

๏
๏

Documentation

• http://spring.neo4j.org
• Developer-Notes
• Spring Data Book
• Good Relatio...
How do I get started?
๏

๏
๏

Documentation

• http://spring.neo4j.org
• Developer-Notes
• Spring Data Book
• Good Relatio...
How do I get started?
๏

๏
๏

Documentation

• http://spring.neo4j.org
• Developer-Notes
• Spring Data Book
• Good Relatio...
The book on your seat! -“Graph Databases”
Written by experts - Emil Eifrem, Ian Robinson, Jim Webber
Compliments of Neo Te...
Bookmark: GraphConnect Oct 3-4 2013 San Francisco
$99

4
Mittwoch, 11. September 13

tick

et c

oup
on
in

you
rb
ook
Meetup - Tomorrow (Wed) Evening
Spring Data Neo4j: Past, Current & Future
• Wed, Sep 11, 6-9PM
• David's Restaurant,
5151 ...
Thank you !
Questions ?

Mittwoch, 11. September 13
Upcoming SlideShare
Loading in...5
×

Real World Applications with Spring Data Neo4j

1,459

Published on

Speaker: Michael Hunger
Spring Data Neo4j in its 2.x version is a mature implementation of an object graph mapping framework, that both closely integrates with the Spring Framework and also offers unique modeling and querying opportunities by having chosen the property graph data model. This talk presents how several Neo Technology customers already put Spring Data Neo4j into production. They stem from a variety of domains – gaming, server center monitoring, education, appliance management, energy market simulation and more. Based on those use-cases we discuss how to implement real-world applications with Spring Data Neo4j and the Spring Framework. First we want to discuss the business problems they had to solve and why a graph database was a good fit for them. After a quick intro to Spring Data Neo4j and Neo4j, we will talk about modeling choices and the benefits and implications of choosing a rich data model. We'll follow the example domains into code, from annotated domain entities, to the usage of the powerful repository abstractions. Showing how to use Neo4jTemplate to implement some lower level functionality will round off the core library usage. Building on this, we look into the integration aspects, how Spring Data Neo4j can be combined with other Spring projects, like Spring Data MongoDB, Spring Data REST, and Spring Batch. A quick demonstration shows on how to access Spring Data Neo4j from the (Web)-UI layer. The talk will close of with a glimpse into the future: Neo4j added some very interesting features in its 2.0 release. From node labels, automatic indexes and constraints to a transactional http endpoint for Cypher. These changes make it possible to rethink some aspects of Spring Data Neo4j, like type representation and indexing. But also some bigger ideas for changes ahead like basing the object graph mapping completely on Neo4j's Cypher Graph Query Language will be touched.

Published in: Technology

Transcript of "Real World Applications with Spring Data Neo4j"

  1. 1. Graph Databases Rock - Learn Why! By Michael Hunger Neo Technology © 2013 SpringOne 2GX. All rights reserved. Do not distribute without permission. Mittwoch, 11. September 13
  2. 2. The book on your seat! -“Graph Databases” Written by experts - Emil Eifrem, Ian Robinson, Jim Webber Compliments of Neo Technology • The definitive guide on graph databases • discusses graph concepts, history and data model • compares with other NoSQL technologies • details use-cases from different domains • explains Neo4j‘s humane query language „Cypher“ Mittwoch, 11. September 13
  3. 3. Bookmark: GraphConnect Oct 3-4 2013 San Francisco $99 4 Mittwoch, 11. September 13 tick et c oup on in you rb ook
  4. 4. Meetup - Tomorrow (Wed) Evening Spring Data Neo4j: Past, Current & Future • Wed, Sep 11, 6-9PM • David's Restaurant, 5151 Stars and Stripes Drive • Just around the corner • Enjoy dessert, wine, beer • Chance to win a signed Spring Data Book http://www.meetup.com/graphdb-sf/events/138428012/ 4 Mittwoch, 11. September 13
  5. 5. (SDN)<-[:LEARN]-(YOU)-[:GET]->(Book) GraphConnect ticket Book Spring Data Neo4j Neo4j? Spring? YOU NoSQL? Sleep? Coffee? Mittwoch, 11. September 13 Awake?
  6. 6. (Michael)-[:CODES]->(SDN)-[:USES]->(Neo4j) console Cypher community graph Kernel Community ME Server Customers Spring Mittwoch, 11. September 13 Cloud
  7. 7. Agenda 1. Connected Data, Graph Databases and Neo4j 2. Spring Data Neo4j 3. Twitter-Graph - Small Example App 4. Real World Customers and Use-Cases 5. Summary 6. Q & A Mittwoch, 11. September 13
  8. 8. NOSQL Mittwoch, 11. September 13
  9. 9. Data Complexity , semi-structure, complexity = f(size Mittwoch, 11. September 13 connectedness)
  10. 10. NOSQL databases Couch KeyValue Riak Redis Document NOSQL Mongo Column oriented Graph Relational Cassandra MySQL Mittwoch, 11. September 13 Postgres Neo4j
  11. 11. Volume vs. Complexity & NOSQL databases Mittwoch, 11. September 13
  12. 12. Volume vs. Complexity & NOSQL databases Volume ~= Size Mittwoch, 11. September 13
  13. 13. Density ~= Complexity Volume vs. Complexity & NOSQL databases Volume ~= Size Mittwoch, 11. September 13
  14. 14. Density ~= Complexity Volume vs. Complexity & NOSQL databases Key-Value Store Volume ~= Size Mittwoch, 11. September 13
  15. 15. Density ~= Complexity Volume vs. Complexity & NOSQL databases Column Family Key-Value Store Volume ~= Size Mittwoch, 11. September 13
  16. 16. Density ~= Complexity Volume vs. Complexity & NOSQL databases Document Databases Column Family Key-Value Store Volume ~= Size Mittwoch, 11. September 13
  17. 17. Density ~= Complexity Volume vs. Complexity & NOSQL databases RDBMS Document Databases Column Family Key-Value Store Volume ~= Size Mittwoch, 11. September 13
  18. 18. Volume vs. Complexity & NOSQL databases Density ~= Complexity Graph Databases RDBMS Document Databases Column Family Key-Value Store Volume ~= Size Mittwoch, 11. September 13
  19. 19. Volume vs. Complexity & NOSQL databases Density ~= Complexity Graph Databases 90% of use cases Mittwoch, 11. September 13 RDBMS Document Databases Column Family Key-Value Store Volume ~= Size
  20. 20. Volume vs. Complexity & NOSQL databases Graph Databases Density ~= Complexity RDBMS Document Databases Column Family Key-Value Store 90% of use cases Mittwoch, 11. September 13 Volume ~= Size
  21. 21. Are Graphs Everywhere ? Mittwoch, 11. September 13
  22. 22. The big graphs are visible 4 Mittwoch, 11. September 13
  23. 23. The big graphs are visible Facebook Open Graph 4 Mittwoch, 11. September 13
  24. 24. The big graphs are visible Facebook Open Graph 4 Mittwoch, 11. September 13
  25. 25. Social Network Mittwoch, 11. September 13
  26. 26. (Network) Impact Analysis Mittwoch, 11. September 13
  27. 27. Route Finding Mittwoch, 11. September 13
  28. 28. Recommendations Mittwoch, 11. September 13
  29. 29. Logistics Mittwoch, 11. September 13
  30. 30. Access Control Mittwoch, 11. September 13
  31. 31. Fraud Analysis Mittwoch, 11. September 13
  32. 32. Graphs are everywhere !! Devices Users Software Stories Computers Internet Creativity Visuals Art Networks Services Business Work Science ERP Friends Neighbor Family Retail Geo Cloud Travel Biology Chemistry Proteins Society Politics Reactions History 21 Mittwoch, 11. September 13 Environments Genes 7
  33. 33. Graph Databases Mittwoch, 11. September 13
  34. 34. 23 Mittwoch, 11. September 13
  35. 35. You know relational 23 Mittwoch, 11. September 13
  36. 36. You know relational 23 Mittwoch, 11. September 13
  37. 37. You know relational customer 23 Mittwoch, 11. September 13
  38. 38. You know relational customer 23 Mittwoch, 11. September 13 account
  39. 39. You know relational customer 23 Mittwoch, 11. September 13 cust_acct account
  40. 40. You know relational customer 23 Mittwoch, 11. September 13 cust_acct account
  41. 41. You know relational customer 23 Mittwoch, 11. September 13 cust_acct account
  42. 42. You know relational customer 23 Mittwoch, 11. September 13 cust_acct account
  43. 43. You know relational now consider relationships... 23 Mittwoch, 11. September 13
  44. 44. You know relational now consider relationships... 23 Mittwoch, 11. September 13
  45. 45. You know relational now consider relationships... 23 Mittwoch, 11. September 13
  46. 46. You know relational now consider relationships... 23 Mittwoch, 11. September 13
  47. 47. You know relational now consider relationships... 23 Mittwoch, 11. September 13
  48. 48. You know relational now consider relationships... 23 Mittwoch, 11. September 13
  49. 49. 23 Mittwoch, 11. September 13
  50. 50. We're talking about a Property Graph 24 Mittwoch, 11. September 13
  51. 51. We're talking about a Property Graph Nodes 24 Mittwoch, 11. September 13
  52. 52. We're talking about a Property Graph Nodes Relationships 24 Mittwoch, 11. September 13
  53. 53. We're talking about a Property Graph Joh a Em il knows Nodes Alli Tob i as Pet e knows rés knows Miic Mc a a knows r knows knows knows knows De lia Properties (each a key+value) + Indexes (for easy look-ups) Mittwoch, 11. September 13 Lar s knows And rea s knows 24 knows And son knows Relationships n knows Mi c hae l Ian
  54. 54. How do I query this graph? START user=node:User(name = ‘Andreas’) MATCH (user)<-[:OWNS]-(account)-[:CONTAINS]-> // lookup starting point in an index start n=node:People(name = ‘Andreas’) (booking)-[:TO]->(recipient) RETURN recipient, count(*) ORDER BY count DESC LIMIT 10 And Mittwoch, 11. September 13 rea s
  55. 55. How do I query this graph? 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 Mittwoch, 11. September 13 START user = node:() MATCH (user)-[user_skill]->(skill) RETURN skill, user_skill 26
  56. 56. Whiteboard friendly 4 Mittwoch, 11. September 13
  57. 57. Whiteboard friendly Peter Andreas Allison Emil 4 Mittwoch, 11. September 13
  58. 58. Whiteboard friendly Andreas Peter knows knows knows Allison Emil 4 Mittwoch, 11. September 13 knows
  59. 59. Whiteboard friendly Andreas Peter knows knows knows Allison Emil 4 Mittwoch, 11. September 13 knows
  60. 60. 4 Mittwoch, 11. September 13
  61. 61. (Neo4j) -[:IS_A]->(Graph Database) 4 Mittwoch, 11. September 13
  62. 62. (Neo4j) -[:IS_A]->(Graph Database) - 4 Mittwoch, 11. September 13 A Graph Database:
  63. 63. (Neo4j) -[:IS_A]->(Graph Database) - A Graph Database: - 4 Mittwoch, 11. September 13 a schema-free Property Graph
  64. 64. (Neo4j) -[:IS_A]->(Graph Database) - A Graph Database: - 4 Mittwoch, 11. September 13 a schema-free Property Graph perfect for complex, highly connected data
  65. 65. (Neo4j) -[:IS_A]->(Graph Database) - A Graph Database: - 4 Mittwoch, 11. September 13 a schema-free Property Graph perfect for complex, highly connected data A Graph Database:
  66. 66. (Neo4j) -[:IS_A]->(Graph Database) - A Graph Database: - Mittwoch, 11. September 13 perfect for complex, highly connected data A Graph Database: - 4 a schema-free Property Graph reliable with real ACID Transactions
  67. 67. (Neo4j) -[:IS_A]->(Graph Database) - A Graph Database: - Mittwoch, 11. September 13 perfect for complex, highly connected data A Graph Database: - 4 a schema-free Property Graph reliable with real ACID Transactions scalable: billions of nodes and relationships
  68. 68. (Neo4j) -[:IS_A]->(Graph Database) - A Graph Database: - Mittwoch, 11. September 13 perfect for complex, highly connected data A Graph Database: - 4 a schema-free Property Graph reliable with real ACID Transactions scalable: billions of nodes and relationships fast with millons traversals / second
  69. 69. (Neo4j) -[:IS_A]->(Graph Database) - A Graph Database: - Mittwoch, 11. September 13 perfect for complex, highly connected data A Graph Database: - 4 a schema-free Property Graph reliable with real ACID Transactions scalable: billions of nodes and relationships fast with millons traversals / second Server with REST API, or Embeddable on the JVM
  70. 70. (Neo4j) -[:IS_A]->(Graph Database) - A Graph Database: - Mittwoch, 11. September 13 perfect for complex, highly connected data A Graph Database: 4 a schema-free Property Graph reliable with real ACID Transactions scalable: billions of nodes and relationships fast with millons traversals / second Server with REST API, or Embeddable on the JVM higher-performance with High-Availability (read scaling)
  71. 71. (Neo4j) -[:IS_A]->(Graph Database) Master/ Slave embedded 4 Mittwoch, 11. September 13 _TO LES S_ AS LI CE SC A .net RUN S_A S billions >1 Nodes M trav/s NS ED N _O Clojure JS S TE RA EG T IN PROVIDES NS RU Ruby HIG H_A VA IL. R U N Server Lucene Index Heroku _L IK E ACID TX MySQL Mongo
  72. 72. (Cypher) -[:IS_A]->(Graph Query Language) • Declarative query language • Describe what you want, not how Based on graph pattern matching Example: START user=node:User(name=”Michael”), # index lookup MATCH (user)-[:SKILL]->()<-[rating:SKILL]-(colleague) WHERE rating.ability > 3 RETURN colleague.name, count(*) ORDER BY count(*) DESC LIMIT 10 4 Mittwoch, 11. September 13
  73. 73. Spring Data Neo4j Mittwoch, 11. September 13
  74. 74. Spring Data Neo4j • Spring Data: SpringSource initiative to give Spring developers easy, consistent access to the world of NOSQL databases • projects support different data-stores • convenient, common access patterns • but don‘t hide the power of the database • Spring Data Neo4j is the integration library for Neo4j Mittwoch, 11. September 13
  75. 75. O‘Reilly Spring Data Book „Modern Data Access for Enterprise Java“ • book by the Spring Data project leads • introduction to Spring Data & SD-repositories • covers all sub-projects • consistent sample project across the sub-projects • e-commerce domain • I give one out at the Meetup tomorrow evening! Mittwoch, 11. September 13
  76. 76. Spring Data Neo4j features • Annotation-based programming model • Spring Data Repository support • Neo4j Cypher Query and Traversal support –on dynamic fields and via repository methods • Neo4j indexing support (includes fulltext and numeric range queries) • Always possible to drop down to Neo4j APIs 35 Mittwoch, 11. September 13
  77. 77. Spring Data Neo4j features • Entity types stored in the graph database • Dynamic type projection (duck typing) • Cross-store support for partial JPA / graph entities • Support for JSR-303 (bean validation) • Support for the Neo4j Server (remote server and server extension) • Neo4jTemplate with exception translation, optional transaction management and more 36 Mittwoch, 11. September 13
  78. 78. Classic Neo4j domain class public class User { private final Node underlyingNode; User( final Node node ) { underlyingNode = node; } public Node getUnderlyingNode() { return underlyingNode; } public final String getName() { return (String) underlyingNode.getProperty( “name” ); } public void setName( final String name ) { underlyingNode.setProperty( “name”, name ); } } Mittwoch, 11. September 13
  79. 79. Spring Data Neo4j domain class @NodeEntity public class User { @GraphId private Long id; private String name; } Mittwoch, 11. September 13
  80. 80. Spring Data Neo4j domain class @NodeEntity public class User { @GraphId private Long id; @Indexed(unique = true) private String name; } Mittwoch, 11. September 13
  81. 81. Defining entity classes Mittwoch, 11. September 13
  82. 82. Defining entity classes • @NodeEntity • Represents a node in the graph • Fields saved as properties on node • References stored as relationships between nodes • Instantiated using Java ‘new’ keyword, like any POJO • Also returned by lookup mechanisms • Type information stored in the graph Mittwoch, 11. September 13
  83. 83. Defining entity classes Mittwoch, 11. September 13
  84. 84. Defining entity classes • @RelationshipEntity • Represents a relationship in the graph • Fields saved as properties on relationship • Special fields for start- and end-nodes • Only returned by lookup methods Mittwoch, 11. September 13
  85. 85. Tweet domain class @NodeEntity public class Tweet { @GraphId private Long id; @Indexed(unique=true) Long tweetId; String text; @Fetch User sender; // eager loading @RelatedTo(type="TAGGED") Collection<Tag> tags; @RelatedTo(type="MENTIONS") Set<User> mentions; @RelatedTo(type="SOURCE") Tweet source; } Mittwoch, 11. September 13
  86. 86. Interface based Repositories • based on Repository infrastructure in Spring Data Commons • just define the interface and the namespace configuration • provide out-of-the-box support for –CRUD-Operations –Index-Lookups –Traversal-Execution –Annotated Graph-Queries (Cypher) –Derived Queries –Spatial Queries • extensible via custom methods with provided implementations 42 Mittwoch, 11. September 13
  87. 87. Repositories interface TweetRepository extends GraphRepository<Tweet> { Tweet findByTweetId(String id); Collection<Tweet> findByTagsName(String name); @Query("start user=node({0}) match user<-[:SENDER]-tweet-[:TAGGED]->tag return distinct tag.name") Page<String> findUserTags(User user); } <neo4j:repositories base-package="com.example.repositories"/> @Controller public class TwitterController { @Autowired TweetRepository tweetRepository; @RequestMapping(value = "/tweet/{id}",...) public String show(Model model, @PathVariable String id) { Tweet tweet = tweetRepository.findByTweetId(id); model.addAttribute("tweet", tweet); return "/tweet/show"; }} 43 Mittwoch, 11. September 13
  88. 88. Neo4j-Template (I) • well known Spring Template Pattern • Resource / Transaction Management • Convenience Methods • Nodes and Entities handling & conversion • Fluent Query Result Handling • Works also via REST with Neo4j-Server • Exception Translation 44 Mittwoch, 11. September 13
  89. 89. Small Example App -uses Spring Social (minimally) -Simple Domain: Tweets, Users, Tags -connected Entities -Repositories, Service -standalone App with -embedded Neo4j-Database -Neo4j-Server https://github.com/jexp/sdn-twitter Mittwoch, 11. September 13
  90. 90. Whiteboard friendly - Abstract :User ED ST PO :Tag TAGGED :Tweet TAGG ED :Tag ED :User Mittwoch, 11. September 13 POSTED :Tweet G TA G
  91. 91. Whiteboard friendly - Abstract :User ED ST PO :Tag TAGGED :Tweet TAGG ED :Tag :User Mittwoch, 11. September 13 S ON I NT ME POSTED ED :Tweet G TA G
  92. 92. Whiteboard friendly - Example Attending the #S2GX #SDN session by @mesirii Looking forward to my #SDN session Mittwoch, 11. September 13
  93. 93. Whiteboard friendly - Example @peterneubauer ED ST PO Attending the #S2GX #SDN session by @mesirii @mesirii Mittwoch, 11. September 13 POSTED Looking forward to my #SDN session
  94. 94. Whiteboard friendly - Example @peterneubauer ED ST PO Attending the #S2GX #SDN session by @mesirii @mesirii Mittwoch, 11. September 13 S ON I NT ME POSTED Looking forward to my #SDN session
  95. 95. Whiteboard friendly - Example @peterneubauer ED ST PO Attending the #S2GX #SDN session by @mesirii @mesirii Mittwoch, 11. September 13 S ON I NT ME POSTED TAGGED #S2GX TAGG ED Looking forward to my #SDN session #SDN ED G TA G
  96. 96. Twitter - Graph Data Model 4 Mittwoch, 11. September 13
  97. 97. Spring Data Neo4j - Sample Domain Class & Service 4 Mittwoch, 11. September 13
  98. 98. Neo4j - Sample Graph Query START tag1=node:Tag("tag:*obama*") > MATCH tag1<-[:TAG]-tweet-[:sender]->user, user<-[:sender]-tweet2-[:TAG]->tag2 > WHERE tag2.tag =~ "(?i).*romney.*" > RETURN count(*) as cnt, tag1.tag,tag2.tag +--------------------------------------+ > ORDER BY count(*) DESC | cnt | tag1.tag | tag2.tag | +--------------------------------------+ > LIMIT 10; | 440 | "obama" | "voteromney" | | 148 | "obama" | "romneyryan2012" | | 65 | "obama" | "romney" | | 56 | "voteobama" | "romneyryan" | | 42 | "voteobama" | "romney" | +--------------------------------------+ 5 rows 194 ms 4 Mittwoch, 11. September 13
  99. 99. Real World Use-Cases with Mittwoch, 11. September 13
  100. 100. (Neo4j) -[:LOVES]-> (Our Customers) 52 Mittwoch, 11. September 13
  101. 101. (Neo4j) -[:LOVES]-> (Our Customers) 52 Mittwoch, 11. September 13
  102. 102. Challenges with „Real World Use-Cases“ • hard to get permission to talk in public • complex domain models, challenging implementations • hard to get insights in implementation • challenges / feedback seldomly communicated • this presentation is a „best effort“ mix of – actual, – inferred, – adapted information 53 Mittwoch, 11. September 13
  103. 103. Airline: Media Asset Management 54 Mittwoch, 11. September 13
  104. 104. Airline: Media Asset Management • Many movies, music, tv-series • Each of them with publishers, publication rights • Permissions, Broadcasting rules • Asset Management/Tracking – also technical components, virtual containers • Streaming Box Management (What is where, Documentation) • Impact analytics of legal changes or program updates • Decision support system • Complex domain model 55 Mittwoch, 11. September 13
  105. 105. Airline: Media Asset Management (Technical) • Neo4j Embedded • SDN Advanced Mapping • REST Server with Spring WebMVC • Thymeleaf • Rich UI with – CRUD for all 50 elements – dependency network visualization, with interactive navigation – advanced query generator / console 56 Mittwoch, 11. September 13
  106. 106. Airline: Media Asset Management Metadata Route Airport IN ST AL MediaBox MediaBox Airport Country 57 Mittwoch, 11. September 13 Movie Recording REGULATES APPLIES_TO LE D Aircraft TV-Series APPLIES _TO LED TAL INS STORED_ON Aircraft Metadata Metadata
  107. 107. Airline: Media Asset Management 58 Mittwoch, 11. September 13
  108. 108. Airline: Media Asset Management 58 Mittwoch, 11. September 13
  109. 109. Airline: Media Asset Management 58 Mittwoch, 11. September 13
  110. 110. Airline: Media Asset Management 58 Mittwoch, 11. September 13
  111. 111. Airline: Media Asset Management 58 Mittwoch, 11. September 13
  112. 112. Junisphere: Complex structural document handling 59 Mittwoch, 11. September 13
  113. 113. Junisphere: Complex structural document handling • Business proccess to IT systems mapping (Exec View) • Conways Law – Business Process Structure resembles Information Architecture it runs on • Map and trace both –Initial and continous updates • Optimize both sides –Servers and Services • http://www.neotechnology.com/junispheres-usecase/ 60 Mittwoch, 11. September 13
  114. 114. Junisphere: Complex structural document handling •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 61 Mittwoch, 11. September 13
  115. 115. Junisphere: Complex structural document handling •“Business Service Management” requires mapping of 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 62 Mittwoch, 11. September 13
  116. 116. Junisphere: Complex structural document handling •Actively sought out a Java-based solution that could store data 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 63 Mittwoch, 11. September 13
  117. 117. Publisher: Dictionary Translation Contract Handling • dictionary contents is created by many parties • for each contribution you have to track the contracts 64 Mittwoch, 11. September 13
  118. 118. Junisphere: eReality (technical) • Java Embedded Neo4j • Spring Data Neo4j • Integrated in Java Service Architecture • XML-Editor • Device/HW-Scanners report back model changes • Models are trees/networks, – need to merge model-updates – with inferred updates/deltas from full models 65 Mittwoch, 11. September 13
  119. 119. Junisphere: eReality (Model) Process Process DEPENDS_ON KPI Activity Activity DEPENDS_ON KPI Flow Model DEFINES DEPENDS_ON RELATES_TO Device Service FLOWS_TO Device RUNS_ON Function DEPENDS_ON KPI Mittwoch,66 September 13 11.
  120. 120. Our requirements > Convenient modelling of our domain > Pushing states from measurements in "real time" through the model (1000 times/s) > Versioning of the model > Multi tenancy support > Different views of the same model − Availability, performance, etc. views > Referencing properties of objects from other objects 67 Mittwoch, 11. September 13
  121. 121. Our requirements > Convenient modelling of our domain > Pushing states from measurements in "real time" through the model (1000 times/s) > Versioning of the model > Multi tenancy support > Different views of the same model − Availability, performance, etc. views > Referencing properties of objects from other objects 67 Mittwoch, 11. September 13 Perfect fit
  122. 122. Our requirements > Convenient modelling of our domain > Pushing states from measurements in "real time" through the model (1000 times/s) > Versioning of the model > Multi tenancy support > Different views of the same model − Availability, performance, etc. views > Referencing properties of objects from other objects 67 Mittwoch, 11. September 13 Perfect fit Proof of concept app with 2000 traversals/s
  123. 123. Our requirements > Convenient modelling of our domain Perfect fit > Pushing states from measurements in "real time" through the model (1000 times/s) Proof of concept app with 2000 traversals/s > Versioning of the model Proof of concept solution delivered by neo4jteam > Multi tenancy support > Different views of the same model − Availability, performance, etc. views > Referencing properties of objects from other objects 67 Mittwoch, 11. September 13
  124. 124. Our requirements > Convenient modelling of our domain > Pushing states from measurements in "real time" through the model (1000 times/s) > Versioning of the model > Multi tenancy support > Different views of the same model − Availability, performance, etc. views > Referencing properties of objects from other objects 67 Mittwoch, 11. September 13 Perfect fit Proof of concept app with 2000 traversals/s Proof of concept solution delivered by neo4jteam Done with indices per tenant and filtering traversal results
  125. 125. Our requirements > Convenient modelling of our domain > Pushing states from measurements in "real time" through the model (1000 times/s) > Versioning of the model > Multi tenancy support > Different views of the same model − Availability, performance, etc. views > Referencing properties of objects from other objects 67 Mittwoch, 11. September 13 Perfect fit Proof of concept app with 2000 traversals/s Proof of concept solution delivered by neo4jteam Done with indices per tenant and filtering traversal results Feasible
  126. 126. Our requirements > Convenient modelling of our domain > Pushing states from measurements in "real time" through the model (1000 times/s) > Versioning of the model > Multi tenancy support > Different views of the same model − Availability, performance, etc. views > Referencing properties of objects from other objects 67 Mittwoch, 11. September 13 Perfect fit Proof of concept app with 2000 traversals/s Proof of concept solution delivered by neo4jteam Done with indices per tenant and filtering traversal results Feasible Storing the properties in its own nodes
  127. 127. WhyOwnIt - Ownership Sharing Service 68 Mittwoch, 11. September 13
  128. 128. WhyOwnIt - Ownership Sharing Service • Sharing Culture –You own things you only seldomly need –You need things you don‘t own • Match needs and available devices/tools – add ratings, trust, recommendations – location based, close to you for pick-up • Startup 69 Mittwoch, 11. September 13
  129. 129. WhyOwnIt - Ownership Sharing Service Category Category OWNS Thing Person TRUST HAS NEEDS RATED Person RATED Person Person 70 Mittwoch, 11. September 13 OWNS Thing
  130. 130. WhyOwnIt - Ownership Sharing Service 71 Mittwoch, 11. September 13
  131. 131. WhyOwnIt - Ownership Sharing Service 71 Mittwoch, 11. September 13
  132. 132. WhyOwnIt - Ownership Sharing Service 71 Mittwoch, 11. September 13
  133. 133. WhyOwnIt - Ownership Sharing Service 71 Mittwoch, 11. September 13
  134. 134. WhyOwnIt - Ownership Sharing Service 71 Mittwoch, 11. September 13
  135. 135. WhyOwnIt - Ownership Sharing Service 71 Mittwoch, 11. September 13
  136. 136. WhyOwnIt - Ownership Sharing Service 72 Mittwoch, 11. September 13
  137. 137. Gamesys - Add Social to Gaming • Classical Pay and Win Games (Poker & Co) • Spring-Web-App with Oracle backend • Add Social – Referral System with complex rules for inferred bonuses – Multi-Level Buddy-System – Prevent Fraud – Add more social functions on top (Groups) – Recommendations • http://www.neotechnology.com/gamesys/ 73 Mittwoch, 11. September 13
  138. 138. Gamesys - Add Social to Gaming Player S AY L Player YS LA P P Round BUDDY BUD REF ERS S FER RE Player BUDDY DY BU D D Y Game Player 74 Mittwoch, 11. September 13 Player Player
  139. 139. Music Sharing/Discovery/Recommendation Service 75 Mittwoch, 11. September 13
  140. 140. Music Sharing/Discovery/Recommendation Service • Recommend new artists and songs to your users – take their previous listen-history into account – look at what‘s hot amongst their friends – infer broader selection via bands and genres • Detect duplicates using media-fingerprints – copyright infringements – de-duplicate data 76 Mittwoch, 11. September 13
  141. 141. Music Sharing/Discovery/Recommendation Service Song Song BY Label User LIS W OR K S_ W IT H Band TE NE D Artist Song 77 Mittwoch, 11. September 13 Song RATED Artist BY PU BL IS H ES FOLLOWS User
  142. 142. Music Sharing/Discovery/Recommendation Service 78 Mittwoch, 11. September 13
  143. 143. Other Use-Cases • Financial Services - Asset / Account Management • Bank - Permission Management and Authorization – Entitlement • Data Software Provider - Impact analysis of changes – Implication of changes on the company core asset: DATA – Change tracking – Root Cause Analysis 79 Mittwoch, 11. September 13
  144. 144. SAN/NAS Provider - Lifetime device tracking • Networked Storage Boxes – many components, disks, controllers, power supply, sensors • Tracking of measurement data • Impact analytics • Early detection of anomalies • Intelligent fail over • Huge number of domain entities (~450) – generating domain classes and repositories 80 Mittwoch, 11. September 13
  145. 145. Game Retailer • Buy and Download & Game on Demand • Fraud detection –delayed payments, charge backs, fradulent keys are invalid • Convert rules to traversals –co-occurrance of sudden large sales –fradulent e-mail patterns • Combination with Oracle Infrastructure • Cross-Store 81 Mittwoch, 11. September 13
  146. 146. Open Source Projects 82 Mittwoch, 11. September 13
  147. 147. Cineasts.net - a social movie database Check Out: http://spring.neo4j.org/tutorial Mittwoch, 11. September 13
  148. 148. Spring Data Neo4j Guidebook “Good Relationships” “I’m excited about Spring Data Neo4j.... makes working with Neo4j amazingly easy, and therefore has the potential to make you more successful as a developer.” Rod Johnson, founder of Spring - Spring Data Neo4j comes with a great Guide Book, featuring: - Forewords by Rod Johnson and Emil Eifrem An easy to read, narrative tutorial walkthrough for cineasts.net A comprehensive reference for all the details Check it out: http://bit.ly/sd-book Free e-book and printed Mittwoch, 11. September 13
  149. 149. Spring Data Neo4j Guidebook “Good Relationships” “I’m excited about Spring Data Neo4j.... makes working with Neo4j amazingly easy, and therefore has the potential to make you more successful as a developer.” Rod Johnson, founder of Spring - Spring Data Neo4j comes with a great Guide Book, featuring: - Forewords by Rod Johnson and Emil Eifrem An easy to read, narrative tutorial walkthrough for cineasts.net A comprehensive reference for all the details Check it out: http://bit.ly/sd-book Free e-book and printed Mittwoch, 11. September 13
  150. 150. Hubway Data Challenge - Import • Boston Bike Sharing Network • Import using Spring Data Neo4j • Visualization with Cypher & d3.js (Chord) http://bit.ly/neo_hubway 85 Mittwoch, 11. September 13
  151. 151. Agent Spring - Energy Market Modeling 86 Mittwoch, 11. September 13
  152. 152. Agent Smith - Energy Market Modeling • Research project (open source) • Model energy producers and consumers • Trace dependencies, prices, usage, demands, market activities • Simulate impact of changes over the course of several years • Sustainable energy vs. nuclear, private usage vs. industry demand • Used in Latvia for decision making in energy politics https://github.com/alfredas/AgentSpring 87 Mittwoch, 11. September 13
  153. 153. How do I get started? 4 Mittwoch, 11. September 13
  154. 154. How do I get started? ๏ Documentation 4 Mittwoch, 11. September 13
  155. 155. How do I get started? ๏ Documentation • http://spring.neo4j.org 4 Mittwoch, 11. September 13
  156. 156. How do I get started? ๏ Documentation • http://spring.neo4j.org • Developer-Notes 4 Mittwoch, 11. September 13
  157. 157. How do I get started? ๏ Documentation • http://spring.neo4j.org • Developer-Notes • Spring Data Book 4 Mittwoch, 11. September 13
  158. 158. How do I get started? ๏ Documentation • http://spring.neo4j.org • Developer-Notes • Spring Data Book • Good Relationships 4 Mittwoch, 11. September 13
  159. 159. How do I get started? ๏ ๏ Documentation • http://spring.neo4j.org • Developer-Notes • Spring Data Book • Good Relationships Get Neo4j 4 Mittwoch, 11. September 13
  160. 160. How do I get started? ๏ ๏ Documentation • http://spring.neo4j.org • Developer-Notes • Spring Data Book • Good Relationships Get Neo4j • http://neo4j.org/download 4 Mittwoch, 11. September 13
  161. 161. How do I get started? ๏ ๏ ๏ Documentation • http://spring.neo4j.org • Developer-Notes • Spring Data Book • Good Relationships Get Neo4j • http://neo4j.org/download Participate 4 Mittwoch, 11. September 13
  162. 162. How do I get started? ๏ ๏ ๏ Documentation • http://spring.neo4j.org • Developer-Notes • Spring Data Book • Good Relationships Get Neo4j • http://neo4j.org/download Participate • http://neo4j.org/forums 4 Mittwoch, 11. September 13
  163. 163. How do I get started? ๏ ๏ ๏ Documentation • http://spring.neo4j.org • Developer-Notes • Spring Data Book • Good Relationships Get Neo4j • http://neo4j.org/download Participate • http://neo4j.org/forums • http://spring.neo4j.org/discussions 4 Mittwoch, 11. September 13
  164. 164. How do I get started? ๏ ๏ ๏ Documentation • http://spring.neo4j.org • Developer-Notes • Spring Data Book • Good Relationships Get Neo4j • http://neo4j.org/download Participate • http://neo4j.org/forums • http://spring.neo4j.org/discussions • http://neo4j.meetup.com 4 Mittwoch, 11. September 13
  165. 165. How do I get started? ๏ ๏ ๏ Documentation • http://spring.neo4j.org • Developer-Notes • Spring Data Book • Good Relationships Get Neo4j • http://neo4j.org/download Participate • http://neo4j.org/forums • http://spring.neo4j.org/discussions • http://neo4j.meetup.com • a session like this one ;) 4 Mittwoch, 11. September 13
  166. 166. The book on your seat! -“Graph Databases” Written by experts - Emil Eifrem, Ian Robinson, Jim Webber Compliments of Neo Technology • The definitive guide on graph databases • discusses graph concepts, history and data model • compares with other NoSQL technologies • details use-cases from different domains • explains Neo4j‘s humane query language „Cypher“ Mittwoch, 11. September 13
  167. 167. Bookmark: GraphConnect Oct 3-4 2013 San Francisco $99 4 Mittwoch, 11. September 13 tick et c oup on in you rb ook
  168. 168. Meetup - Tomorrow (Wed) Evening Spring Data Neo4j: Past, Current & Future • Wed, Sep 11, 6-9PM • David's Restaurant, 5151 Stars and Stripes Drive • Just around the corner • Enjoy dessert, wine, beer • Chance to win a signed Spring Data Book http://www.meetup.com/graphdb-sf/events/138428012/ 91 Mittwoch, 11. September 13
  169. 169. Thank you ! Questions ? Mittwoch, 11. September 13
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×