Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
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	
  Hu...
Twi5er	
  Graph
To become part of todays
Twitter-Graph
✓your attendance	

✓questions	

✓remarks	

✓....	

please tweet wit...
1. NOSQL, Connected Data, 	

2. Graph Databases and Neo4j	

3. Spring Data Neo4j	

4. Twitter-Graph - Sample App	

5. Summ...
NOSQL	
  -­‐	
  Not	
  Only	
  SQL
NOSQL
Relational
Graph
Document
KeyValue
Riak
Column
oriented
Redis
Cassandra
Mongo
Couch
Neo4j
MySQL
Postgres
NOSQL	
  Da...
RDBMS
Density~=Complexity
Column
Family
Volume ~= Size
Key-Value
Store
Document
Databases
Graph
Databases
90%
of
use
cases...
Trends	
  in	
  BigData	
  /	
  NOSQL
1. increasing data size (big data)
•“Every 2 days we create as much information as
w...
Graph	
  Databases
8
Graph	
  Database	
  Use	
  Cases
EvoluJon	
  of	
  Web	
  Search
Pre-1999	

WWW Indexing
Atomic Data
9
1999 - 2012	

Google Invents
PageRank
Simple	

Conne...
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"}),!
!...
PracJcal	
  Cypher	
  
// Server 1 Outage!
MATCH (n)<-[:DEPENDS_ON*]-(upstream)!
WHERE n.name = "Server 1"!
RETURN upstrea...
PracJcal	
  Cypher	
  
// Public website dependencies!
MATCH (n)-[:DEPENDS_ON*]->(downstream)!
WHERE n.name = "Public Webs...
PracJcal	
  Cypher	
  
// Most depended on component!
MATCH (n)<-[:DEPENDS_ON*]-(dependent)!
RETURN n, !
count(DISTINCT de...
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
Andrea...
• a sample social graph
–with ~1,000 persons
• average 50 friends per person
• pathExists(a,b) limited to depth 4
• caches...
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]...
Example:	
  Graph	
  Search!
26
Translate	
  to	
  Cypher
