SlideShare une entreprise Scribd logo
1  sur  77
Télécharger pour lire hors ligne
S P R I N G 	
   DATA 	
   N EO 4 J 	
  
github.com/jexp/sdn-­‐twi5er-­‐boot
W I T H S P R I N G 	
   B O OT
Michael	
  Hunger	
  
Josh	
  Long	
  
@mesirii	
  
@starbuxman	
  	
  
Twi5er	
  Graph
To become part of todays
Twitter-Graph
✓your attendance	

✓questions	

✓remarks	

✓....	

please tweet with #springdata #neo4j
1. NOSQL, Connected Data, 	

2. Graph Databases and Neo4j	

3. Spring Data Neo4j	

4. Twitter-Graph - Sample App	

5. Summary	

6. Q & A
Agenda
NOSQL	
  -­‐	
  Not	
  Only	
  SQL
NOSQL
Relational
Graph
Document
KeyValue
Riak
Column
oriented
Redis
Cassandra
Mongo
Couch
Neo4j
MySQL
Postgres
NOSQL	
  Databases
RDBMS
Density~=Complexity
Column
Family
Volume ~= Size
Key-Value
Store
Document
Databases
Graph
Databases
90%
of
use
cases
Volume	
  vs.	
  Complexity
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
Graph	
  Databases
8
Graph	
  Database	
  Use	
  Cases
EvoluJon	
  of	
  Web	
  Search
Pre-1999	

WWW Indexing
Atomic Data
9
1999 - 2012	

Google Invents
PageRank
Simple	

Connected Data
2012-?	

Google Launches the

Knowledge Graph
Rich	

Connected Data
EvoluJon	
  of	
  Online	
  Job	
  Search
2010-11	

Resume Scoring
Atomic Data
2011-12	

Social Job Search
Connected Data
X
Social	
  Network
10
(Network)	
  Impact	
  Analysis
11
PracJcal	
  Cypher	
  
CREATE !
! (crm {name:"CRM"}),!
! (dbvm {name:"Database VM"}),!
! (www {name:"Public Website"}),!
! (wwwvm {name:"Webserver VM"}),!
! (srv1 {name:"Server 1"}),!
! (san {name:"SAN"}),!
! (srv2 {name:"Server 2"}),!
!
! (crm)-[:DEPENDS_ON]->(dbvm),!
! (dbvm)-[:DEPENDS_ON]->(srv2),!
! (srv2)-[:DEPENDS_ON]->(san),!
! (www)-[:DEPENDS_ON]->(dbvm),!
! (www)-[:DEPENDS_ON]->(wwwvm),!
! (wwwvm)-[:DEPENDS_ON]->(srv1),!
! (srv1)-[:DEPENDS_ON]->(san)!
X
PracJcal	
  Cypher	
  
// Server 1 Outage!
MATCH (n)<-[:DEPENDS_ON*]-(upstream)!
WHERE n.name = "Server 1"!
RETURN upstream!
X
upstream
{name:"Webserver VM"}
{name:"Public Website"}
PracJcal	
  Cypher	
  
// Public website dependencies!
MATCH (n)-[:DEPENDS_ON*]->(downstream)!
WHERE n.name = "Public Website"!
RETURN downstream!
!
X
downstream
{name:"Database VM"}
{name:"Server 2"}
{name:"SAN"}
{name:"Webserver VM"}
{name:"Server 1"}
PracJcal	
  Cypher	
  
// Most depended on component!
MATCH (n)<-[:DEPENDS_ON*]-(dependent)!
RETURN n, !
count(DISTINCT dependent) !
AS dependents!
ORDER BY dependents DESC!
LIMIT 1
X
n dependents
{name:"SAN"
}
6
12
Route	
  Finding
RecommendaJons
13
LogisJcs
14
Access	
  Control
15
Workflow	
  Management
16
Fraud	
  Analysis
17
4
Facebook Graph Search
Everyone	
  is	
  Talking	
  about	
  Graphs
19
And	
  Everyone	
  is	
  Using	
  them
Graph	
  Databases
21
user accountuser_account
You	
  know	
  RelaJonal
22
Properties (key value pairs)
+ Indexes (finding start points)
Emil
Andrés
Lars
Johan
Allison
Peter
Michael
Tobias
Andreas
IanMica
Delia
knows
knows
knows
knows
knows
knows
knows
knows
knows
knowsMica
knowsknows
Mica
Delia
knows
The	
  Property	
  Graph	
  Model
Labels (categorize nodes)
Nodes
Relationships
• 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
But	
  what	
  about	
  Performance?
4
Andreas Peter
Emil
Allison
knows
knows knows
knows
Whiteboard	
  Friendlyness
Andreas
How	
  do	
  I	
  query	
  this	
  Graph?
MATCH (poster:User {name:"Andreas"})	
-[:POSTED]->(tweet)	
-[:MENTIONED]->(user)	
RETURN distinct user.name
Example:	
  Graph	
  Search!
26
Translate	
  to	
  Cypher
27
MATCH (person:Person)-[:IS_FRIEND_OF]->(friend),
(friend)-[:LIKES]->(restaurant),
(restaurant)-[:LOCATED_IN]->(loc:Location),
(restaurant)-[:SERVES]->(type:Cuisine)
!
WHERE person.name = 'Philip' AND loc.location='New York' AND
type.cuisine='Sushi'
!
RETURN restaurant.name
* Cypher query language examplehttp://maxdemarzi.com/?s=facebook
28
Execute	
  the	
  Query
