Your SlideShare is downloading. ×
Real World Applications with Spring Data Neo4j
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Real World Applications with Spring Data Neo4j

1,323
views

Published on

Speaker: Michael Hunger …

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

0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,323
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
40
Comments
0
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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. 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. Bookmark: GraphConnect Oct 3-4 2013 San Francisco $99 4 Mittwoch, 11. September 13 tick et c oup on in you rb ook
  • 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. (SDN)<-[:LEARN]-(YOU)-[:GET]->(Book) GraphConnect ticket Book Spring Data Neo4j Neo4j? Spring? YOU NoSQL? Sleep? Coffee? Mittwoch, 11. September 13 Awake?
  • 6. (Michael)-[:CODES]->(SDN)-[:USES]->(Neo4j) console Cypher community graph Kernel Community ME Server Customers Spring Mittwoch, 11. September 13 Cloud
  • 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. NOSQL Mittwoch, 11. September 13
  • 9. Data Complexity , semi-structure, complexity = f(size Mittwoch, 11. September 13 connectedness)
  • 10. NOSQL databases Couch KeyValue Riak Redis Document NOSQL Mongo Column oriented Graph Relational Cassandra MySQL Mittwoch, 11. September 13 Postgres Neo4j
  • 11. Volume vs. Complexity & NOSQL databases Mittwoch, 11. September 13
  • 12. Volume vs. Complexity & NOSQL databases Volume ~= Size Mittwoch, 11. September 13
  • 13. Density ~= Complexity Volume vs. Complexity & NOSQL databases Volume ~= Size Mittwoch, 11. September 13
  • 14. Density ~= Complexity Volume vs. Complexity & NOSQL databases Key-Value Store Volume ~= Size Mittwoch, 11. September 13
  • 15. Density ~= Complexity Volume vs. Complexity & NOSQL databases Column Family Key-Value Store Volume ~= Size Mittwoch, 11. September 13
  • 16. Density ~= Complexity Volume vs. Complexity & NOSQL databases Document Databases Column Family Key-Value Store Volume ~= Size Mittwoch, 11. September 13
  • 17. Density ~= Complexity Volume vs. Complexity & NOSQL databases RDBMS Document Databases Column Family Key-Value Store Volume ~= Size Mittwoch, 11. September 13
  • 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. 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. 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. Are Graphs Everywhere ? Mittwoch, 11. September 13
  • 22. The big graphs are visible 4 Mittwoch, 11. September 13
  • 23. The big graphs are visible Facebook Open Graph 4 Mittwoch, 11. September 13
  • 24. The big graphs are visible Facebook Open Graph 4 Mittwoch, 11. September 13
  • 25. Social Network Mittwoch, 11. September 13
  • 26. (Network) Impact Analysis Mittwoch, 11. September 13
  • 27. Route Finding Mittwoch, 11. September 13
  • 28. Recommendations Mittwoch, 11. September 13
  • 29. Logistics Mittwoch, 11. September 13
  • 30. Access Control Mittwoch, 11. September 13
  • 31. Fraud Analysis Mittwoch, 11. September 13
  • 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. Graph Databases Mittwoch, 11. September 13
  • 34. 23 Mittwoch, 11. September 13
  • 35. You know relational 23 Mittwoch, 11. September 13
  • 36. You know relational 23 Mittwoch, 11. September 13
  • 37. You know relational customer 23 Mittwoch, 11. September 13
  • 38. You know relational customer 23 Mittwoch, 11. September 13 account
  • 39. You know relational customer 23 Mittwoch, 11. September 13 cust_acct account
  • 40. You know relational customer 23 Mittwoch, 11. September 13 cust_acct account
  • 41. You know relational customer 23 Mittwoch, 11. September 13 cust_acct account
  • 42. You know relational customer 23 Mittwoch, 11. September 13 cust_acct account
  • 43. You know relational now consider relationships... 23 Mittwoch, 11. September 13
  • 44. You know relational now consider relationships... 23 Mittwoch, 11. September 13
  • 45. You know relational now consider relationships... 23 Mittwoch, 11. September 13
  • 46. You know relational now consider relationships... 23 Mittwoch, 11. September 13
  • 47. You know relational now consider relationships... 23 Mittwoch, 11. September 13
  • 48. You know relational now consider relationships... 23 Mittwoch, 11. September 13
  • 49. 23 Mittwoch, 11. September 13
  • 50. We're talking about a Property Graph 24 Mittwoch, 11. September 13
  • 51. We're talking about a Property Graph Nodes 24 Mittwoch, 11. September 13
  • 52. We're talking about a Property Graph Nodes Relationships 24 Mittwoch, 11. September 13
  • 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. 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. 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. Whiteboard friendly 4 Mittwoch, 11. September 13
  • 57. Whiteboard friendly Peter Andreas Allison Emil 4 Mittwoch, 11. September 13
  • 58. Whiteboard friendly Andreas Peter knows knows knows Allison Emil 4 Mittwoch, 11. September 13 knows
  • 59. Whiteboard friendly Andreas Peter knows knows knows Allison Emil 4 Mittwoch, 11. September 13 knows
  • 60. 4 Mittwoch, 11. September 13
  • 61. (Neo4j) -[:IS_A]->(Graph Database) 4 Mittwoch, 11. September 13
  • 62. (Neo4j) -[:IS_A]->(Graph Database) - 4 Mittwoch, 11. September 13 A Graph Database:
  • 63. (Neo4j) -[:IS_A]->(Graph Database) - A Graph Database: - 4 Mittwoch, 11. September 13 a schema-free Property Graph
  • 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. (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. (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. (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. (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. (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. (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. (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. (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. Spring Data Neo4j Mittwoch, 11. September 13
  • 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. 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. 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. 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. 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. Spring Data Neo4j domain class @NodeEntity public class User { @GraphId private Long id; private String name; } Mittwoch, 11. September 13
  • 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. Defining entity classes Mittwoch, 11. September 13
  • 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. Defining entity classes Mittwoch, 11. September 13
  • 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. 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. 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. 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. 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. 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. 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. 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. Whiteboard friendly - Example Attending the #S2GX #SDN session by @mesirii Looking forward to my #SDN session Mittwoch, 11. September 13
  • 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. 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. 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. Twitter - Graph Data Model 4 Mittwoch, 11. September 13
  • 97. Spring Data Neo4j - Sample Domain Class & Service 4 Mittwoch, 11. September 13
  • 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. Real World Use-Cases with Mittwoch, 11. September 13
  • 100. (Neo4j) -[:LOVES]-> (Our Customers) 52 Mittwoch, 11. September 13
  • 101. (Neo4j) -[:LOVES]-> (Our Customers) 52 Mittwoch, 11. September 13
  • 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. Airline: Media Asset Management 54 Mittwoch, 11. September 13
  • 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. 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. 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. Airline: Media Asset Management 58 Mittwoch, 11. September 13
  • 108. Airline: Media Asset Management 58 Mittwoch, 11. September 13
  • 109. Airline: Media Asset Management 58 Mittwoch, 11. September 13
  • 110. Airline: Media Asset Management 58 Mittwoch, 11. September 13
  • 111. Airline: Media Asset Management 58 Mittwoch, 11. September 13
  • 112. Junisphere: Complex structural document handling 59 Mittwoch, 11. September 13
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. WhyOwnIt - Ownership Sharing Service 68 Mittwoch, 11. September 13
  • 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. 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. WhyOwnIt - Ownership Sharing Service 71 Mittwoch, 11. September 13
  • 131. WhyOwnIt - Ownership Sharing Service 71 Mittwoch, 11. September 13
  • 132. WhyOwnIt - Ownership Sharing Service 71 Mittwoch, 11. September 13
  • 133. WhyOwnIt - Ownership Sharing Service 71 Mittwoch, 11. September 13
  • 134. WhyOwnIt - Ownership Sharing Service 71 Mittwoch, 11. September 13
  • 135. WhyOwnIt - Ownership Sharing Service 71 Mittwoch, 11. September 13
  • 136. WhyOwnIt - Ownership Sharing Service 72 Mittwoch, 11. September 13
  • 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. 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. Music Sharing/Discovery/Recommendation Service 75 Mittwoch, 11. September 13
  • 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. 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. Music Sharing/Discovery/Recommendation Service 78 Mittwoch, 11. September 13
  • 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. 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. 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. Open Source Projects 82 Mittwoch, 11. September 13
  • 147. Cineasts.net - a social movie database Check Out: http://spring.neo4j.org/tutorial Mittwoch, 11. September 13
  • 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. 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. 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. Agent Spring - Energy Market Modeling 86 Mittwoch, 11. September 13
  • 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. How do I get started? 4 Mittwoch, 11. September 13
  • 154. How do I get started? ๏ Documentation 4 Mittwoch, 11. September 13
  • 155. How do I get started? ๏ Documentation • http://spring.neo4j.org 4 Mittwoch, 11. September 13
  • 156. How do I get started? ๏ Documentation • http://spring.neo4j.org • Developer-Notes 4 Mittwoch, 11. September 13
  • 157. How do I get started? ๏ Documentation • http://spring.neo4j.org • Developer-Notes • Spring Data Book 4 Mittwoch, 11. September 13
  • 158. How do I get started? ๏ Documentation • http://spring.neo4j.org • Developer-Notes • Spring Data Book • Good Relationships 4 Mittwoch, 11. September 13
  • 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. 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. 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. 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. 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. 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. 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. 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. Bookmark: GraphConnect Oct 3-4 2013 San Francisco $99 4 Mittwoch, 11. September 13 tick et c oup on in you rb ook
  • 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. Thank you ! Questions ? Mittwoch, 11. September 13

×