27
MATCH (person:Person)-[:IS_FRIEND_OF]->(friend),
(friend)-[:LIKES]->(restaurant),
(restaurant...
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...
4
–Declarative query language	

–Describe what you want, not how	

–Based on pattern matching	

–First level support for g...
Spring	
  Data
• Easy access to NoSQL databases 

for Spring developers
• Consistent APIs and concepts
– configuration, re...
Spring	
  Data	
  Neo4j
• Uses annotations to define graph entities
• Entity state backed by graph database
• Two modes of...
Spring	
  Data	
  News
• Spring Data Dijkstra Release is Today
• Includes Spring Data Neo4j 3.1.GA
35
http://projects.spri...
Sample	
  Spring	
  Data	
  Neo4j	
  +	
  Boot	
  ApplicaJon
36
github.com/jexp/sdn-twitter-boot
• uses Spring Social (min...
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
• Registe...
•Visit http://neo4j.com
•Learn Online http://graphacademy.com
•Spring Data Neo4j http://spring.io/projects
LEARN MORE!
ABO...
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...
Spring Data
Spring	
  Data
๏Spring Data: Pivotal initiative to give Spring
developers easy access to the emerging world
of NOSQL	

๏Bu...
Spring	
  Data	
  Neo4j
๏The brain child of Rod Johnson & Emil Eifrém	

•Wrote functional initial prototype	

•Developed b...
public class Tag {	
private final Node underlyingNode;	
!
Tag( final Node node ) {	
underlyingNode = node;	
}	
!
public No...
!
!
!
!
	
	
!
@Indexed(unique = true)	
	
!
!
!
!
@NodeEntity	
public class Tag {	
@GraphId private Long id;	
	
private Str...
Defining	
  enJty	
  classes
•@NodeEntity	

• Represents a node in the graph	

• Fields saved as properties on node	

• Obj...
Defining	
  enJty	
  classes
•@RelationshipEntity	

• Represents a relationship in the graph	

• Fields saved as properties...
!
@NodeEntity	
public class Tweet {	
@GraphId private Long id; 	
!
@Indexed(unique=true) Long tweetId;	
!
String text;	
!
...
53
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...
55
Neo4j-Template (I)
๏well known Spring Template Pattern	

๏Resource / Transaction Management	

๏Convenience Methods	

๏N...
56
REST-Client-Support
!
๏drop-in replacement for the embedded GraphDatabase	

๏works transparently with POJO-Entity-Mappi...
57
Cypher Query Language
๏Declarative query language	

•Describe what you want, not how	

•Based on graph patterns	

•Expr...
58
Cypher Query Language
๏Write-Queries create graph structures	

•Add follows to a user	

•Create a complete tweet.	

MER...
59
Cypher Query Language
๏Read-Queries answer use-case questions	

•Whom should I follow?	

•Which tags where often used w...
Spring Data
NEW
61
Spring Boot
๏Rapid Application Development	

๏Like a dynamic programming enviroment but in
Java & Spring	

๏spring-boot...
62
Spring Data Neo4j 3.x
๏Support for Neo4j 2.x	

๏Support for Labels	

๏Support for "optional schema"	

๏Indexes + Constr...
63
Coding the Twitter-
64
Todays Coding Exercise
๏uses Spring Social (minimally)	

๏Simple Domain:Tweets, Users,Tags	

•connected Entities	

•Rep...
65
Demo Time
X
Spring Data Neo4j Guidebook
“Good Relationships”
๏Spring Data Neo4j comes with a great Guide
Book, featuring:	

•Forewor...
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 ...
ConJnue	
  here
๏See the Spring Data Neo4j site for more info:

http://spring.neo4j.org	

๏Again, don’t miss our guidebook...
• 5/13 - How eBay Now (Shutl) delivers even faster using
Neo4j at eBay in San Jose
• 5/20 - WEBINAR: Data-Driven Applicati...
68
ThankYou!
Feel free to reach out with questions on 
!
•Twitter @starbuxman, @mesirii, 
•Spring-Forums, 
•Neo4j-Google-G...
Combine Spring Data Neo4j and Spring Boot to quickl
Prochain SlideShare
Chargement dans…5
×

Combine Spring Data Neo4j and Spring Boot to quickl

7 096 vues

Publié le

Speakers: Michael Hunger (Neo Technology) and Josh Long (Pivotal)

Spring Data Neo4j 3.0 is here and it supports Neo4j 2.0. Neo4j is a tiny graph database with a big punch. Graph databases are imminently suited to asking interesting questions, and doing analysis. Want to load the Facebook friend graph? Build a recommendation engine? Neo4j's just the ticket. Join Spring Data Neo4j lead Michael Hunger (@mesirii) and Spring Developer Advocate Josh Long (@starbuxman) for a look at how to build smart, graph-driven applications with Spring Data Neo4j and Spring Boot.

Publié dans : Technologie
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici

Combine Spring Data Neo4j and Spring Boot to quickl

  1. 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. 2. Twi5er  Graph To become part of todays Twitter-Graph ✓your attendance ✓questions ✓remarks ✓.... please tweet with #springdata #neo4j
  3. 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. 4. NOSQL  -­‐  Not  Only  SQL
  5. 5. NOSQL Relational Graph Document KeyValue Riak Column oriented Redis Cassandra Mongo Couch Neo4j MySQL Postgres NOSQL  Databases
  6. 6. RDBMS Density~=Complexity Column Family Volume ~= Size Key-Value Store Document Databases Graph Databases 90% of use cases Volume  vs.  Complexity
  7. 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
  8. 8. Graph  Databases
  9. 9. 8 Graph  Database  Use  Cases
  10. 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. 11. EvoluJon  of  Online  Job  Search 2010-11 Resume Scoring Atomic Data 2011-12 Social Job Search Connected Data X
  12. 12. Social  Network 10
  13. 13. (Network)  Impact  Analysis 11
  14. 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. 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. 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. 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
  18. 18. 12 Route  Finding
  19. 19. RecommendaJons 13
  20. 20. LogisJcs 14
  21. 21. Access  Control 15
  22. 22. Workflow  Management 16
  23. 23. Fraud  Analysis 17
  24. 24. 4 Facebook Graph Search Everyone  is  Talking  about  Graphs
  25. 25. 19 And  Everyone  is  Using  them
  26. 26. Graph  Databases
  27. 27. 21 user accountuser_account You  know  RelaJonal
  28. 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. 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?
  30. 30. 4 Andreas Peter Emil Allison knows knows knows knows Whiteboard  Friendlyness
  31. 31. Andreas How  do  I  query  this  Graph? MATCH (poster:User {name:"Andreas"}) -[:POSTED]->(tweet) -[:MENTIONED]->(user) RETURN distinct user.name
  32. 32. Example:  Graph  Search! 26
  33. 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
  34. 34. 28 Execute  the  Query
  35. 35. 4 Neo4j  -­‐  A  Graph  Database?
  36. 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. 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. 38. 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
  39. 39. 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
  40. 40. Spring  Data  News • Spring Data Dijkstra Release is Today • Includes Spring Data Neo4j 3.1.GA 35 http://projects.spring.io/spring-data
  41. 41. 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
  42. 42. Domain  Model 37 :Tweet MENTIONS :Tweet:User :User POSTED POSTED :TagTAGGED TAGGED :Tag TAG G ED
  43. 43. Spring  Data  Book • Written by Spring Data Leads • Covers most SD projects 38 50 e-book copies available for you!
  44. 44. • 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
  45. 45. •Visit http://neo4j.com •Learn Online http://graphacademy.com •Spring Data Neo4j http://spring.io/projects LEARN MORE! ABOUT NEO4j
  46. 46. 41 Thank  You! QuesDons? @starbuxman  |  @mesirii
  47. 47. Introducing The Twitter-
  48. 48. Whiteboard  it  -­‐  abstract :Tweet MENTIONS :Tweet:User :User POSTED POSTED :TagTAGGED TAGGED :Tag TAG G ED
  49. 49. Whiteboard  friendly  -­‐  example Attending the #SDN #Neo4j meetup MENTIONS Looking forward to my @peterneub POSTED POSTED #Neo4jTAGGED TAGGED #SDN TAG G ED
  50. 50. Spring Data
  51. 51. 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
  52. 52. 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
  53. 53. 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
  54. 54. ! ! ! ! ! @Indexed(unique = true) ! ! ! ! @NodeEntity public class Tag { @GraphId private Long id; private String tag; } Spring  Data  Neo4j  domain  class
  55. 55. 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
  56. 56. 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
  57. 57. ! @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
  58. 58. 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)
  59. 59. 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
  60. 60. 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
  61. 61. 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); } }
  62. 62. 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
  63. 63. 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))
  64. 64. 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
  65. 65. Spring Data NEW
  66. 66. 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
  67. 67. 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
  68. 68. 63 Coding the Twitter-
  69. 69. 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
  70. 70. 65 Demo Time
  71. 71. 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
  72. 72. http://cineasts.net Check Out: http://spring.neo4j.org/tutorial
  73. 73. 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, 

  74. 74. 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
  75. 75. • 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
  76. 76. 68 ThankYou! Feel free to reach out with questions on ! •Twitter @starbuxman, @mesirii, •Spring-Forums, •Neo4j-Google-Group •Stack-Overflow

×