4
Neo4j	
  -­‐	
  A	
  Graph	
  Database?
4
- A Graph Database:	

- a schema-free Property Graph	

- perfect for complex, highly connected data	

- A Graph Database:	

- reliable with real ACID Transactions	

- scalable: billions nodes and relationships	

- fast with millons traversals / second	

- Server with REST API, or Embeddable on the JVM	

- higher-performance with High-Availability (read scaling)
(Neo4j)-­‐[:IS_A]-­‐>(Graph	
  Database)
4
–Declarative query language	

–Describe what you want, not how	

–Based on pattern matching	

–First level support for graph concepts and collections
MATCH (tag:Tag {tag:"springdata"})	
MATCH (poster)-[:POSTED]->(tweet)<-[:TAGGED]-(tag)	
WHERE poster.age > 18	
RETURN poster.name, collect(tweet.date) as dates, count(*)	
ORDER BY count(*) DESC	
LIMIT 10
Cypher	
  -­‐	
  A	
  Graph	
  Query	
  Language
Spring	
  Data
• Easy access to NoSQL databases 

for Spring developers
• Consistent APIs and concepts
– configuration, repositories, object-mapping
– don't hide power of each database
• Shared common infrastructure
• Support for several NOSQL approaches

(Neo4j, MongoDB, Redis, Hadoop, …)
33
http://projects.spring.io/spring-data
Spring	
  Data	
  Neo4j
• Uses annotations to define graph entities
• Entity state backed by graph database
• Two modes of Object Graph Mapping
• simple POJO Graph Mapping
• advanced, seamless AspectJ backed Mapping
• SD-Repositories support
• Template, Config, Lifecycle
• Neo4j Server Support
34
http://projects.spring.io/spring-data-neo4j
Spring	
  Data	
  News
• Spring Data Dijkstra Release is Today
• Includes Spring Data Neo4j 3.1.GA
35
http://projects.spring.io/spring-data
Sample	
  Spring	
  Data	
  Neo4j	
  +	
  Boot	
  ApplicaJon
36
github.com/jexp/sdn-twitter-boot
• uses Spring Social (minimally)	

• Simple Domain:Tweets, Users,Tags	

• connected Entities	

• Repositories, Service	

• Standalone Application with spring-boot	

• either embedded Neo4j-Database, or	

• local Neo4j-Server
Domain	
  Model
37
:Tweet
MENTIONS
:Tweet:User
:User
POSTED
POSTED
:TagTAGGED
TAGGED
:Tag
TAG
G
ED
Spring	
  Data	
  Book
• Written by Spring Data Leads
• Covers most SD projects
38
50 e-book copies available for you!
• Wednesday, Oct. 22 - graphconnect.com
• Only conference focused on graphDBs
and applications powered by graphs
• Register now for $99 Alpha Geek Passes,
Neo4j training courses additional $99
GRAPHCONNECT!
SF 2014
•Visit http://neo4j.com
•Learn Online http://graphacademy.com
•Spring Data Neo4j http://spring.io/projects
LEARN MORE!
ABOUT NEO4j
41
Thank	
  You!
QuesDons?
@starbuxman	
  |	
  @mesirii
Introducing
The Twitter-
Whiteboard	
  it	
  -­‐	
  abstract
:Tweet
MENTIONS
:Tweet:User
:User
POSTED
POSTED
:TagTAGGED
TAGGED
:Tag
TAG
G
ED
Whiteboard	
  friendly	
  -­‐	
  example
Attending
the #SDN
#Neo4j
meetup
MENTIONS
Looking
forward to my
@peterneub
POSTED
POSTED
#Neo4jTAGGED
TAGGED
#SDN
TAG
G
ED
Spring Data
Spring	
  Data
๏Spring Data: Pivotal initiative to give Spring
developers easy access to the emerging world
of NOSQL	

๏Build on top of common infrastructure	

๏Spring Data Neo4j is the integration library for
Neo4j
๏http://projects.spring.io/spring-data	

๏Support for other NOSQL approaches
Spring	
  Data	
  Neo4j
๏The brain child of Rod Johnson & Emil Eifrém	

•Wrote functional initial prototype	

•Developed by Neo Technology and
SpringSource teams	

๏Uses annotations to define graph entities	

๏Entity state backed by graph database	

๏Two modes of Object Graph Mapping	

•simple POJO Graph Mapping
public class Tag {	
private final Node underlyingNode;	
!
Tag( final Node node ) {	
underlyingNode = node;	
}	
!
public Node getUnderlyingNode() {	
return underlyingNode;	
}	
!
public final String getTag() {	
return (String) underlyingNode.getProperty( “tag”
);	
Classic	
  Neo4j	
  domain	
  class
!
!
!
!
	
	
!
@Indexed(unique = true)	
	
!
!
!
!
@NodeEntity	
public class Tag {	
@GraphId private Long id;	
	
private String tag;	
}
Spring	
  Data	
  Neo4j	
  domain	
  class
Defining	
  enJty	
  classes
•@NodeEntity	

• Represents a node in the graph	

• Fields saved as properties on node	

• Object 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 as
Defining	
  enJty	
  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
!
@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;	
Tweet	
  domain	
  class
53
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, Gremlin)
Repositories
interface TweetRepository extends GraphRepository<Tweet> {	
Tweet findByTweetId(String id);	
Collection<Tweet> findByTagsTag(String tag);	
}	
@EnableNeo4jRepositories("org.neo4j.twitter_graph.repositories")	
@Configuration	
@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";	
54
55
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
56
REST-Client-Support
!
๏drop-in replacement for the embedded GraphDatabase	

๏works transparently with POJO-Entity-Mapping and
Neo4j-Template
@EnableNeo4jRepositories	
@Configuration	
class MyConfig extends Neo4jConfiguration {	
	 @Bean	
	 public GraphDatabaseService graphDatabaseService() {	
return new SpringRestGraphDatabase(URL);	
	 }	
}
57
Cypher Query Language
๏Declarative query language	

•Describe what you want, not how	

•Based on graph patterns	

•Expressive - easy to read and learn	

•Powerful	

‣Read and write operations	

‣Support for graph concepts
58
Cypher Query Language
๏Write-Queries create graph structures	

•Add follows to a user	

•Create a complete tweet.	

MERGE (user:User {user:"starbuxman"})	
FOREACH (name in ["ah3rz","springsource","mesirii"] |	
MERGE (other:User {user:name})	
MERGE (user)-[:FOLLOWS]->(other))	
!
MATCH (user:User {name:"mesirii"})	
CREATE (tweet:Tweet {text:"Love to work with
@starbuxman on #SpringData #Neo4j demos"})<-
[:POSTED]-(user))	
FOREACH (tag in ["SpringData","Neo4j"] |	
MERGE (t:Tag {tag:tag})	
MERGE (tweet)-[:TAGGED]->(t))
59
Cypher Query Language
๏Read-Queries answer use-case questions	

•Whom should I follow?	

•Which tags where often used with "java"?	

MATCH (me:User {user:"starbuxman"})	
MATCH (me)-[:POSTED]->(tweet)-[:MENTIONS]->(user)	
WHERE not (me)-[:FOLLOWS]-(user)	
RETURN user	
!
MATCH (tag:Tag {tag:"java"}) 	
MATCH (tag)<-[:TAGGED]-(tweet)-[:TAGGED]->(co_tag)	
RETURN co_tag.tag, COUNT(*) as cnt	
ORDER BY cnt DESC LIMIT 10
Spring Data
NEW
61
Spring Boot
๏Rapid Application Development	

๏Like a dynamic programming enviroment but in
Java & Spring	

๏spring-boot-starter	

๏spring-data, spring-data-neo4j, spring-data-
rest	

๏web, thymeleaf
62
Spring Data Neo4j 3.x
๏Support for Neo4j 2.x	

๏Support for Labels	

๏Support for "optional schema"	

๏Indexes + Constraints	

๏New Cypher Syntax	

๏Supports geospatial primitives
63
Coding the Twitter-
64
Todays Coding Exercise
๏uses Spring Social (minimally)	

๏Simple Domain:Tweets, Users,Tags	

•connected Entities	

•Repositories, Service	

๏Standalone Application with spring-boot	

•either embedded Neo4j-Database, or
65
Demo Time
X
Spring Data Neo4j Guidebook
“Good Relationships”
๏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	

“I’m excited about Spring Data Neo4j.... 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
http://cineasts.net
Check Out: http://spring.neo4j.org/tutorial
66
O‘Reilly Spring Data Book
„Modern Data Access for Enterprise
•book by the Spring Data project leads	

•introduction to Spring Data & SD-repositories 	

•covers all subprojects	

•e-book available forYOU, 

ConJnue	
  here
๏See the Spring Data Neo4j site for more info:

http://spring.neo4j.org	

๏Again, don’t miss our guidebook on Spring Data
Neo4j

published by InfoQ also printed

http://bit.ly/sdn-book	

๏All about Neo4j: 

http://neo4j.org 	

๏Neo4j & SDN videos and webinars: 

http://video.neo4j.org 	

๏local Neo4j meetup groups

http://neo4j.meetup.com
• 5/13 - How eBay Now (Shutl) delivers even faster using
Neo4j at eBay in San Jose
• 5/20 - WEBINAR: Data-Driven Applications with Spring
and Neo4j
• 5/23 - Let Me Graph That For You with Ian Robinson, co-
author of Graph Databases, at Hack Reactor in SF
• 5/28 - GraphPANEL Silicon Valley at AOL in Palo Alto
• And more at: meetup.com/graphdb-sf
UPCOMING EVENTS
68
ThankYou!
Feel free to reach out with questions on 
!
•Twitter @starbuxman, @mesirii, 
•Spring-Forums, 
•Neo4j-Google-Group
•Stack-Overflow

Contenu connexe

Tendances

Neo4j: The path to success with Graph Database and Graph Data Science
Neo4j: The path to success with Graph Database and Graph Data ScienceNeo4j: The path to success with Graph Database and Graph Data Science
Neo4j: The path to success with Graph Database and Graph Data ScienceNeo4j
 
Neo4j Graph Data Science Training - June 9 & 10 - Slides #5 - Graph Catalog O...
Neo4j Graph Data Science Training - June 9 & 10 - Slides #5 - Graph Catalog O...Neo4j Graph Data Science Training - June 9 & 10 - Slides #5 - Graph Catalog O...
Neo4j Graph Data Science Training - June 9 & 10 - Slides #5 - Graph Catalog O...Neo4j
 
Neo4j Webinar: Graphs in banking
Neo4j Webinar:  Graphs in banking Neo4j Webinar:  Graphs in banking
Neo4j Webinar: Graphs in banking Neo4j
 
Get Started with the Most Advanced Edition Yet of Neo4j Graph Data Science
Get Started with the Most Advanced Edition Yet of Neo4j Graph Data ScienceGet Started with the Most Advanced Edition Yet of Neo4j Graph Data Science
Get Started with the Most Advanced Edition Yet of Neo4j Graph Data ScienceNeo4j
 
APOC Pearls - Whirlwind Tour Through the Neo4j APOC Procedures Library
APOC Pearls - Whirlwind Tour Through the Neo4j APOC Procedures LibraryAPOC Pearls - Whirlwind Tour Through the Neo4j APOC Procedures Library
APOC Pearls - Whirlwind Tour Through the Neo4j APOC Procedures Libraryjexp
 
Full Stack Graph in the Cloud
Full Stack Graph in the CloudFull Stack Graph in the Cloud
Full Stack Graph in the CloudNeo4j
 
https://www.slideshare.net/neo4j/a-fusion-of-machine-learning-and-graph-analy...
https://www.slideshare.net/neo4j/a-fusion-of-machine-learning-and-graph-analy...https://www.slideshare.net/neo4j/a-fusion-of-machine-learning-and-graph-analy...
https://www.slideshare.net/neo4j/a-fusion-of-machine-learning-and-graph-analy...Neo4j
 
Graphs for Genealogists
Graphs for GenealogistsGraphs for Genealogists
Graphs for GenealogistsNeo4j
 
Kubernetes Security with Calico and Open Policy Agent
Kubernetes Security with Calico and Open Policy AgentKubernetes Security with Calico and Open Policy Agent
Kubernetes Security with Calico and Open Policy AgentCloudOps2005
 
GPT and Graph Data Science to power your Knowledge Graph
GPT and Graph Data Science to power your Knowledge GraphGPT and Graph Data Science to power your Knowledge Graph
GPT and Graph Data Science to power your Knowledge GraphNeo4j
 
Apicurio Registry: Event-driven APIs & Schema governance for Apache Kafka | F...
Apicurio Registry: Event-driven APIs & Schema governance for Apache Kafka | F...Apicurio Registry: Event-driven APIs & Schema governance for Apache Kafka | F...
Apicurio Registry: Event-driven APIs & Schema governance for Apache Kafka | F...HostedbyConfluent
 
Data Modeling with Neo4j
Data Modeling with Neo4jData Modeling with Neo4j
Data Modeling with Neo4jNeo4j
 
Top 10 Cypher Tuning Tips & Tricks
Top 10 Cypher Tuning Tips & TricksTop 10 Cypher Tuning Tips & Tricks
Top 10 Cypher Tuning Tips & TricksNeo4j
 
Adobe Behance Scales to Millions of Users at Lower TCO with Neo4j
Adobe Behance Scales to Millions of Users at Lower TCO with Neo4jAdobe Behance Scales to Millions of Users at Lower TCO with Neo4j
Adobe Behance Scales to Millions of Users at Lower TCO with Neo4jNeo4j
 
Workshop - Neo4j Graph Data Science
Workshop - Neo4j Graph Data ScienceWorkshop - Neo4j Graph Data Science
Workshop - Neo4j Graph Data ScienceNeo4j
 
OPA APIs and Use Case Survey
OPA APIs and Use Case SurveyOPA APIs and Use Case Survey
OPA APIs and Use Case SurveyTorin Sandall
 
Intro to Graphs and Neo4j
Intro to Graphs and Neo4jIntro to Graphs and Neo4j
Intro to Graphs and Neo4jjexp
 
Neo4j GraphDay Seattle- Sept19- neo4j basic training
Neo4j GraphDay Seattle- Sept19- neo4j basic trainingNeo4j GraphDay Seattle- Sept19- neo4j basic training
Neo4j GraphDay Seattle- Sept19- neo4j basic trainingNeo4j
 
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
 

Tendances (20)

Neo4j: The path to success with Graph Database and Graph Data Science
Neo4j: The path to success with Graph Database and Graph Data ScienceNeo4j: The path to success with Graph Database and Graph Data Science
Neo4j: The path to success with Graph Database and Graph Data Science
 
Neo4j Graph Data Science Training - June 9 & 10 - Slides #5 - Graph Catalog O...
Neo4j Graph Data Science Training - June 9 & 10 - Slides #5 - Graph Catalog O...Neo4j Graph Data Science Training - June 9 & 10 - Slides #5 - Graph Catalog O...
Neo4j Graph Data Science Training - June 9 & 10 - Slides #5 - Graph Catalog O...
 
Neo4j Webinar: Graphs in banking
Neo4j Webinar:  Graphs in banking Neo4j Webinar:  Graphs in banking
Neo4j Webinar: Graphs in banking
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Get Started with the Most Advanced Edition Yet of Neo4j Graph Data Science
Get Started with the Most Advanced Edition Yet of Neo4j Graph Data ScienceGet Started with the Most Advanced Edition Yet of Neo4j Graph Data Science
Get Started with the Most Advanced Edition Yet of Neo4j Graph Data Science
 
APOC Pearls - Whirlwind Tour Through the Neo4j APOC Procedures Library
APOC Pearls - Whirlwind Tour Through the Neo4j APOC Procedures LibraryAPOC Pearls - Whirlwind Tour Through the Neo4j APOC Procedures Library
APOC Pearls - Whirlwind Tour Through the Neo4j APOC Procedures Library
 
Full Stack Graph in the Cloud
Full Stack Graph in the CloudFull Stack Graph in the Cloud
Full Stack Graph in the Cloud
 
https://www.slideshare.net/neo4j/a-fusion-of-machine-learning-and-graph-analy...
https://www.slideshare.net/neo4j/a-fusion-of-machine-learning-and-graph-analy...https://www.slideshare.net/neo4j/a-fusion-of-machine-learning-and-graph-analy...
https://www.slideshare.net/neo4j/a-fusion-of-machine-learning-and-graph-analy...
 
Graphs for Genealogists
Graphs for GenealogistsGraphs for Genealogists
Graphs for Genealogists
 
Kubernetes Security with Calico and Open Policy Agent
Kubernetes Security with Calico and Open Policy AgentKubernetes Security with Calico and Open Policy Agent
Kubernetes Security with Calico and Open Policy Agent
 
GPT and Graph Data Science to power your Knowledge Graph
GPT and Graph Data Science to power your Knowledge GraphGPT and Graph Data Science to power your Knowledge Graph
GPT and Graph Data Science to power your Knowledge Graph
 
Apicurio Registry: Event-driven APIs & Schema governance for Apache Kafka | F...
Apicurio Registry: Event-driven APIs & Schema governance for Apache Kafka | F...Apicurio Registry: Event-driven APIs & Schema governance for Apache Kafka | F...
Apicurio Registry: Event-driven APIs & Schema governance for Apache Kafka | F...
 
Data Modeling with Neo4j
Data Modeling with Neo4jData Modeling with Neo4j
Data Modeling with Neo4j
 
Top 10 Cypher Tuning Tips & Tricks
Top 10 Cypher Tuning Tips & TricksTop 10 Cypher Tuning Tips & Tricks
Top 10 Cypher Tuning Tips & Tricks
 
Adobe Behance Scales to Millions of Users at Lower TCO with Neo4j
Adobe Behance Scales to Millions of Users at Lower TCO with Neo4jAdobe Behance Scales to Millions of Users at Lower TCO with Neo4j
Adobe Behance Scales to Millions of Users at Lower TCO with Neo4j
 
Workshop - Neo4j Graph Data Science
Workshop - Neo4j Graph Data ScienceWorkshop - Neo4j Graph Data Science
Workshop - Neo4j Graph Data Science
 
OPA APIs and Use Case Survey
OPA APIs and Use Case SurveyOPA APIs and Use Case Survey
OPA APIs and Use Case Survey
 
Intro to Graphs and Neo4j
Intro to Graphs and Neo4jIntro to Graphs and Neo4j
Intro to Graphs and Neo4j
 
Neo4j GraphDay Seattle- Sept19- neo4j basic training
Neo4j GraphDay Seattle- Sept19- neo4j basic trainingNeo4j GraphDay Seattle- Sept19- neo4j basic training
Neo4j GraphDay Seattle- Sept19- neo4j basic training
 
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
 

Similaire à Combine Spring Data Neo4j and Spring Boot to quickl

Introduction to Graph databases and Neo4j (by Stefan Armbruster)
Introduction to Graph databases and Neo4j (by Stefan Armbruster)Introduction to Graph databases and Neo4j (by Stefan Armbruster)
Introduction to Graph databases and Neo4j (by Stefan Armbruster)barcelonajug
 
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
 
Graph Databases in the Microsoft Ecosystem
Graph Databases in the Microsoft EcosystemGraph Databases in the Microsoft Ecosystem
Graph Databases in the Microsoft EcosystemMarco Parenzan
 
Graph Databases
Graph DatabasesGraph Databases
Graph Databasesthai
 
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Basel
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow BaselHow to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Basel
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow BaselPatrick Baumgartner
 
Knowledge Graphs - Journey to the Connected Enterprise - Data Strategy and An...
Knowledge Graphs - Journey to the Connected Enterprise - Data Strategy and An...Knowledge Graphs - Journey to the Connected Enterprise - Data Strategy and An...
Knowledge Graphs - Journey to the Connected Enterprise - Data Strategy and An...Benjamin Nussbaum
 
An R primer for SQL folks
An R primer for SQL folksAn R primer for SQL folks
An R primer for SQL folksThomas Hütter
 
managing big data
managing big datamanaging big data
managing big dataSuveeksha
 
A general introduction to Spring Data / Neo4J
A general introduction to Spring Data / Neo4JA general introduction to Spring Data / Neo4J
A general introduction to Spring Data / Neo4JFlorent Biville
 
Neo4j Training Introduction
Neo4j Training IntroductionNeo4j Training Introduction
Neo4j Training IntroductionMax De Marzi
 
DubJug: Neo4J and Open Data
DubJug: Neo4J and Open DataDubJug: Neo4J and Open Data
DubJug: Neo4J and Open DataScott Sosna
 
Spark Application Carousel: Highlights of Several Applications Built with Spark
Spark Application Carousel: Highlights of Several Applications Built with SparkSpark Application Carousel: Highlights of Several Applications Built with Spark
Spark Application Carousel: Highlights of Several Applications Built with SparkDatabricks
 
Mongodb intro
Mongodb introMongodb intro
Mongodb introchristkv
 

Similaire à Combine Spring Data Neo4j and Spring Boot to quickl (20)

Introduction to Graph databases and Neo4j (by Stefan Armbruster)
Introduction to Graph databases and Neo4j (by Stefan Armbruster)Introduction to Graph databases and Neo4j (by Stefan Armbruster)
Introduction to Graph databases and Neo4j (by Stefan Armbruster)
 
Polyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4jPolyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4j
 
Graph databases and the #panamapapers
Graph databases and the #panamapapersGraph databases and the #panamapapers
Graph databases and the #panamapapers
 
Graph Databases in the Microsoft Ecosystem
Graph Databases in the Microsoft EcosystemGraph Databases in the Microsoft Ecosystem
Graph Databases in the Microsoft Ecosystem
 
Graph Databases
Graph DatabasesGraph Databases
Graph Databases
 
Neo4j in Depth
Neo4j in DepthNeo4j in Depth
Neo4j in Depth
 
MongoDB Basics
MongoDB BasicsMongoDB Basics
MongoDB Basics
 
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Basel
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow BaselHow to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Basel
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Basel
 
Graph Databases
Graph DatabasesGraph Databases
Graph Databases
 
Knowledge Graphs - Journey to the Connected Enterprise - Data Strategy and An...
Knowledge Graphs - Journey to the Connected Enterprise - Data Strategy and An...Knowledge Graphs - Journey to the Connected Enterprise - Data Strategy and An...
Knowledge Graphs - Journey to the Connected Enterprise - Data Strategy and An...
 
An R primer for SQL folks
An R primer for SQL folksAn R primer for SQL folks
An R primer for SQL folks
 
managing big data
managing big datamanaging big data
managing big data
 
Spark at Zillow
Spark at ZillowSpark at Zillow
Spark at Zillow
 
GraphDb in XPages
GraphDb in XPagesGraphDb in XPages
GraphDb in XPages
 
SQL vs NoSQL
SQL vs NoSQLSQL vs NoSQL
SQL vs NoSQL
 
A general introduction to Spring Data / Neo4J
A general introduction to Spring Data / Neo4JA general introduction to Spring Data / Neo4J
A general introduction to Spring Data / Neo4J
 
Neo4j Training Introduction
Neo4j Training IntroductionNeo4j Training Introduction
Neo4j Training Introduction
 
DubJug: Neo4J and Open Data
DubJug: Neo4J and Open DataDubJug: Neo4J and Open Data
DubJug: Neo4J and Open Data
 
Spark Application Carousel: Highlights of Several Applications Built with Spark
Spark Application Carousel: Highlights of Several Applications Built with SparkSpark Application Carousel: Highlights of Several Applications Built with Spark
Spark Application Carousel: Highlights of Several Applications Built with Spark
 
Mongodb intro
Mongodb introMongodb intro
Mongodb intro
 

Plus de Neo4j

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansQIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansNeo4j
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...Neo4j
 
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosBBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosNeo4j
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Neo4j
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jNeo4j
 
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j
 
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdfRabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Neo4j
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeNeo4j
 
Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)Neo4j
 
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j
 
Enabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge GraphsEnabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge GraphsNeo4j
 
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdfNeo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdfNeo4j
 
Neo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with GraphNeo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with GraphNeo4j
 

Plus de Neo4j (20)

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansQIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
 
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosBBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
 
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
 
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdfRabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG time
 
Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)
 
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
 
Enabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge GraphsEnabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge Graphs
 
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdfNeo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
 
Neo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with GraphNeo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with Graph
 

Dernier

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 

Dernier (20)

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 

Combine Spring Data Neo4j and Spring Boot to quickl

  • 1. S P R I N G   DATA   N EO 4 J   github.com/jexp/sdn-­‐twi5er-­‐boot W I T H S P R I N G   B O OT Michael  Hunger   Josh  Long   @mesirii   @starbuxman    
  • 2. Twi5er  Graph To become part of todays Twitter-Graph ✓your attendance ✓questions ✓remarks ✓.... please tweet with #springdata #neo4j
  • 3. 1. NOSQL, Connected Data, 2. Graph Databases and Neo4j 3. Spring Data Neo4j 4. Twitter-Graph - Sample App 5. Summary 6. Q & A Agenda
  • 4. NOSQL  -­‐  Not  Only  SQL
  • 7. 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
  • 10. EvoluJon  of  Web  Search Pre-1999 WWW Indexing Atomic Data 9 1999 - 2012 Google Invents PageRank Simple Connected Data 2012-? Google Launches the
 Knowledge Graph Rich Connected Data
  • 11. EvoluJon  of  Online  Job  Search 2010-11 Resume Scoring Atomic Data 2011-12 Social Job Search Connected Data X
  • 14. PracJcal  Cypher   CREATE ! ! (crm {name:"CRM"}),! ! (dbvm {name:"Database VM"}),! ! (www {name:"Public Website"}),! ! (wwwvm {name:"Webserver VM"}),! ! (srv1 {name:"Server 1"}),! ! (san {name:"SAN"}),! ! (srv2 {name:"Server 2"}),! ! ! (crm)-[:DEPENDS_ON]->(dbvm),! ! (dbvm)-[:DEPENDS_ON]->(srv2),! ! (srv2)-[:DEPENDS_ON]->(san),! ! (www)-[:DEPENDS_ON]->(dbvm),! ! (www)-[:DEPENDS_ON]->(wwwvm),! ! (wwwvm)-[:DEPENDS_ON]->(srv1),! ! (srv1)-[:DEPENDS_ON]->(san)! X
  • 15. PracJcal  Cypher   // Server 1 Outage! MATCH (n)<-[:DEPENDS_ON*]-(upstream)! WHERE n.name = "Server 1"! RETURN upstream! X upstream {name:"Webserver VM"} {name:"Public Website"}
  • 16. PracJcal  Cypher   // Public website dependencies! MATCH (n)-[:DEPENDS_ON*]->(downstream)! WHERE n.name = "Public Website"! RETURN downstream! ! X downstream {name:"Database VM"} {name:"Server 2"} {name:"SAN"} {name:"Webserver VM"} {name:"Server 1"}
  • 17. PracJcal  Cypher   // Most depended on component! MATCH (n)<-[:DEPENDS_ON*]-(dependent)! RETURN n, ! count(DISTINCT dependent) ! AS dependents! ORDER BY dependents DESC! LIMIT 1 X n dependents {name:"SAN" } 6
  • 24. 4 Facebook Graph Search Everyone  is  Talking  about  Graphs
  • 25. 19 And  Everyone  is  Using  them
  • 28. 22 Properties (key value pairs) + Indexes (finding start points) Emil Andrés Lars Johan Allison Peter Michael Tobias Andreas IanMica Delia knows knows knows knows knows knows knows knows knows knowsMica knowsknows Mica Delia knows The  Property  Graph  Model Labels (categorize nodes) Nodes Relationships
  • 29. • 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 But  what  about  Performance?
  • 31. Andreas How  do  I  query  this  Graph? MATCH (poster:User {name:"Andreas"}) -[:POSTED]->(tweet) -[:MENTIONED]->(user) RETURN distinct user.name
  • 33. Translate  to  Cypher 27 MATCH (person:Person)-[:IS_FRIEND_OF]->(friend), (friend)-[:LIKES]->(restaurant), (restaurant)-[:LOCATED_IN]->(loc:Location), (restaurant)-[:SERVES]->(type:Cuisine) ! WHERE person.name = 'Philip' AND loc.location='New York' AND type.cuisine='Sushi' ! RETURN restaurant.name * Cypher query language examplehttp://maxdemarzi.com/?s=facebook
  • 35. 4 Neo4j  -­‐  A  Graph  Database?
  • 36. 4 - A Graph Database: - a schema-free Property Graph - perfect for complex, highly connected data - A Graph Database: - reliable with real ACID Transactions - scalable: billions nodes and relationships - fast with millons traversals / second - Server with REST API, or Embeddable on the JVM - higher-performance with High-Availability (read scaling) (Neo4j)-­‐[:IS_A]-­‐>(Graph  Database)
  • 37. 4 –Declarative query language –Describe what you want, not how –Based on pattern matching –First level support for graph concepts and collections MATCH (tag:Tag {tag:"springdata"}) MATCH (poster)-[:POSTED]->(tweet)<-[:TAGGED]-(tag) WHERE poster.age > 18 RETURN poster.name, collect(tweet.date) as dates, count(*) ORDER BY count(*) DESC LIMIT 10 Cypher  -­‐  A  Graph  Query  Language
  • 38.
  • 39. Spring  Data • Easy access to NoSQL databases 
 for Spring developers • Consistent APIs and concepts – configuration, repositories, object-mapping – don't hide power of each database • Shared common infrastructure • Support for several NOSQL approaches
 (Neo4j, MongoDB, Redis, Hadoop, …) 33 http://projects.spring.io/spring-data
  • 40. Spring  Data  Neo4j • Uses annotations to define graph entities • Entity state backed by graph database • Two modes of Object Graph Mapping • simple POJO Graph Mapping • advanced, seamless AspectJ backed Mapping • SD-Repositories support • Template, Config, Lifecycle • Neo4j Server Support 34 http://projects.spring.io/spring-data-neo4j
  • 41. Spring  Data  News • Spring Data Dijkstra Release is Today • Includes Spring Data Neo4j 3.1.GA 35 http://projects.spring.io/spring-data
  • 42. Sample  Spring  Data  Neo4j  +  Boot  ApplicaJon 36 github.com/jexp/sdn-twitter-boot • uses Spring Social (minimally) • Simple Domain:Tweets, Users,Tags • connected Entities • Repositories, Service • Standalone Application with spring-boot • either embedded Neo4j-Database, or • local Neo4j-Server
  • 44. Spring  Data  Book • Written by Spring Data Leads • Covers most SD projects 38 50 e-book copies available for you!
  • 45. • Wednesday, Oct. 22 - graphconnect.com • Only conference focused on graphDBs and applications powered by graphs • Register now for $99 Alpha Geek Passes, Neo4j training courses additional $99 GRAPHCONNECT! SF 2014
  • 46. •Visit http://neo4j.com •Learn Online http://graphacademy.com •Spring Data Neo4j http://spring.io/projects LEARN MORE! ABOUT NEO4j
  • 49. Whiteboard  it  -­‐  abstract :Tweet MENTIONS :Tweet:User :User POSTED POSTED :TagTAGGED TAGGED :Tag TAG G ED
  • 50. Whiteboard  friendly  -­‐  example Attending the #SDN #Neo4j meetup MENTIONS Looking forward to my @peterneub POSTED POSTED #Neo4jTAGGED TAGGED #SDN TAG G ED
  • 52. Spring  Data ๏Spring Data: Pivotal initiative to give Spring developers easy access to the emerging world of NOSQL ๏Build on top of common infrastructure ๏Spring Data Neo4j is the integration library for Neo4j ๏http://projects.spring.io/spring-data ๏Support for other NOSQL approaches
  • 53. Spring  Data  Neo4j ๏The brain child of Rod Johnson & Emil Eifrém •Wrote functional initial prototype •Developed by Neo Technology and SpringSource teams ๏Uses annotations to define graph entities ๏Entity state backed by graph database ๏Two modes of Object Graph Mapping •simple POJO Graph Mapping
  • 54. public class Tag { private final Node underlyingNode; ! Tag( final Node node ) { underlyingNode = node; } ! public Node getUnderlyingNode() { return underlyingNode; } ! public final String getTag() { return (String) underlyingNode.getProperty( “tag” ); Classic  Neo4j  domain  class
  • 55. ! ! ! ! ! @Indexed(unique = true) ! ! ! ! @NodeEntity public class Tag { @GraphId private Long id; private String tag; } Spring  Data  Neo4j  domain  class
  • 56. Defining  enJty  classes •@NodeEntity • Represents a node in the graph • Fields saved as properties on node • Object 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 as
  • 57. Defining  enJty  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
  • 58. ! @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; Tweet  domain  class
  • 59. 53 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, Gremlin)
  • 60. Repositories interface TweetRepository extends GraphRepository<Tweet> { Tweet findByTweetId(String id); Collection<Tweet> findByTagsTag(String tag); } @EnableNeo4jRepositories("org.neo4j.twitter_graph.repositories") @Configuration @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"; 54
  • 61. 55 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
  • 62. 56 REST-Client-Support ! ๏drop-in replacement for the embedded GraphDatabase ๏works transparently with POJO-Entity-Mapping and Neo4j-Template @EnableNeo4jRepositories @Configuration class MyConfig extends Neo4jConfiguration { @Bean public GraphDatabaseService graphDatabaseService() { return new SpringRestGraphDatabase(URL); } }
  • 63. 57 Cypher Query Language ๏Declarative query language •Describe what you want, not how •Based on graph patterns •Expressive - easy to read and learn •Powerful ‣Read and write operations ‣Support for graph concepts
  • 64. 58 Cypher Query Language ๏Write-Queries create graph structures •Add follows to a user •Create a complete tweet. MERGE (user:User {user:"starbuxman"}) FOREACH (name in ["ah3rz","springsource","mesirii"] | MERGE (other:User {user:name}) MERGE (user)-[:FOLLOWS]->(other)) ! MATCH (user:User {name:"mesirii"}) CREATE (tweet:Tweet {text:"Love to work with @starbuxman on #SpringData #Neo4j demos"})<- [:POSTED]-(user)) FOREACH (tag in ["SpringData","Neo4j"] | MERGE (t:Tag {tag:tag}) MERGE (tweet)-[:TAGGED]->(t))
  • 65. 59 Cypher Query Language ๏Read-Queries answer use-case questions •Whom should I follow? •Which tags where often used with "java"? MATCH (me:User {user:"starbuxman"}) MATCH (me)-[:POSTED]->(tweet)-[:MENTIONS]->(user) WHERE not (me)-[:FOLLOWS]-(user) RETURN user ! MATCH (tag:Tag {tag:"java"}) MATCH (tag)<-[:TAGGED]-(tweet)-[:TAGGED]->(co_tag) RETURN co_tag.tag, COUNT(*) as cnt ORDER BY cnt DESC LIMIT 10
  • 67. 61 Spring Boot ๏Rapid Application Development ๏Like a dynamic programming enviroment but in Java & Spring ๏spring-boot-starter ๏spring-data, spring-data-neo4j, spring-data- rest ๏web, thymeleaf
  • 68. 62 Spring Data Neo4j 3.x ๏Support for Neo4j 2.x ๏Support for Labels ๏Support for "optional schema" ๏Indexes + Constraints ๏New Cypher Syntax ๏Supports geospatial primitives
  • 70. 64 Todays Coding Exercise ๏uses Spring Social (minimally) ๏Simple Domain:Tweets, Users,Tags •connected Entities •Repositories, Service ๏Standalone Application with spring-boot •either embedded Neo4j-Database, or
  • 72. X Spring Data Neo4j Guidebook “Good Relationships” ๏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 “I’m excited about Spring Data Neo4j.... 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
  • 74. 66 O‘Reilly Spring Data Book „Modern Data Access for Enterprise •book by the Spring Data project leads •introduction to Spring Data & SD-repositories •covers all subprojects •e-book available forYOU, 

  • 75. ConJnue  here ๏See the Spring Data Neo4j site for more info:
 http://spring.neo4j.org ๏Again, don’t miss our guidebook on Spring Data Neo4j
 published by InfoQ also printed
 http://bit.ly/sdn-book ๏All about Neo4j: 
 http://neo4j.org ๏Neo4j & SDN videos and webinars: 
 http://video.neo4j.org ๏local Neo4j meetup groups
 http://neo4j.meetup.com
  • 76. • 5/13 - How eBay Now (Shutl) delivers even faster using Neo4j at eBay in San Jose • 5/20 - WEBINAR: Data-Driven Applications with Spring and Neo4j • 5/23 - Let Me Graph That For You with Ian Robinson, co- author of Graph Databases, at Hack Reactor in SF • 5/28 - GraphPANEL Silicon Valley at AOL in Palo Alto • And more at: meetup.com/graphdb-sf UPCOMING EVENTS
  • 77. 68 ThankYou! Feel free to reach out with questions on ! •Twitter @starbuxman, @mesirii, •Spring-Forums, •Neo4j-Google-Group •Stack-Overflow