SlideShare une entreprise Scribd logo
1  sur  10
Spring Data NOSQL Support

     • Challenge
         • Proliferation of data
         • Complexity of data
         • Won’t all go into relational databases
     • NOSQL = Not Only SQL
     • Opportunity for Spring to provide solutions
     • Spring Data support for new data stores
                            Column/




Tuesday, October 19, 2010
The Neo4j graph database

     • A graph database uses nodes, relationships and properties




     • Sweet spot: complex domains such as social networking,
       bioinformatics, fraud detection, master data mgm
           – Very high performance on complex data: traverses 1-2
             MILLION hops per second
     2

Tuesday, October 19, 2010
A scenario ...
     You have a traditional web app using JPA to persist data to a
       relational database




Tuesday, October 19, 2010
Existing JPA data model

                                    Restaurant                           UserAccount
                            @Entity                       @Entity
                            public class Restaurant {     @Table(name = "user_account")
                                @Id @GeneratedValue       public class UserAccount {
                                private Long id;              @Id @GeneratedValue
                                private String name;          private Long id;
                                private String city;          private String userName;
                                private String state;         private String firstName;
                                private String zipCode;       private String lastName;
                                                              @Temporal(TemporalType.TIMESTAMP)
                                                              private Date birthDate;
                                                              @ManyToMany(cascade = CascadeType.ALL)
                                                              private Set<Restaurant> favorites;




Tuesday, October 19, 2010
Adding Neo4J graph features to the data model

                                      Restaurant                              UserAccount
                             @Entity                           @Entity
                             @NodeEntity(partial = true)       @Table(name = "user_account")
                             public class Restaurant {         @NodeEntity(partial = true)
                               @Id @GeneratedValue             public class UserAccount {
                               private Long id;                  @Id @GeneratedValue
                               private String name;              private Long id;
                               private String city;              private String userName;
                               private String state;             private String firstName;
                               private String zipCode;           private String lastName;
                                                                 @Temporal(TemporalType.TIMESTAMP)
                                                                 private Date birthDate;
                                                                 @ManyToMany(cascade = CascadeType.ALL)
                                   Recommendation                private Set<Restaurant> favorites;

                            @RelationshipEntity                  @GraphProperty
                            public class Recommendation {        String nickname;
                              @StartNode                         @RelatedTo(type = "friends",
                              private UserAccount user;               elementClass = UserAccount.class)
                              @EndNode                           Set<UserAccount> friends;
                              private Restaurant restaurant;     @RelatedToVia(type = "recommends",
                              private int stars;                      elementClass = Recommendation.class)
                              private String comment;            Iterable<Recommendation> recommendations;




Tuesday, October 19, 2010
Old style Neo4j code example


                     public class Recommendation {
                         private final Relationship underlyingRel;

                            public Recommendation( Relationship underlyingRel ) {
                                this.underlyingRel = underlyingRel;
                            }

                            public void rate(int stars, String comment) {
                                this.underlyingRel.setProperty("stars", stars);
                                this.underlyingRel.setProperty("comment", comment);
                            }

                            public int getStars() {
                                return (Integer) this.underlyingRel.getProperty("stars");
                            }

                            public String getComment() {
                                return (String) this.underlyingRel.getProperty("comment");
                            }




Tuesday, October 19, 2010
New style Spring/Neo4j code example
                     @RelationshipEntity
                     public class Recommendation {
                         @StartNode
                         private UserAccount user;
                         @EndNode
                         private Restaurant restaurant;

                            private int stars;
                            private String comment;

                            public Recommendation() {
                            }

                            public void rate(int stars, String comment) {
                                this.stars = stars;
                                this.comment = comment;
                            }

                            public int getStars() {
                                return stars;
                            }

                            public String getComment() {
                                return comment;
                            }




Tuesday, October 19, 2010
The social networking version




Tuesday, October 19, 2010
Generating in Spring Roo - new Neo4J Add-On




Tuesday, October 19, 2010
Conclusion

     • The goal of the Spring Data project is to provide simple
       and convenient connectivity to non-relational databases
       such as Redis, Neo4j, MongoDB and Cassandra

     • The Neo4j datastore-graph and Roo add-on have been
       developed in collaboration with the Neo4j team
           – Already used in a commercial context

     • If you want to learn more, go to:
           – “Graph Database Persistence using Neo4J with Spring and
             Roo” on Friday @ 1015 am
           – http://wiki.neo4j.org/content/Neo4j_and_SpringOne



     10

Tuesday, October 19, 2010

Contenu connexe

Tendances

Drupal Entities - Emerging Patterns of Usage
Drupal Entities - Emerging Patterns of UsageDrupal Entities - Emerging Patterns of Usage
Drupal Entities - Emerging Patterns of UsageRonald Ashri
 
Meetup di GDG Italia - Leonardo Pirro - Codemotion Rome 2018
Meetup di GDG Italia - Leonardo Pirro -  Codemotion Rome 2018 Meetup di GDG Italia - Leonardo Pirro -  Codemotion Rome 2018
Meetup di GDG Italia - Leonardo Pirro - Codemotion Rome 2018 Codemotion
 
Android Architecure Components - introduction
Android Architecure Components - introductionAndroid Architecure Components - introduction
Android Architecure Components - introductionPaulina Szklarska
 
Data binding в массы! (1.2)
Data binding в массы! (1.2)Data binding в массы! (1.2)
Data binding в массы! (1.2)Yurii Kotov
 
«Objective-C Runtime в примерах» — Алексей Сторожев, e-Legion
«Objective-C Runtime в примерах» — Алексей Сторожев, e-Legion«Objective-C Runtime в примерах» — Алексей Сторожев, e-Legion
«Objective-C Runtime в примерах» — Алексей Сторожев, e-Legione-Legion
 

Tendances (6)

Drupal Entities - Emerging Patterns of Usage
Drupal Entities - Emerging Patterns of UsageDrupal Entities - Emerging Patterns of Usage
Drupal Entities - Emerging Patterns of Usage
 
Meetup di GDG Italia - Leonardo Pirro - Codemotion Rome 2018
Meetup di GDG Italia - Leonardo Pirro -  Codemotion Rome 2018 Meetup di GDG Italia - Leonardo Pirro -  Codemotion Rome 2018
Meetup di GDG Italia - Leonardo Pirro - Codemotion Rome 2018
 
Android Architecure Components - introduction
Android Architecure Components - introductionAndroid Architecure Components - introduction
Android Architecure Components - introduction
 
Data binding в массы! (1.2)
Data binding в массы! (1.2)Data binding в массы! (1.2)
Data binding в массы! (1.2)
 
Grammarware Memes
Grammarware MemesGrammarware Memes
Grammarware Memes
 
«Objective-C Runtime в примерах» — Алексей Сторожев, e-Legion
«Objective-C Runtime в примерах» — Алексей Сторожев, e-Legion«Objective-C Runtime в примерах» — Алексей Сторожев, e-Legion
«Objective-C Runtime в примерах» — Алексей Сторожев, e-Legion
 

En vedette

Auction report 15
Auction report 15Auction report 15
Auction report 15ahmedzapata
 
오프닝 김봉술
오프닝 김봉술오프닝 김봉술
오프닝 김봉술Jinho Jung
 
Leisure project
Leisure projectLeisure project
Leisure projectvacherry15
 
work ethic
work ethicwork ethic
work ethicmitch420
 
Nature les jardins_du_monde__8224
Nature les jardins_du_monde__8224Nature les jardins_du_monde__8224
Nature les jardins_du_monde__8224Jose Pinto Cardoso
 
Growth Hacking Intro
Growth Hacking IntroGrowth Hacking Intro
Growth Hacking IntroIdea Hunt
 
Ribarroja reference (Signed)
Ribarroja reference (Signed)Ribarroja reference (Signed)
Ribarroja reference (Signed)Chris Young
 
Fewzion summary v0.13
Fewzion summary v0.13Fewzion summary v0.13
Fewzion summary v0.13Kisha Gray
 
Blinn Residence
Blinn ResidenceBlinn Residence
Blinn Residencelampertaia
 
Motivation, rewards and individual needs
Motivation, rewards and individual needsMotivation, rewards and individual needs
Motivation, rewards and individual needshrithik pandey
 
Jae automation conveyor_system_components_id_5165_r sm
Jae automation conveyor_system_components_id_5165_r smJae automation conveyor_system_components_id_5165_r sm
Jae automation conveyor_system_components_id_5165_r smprobasecanada
 
510(k) Pre-Market Notification Project
510(k) Pre-Market Notification Project510(k) Pre-Market Notification Project
510(k) Pre-Market Notification ProjectBrandon MacAleese
 
METODOS DE ENSEÑANZA APRENDIZAJE
METODOS DE ENSEÑANZA APRENDIZAJEMETODOS DE ENSEÑANZA APRENDIZAJE
METODOS DE ENSEÑANZA APRENDIZAJEjoselyn andrade
 

En vedette (20)

Auction report 15
Auction report 15Auction report 15
Auction report 15
 
오프닝 김봉술
오프닝 김봉술오프닝 김봉술
오프닝 김봉술
 
Leisure project
Leisure projectLeisure project
Leisure project
 
Certifikat FSM
Certifikat FSMCertifikat FSM
Certifikat FSM
 
work ethic
work ethicwork ethic
work ethic
 
Nature les jardins_du_monde__8224
Nature les jardins_du_monde__8224Nature les jardins_du_monde__8224
Nature les jardins_du_monde__8224
 
Growth Hacking Intro
Growth Hacking IntroGrowth Hacking Intro
Growth Hacking Intro
 
Ribarroja reference (Signed)
Ribarroja reference (Signed)Ribarroja reference (Signed)
Ribarroja reference (Signed)
 
Sep09iib
Sep09iibSep09iib
Sep09iib
 
Fewzion summary v0.13
Fewzion summary v0.13Fewzion summary v0.13
Fewzion summary v0.13
 
Blinn Residence
Blinn ResidenceBlinn Residence
Blinn Residence
 
Electric Eels
Electric EelsElectric Eels
Electric Eels
 
Motivation, rewards and individual needs
Motivation, rewards and individual needsMotivation, rewards and individual needs
Motivation, rewards and individual needs
 
PhD Summary_Ida Telalbasic
PhD Summary_Ida TelalbasicPhD Summary_Ida Telalbasic
PhD Summary_Ida Telalbasic
 
Jae automation conveyor_system_components_id_5165_r sm
Jae automation conveyor_system_components_id_5165_r smJae automation conveyor_system_components_id_5165_r sm
Jae automation conveyor_system_components_id_5165_r sm
 
02 classifying species
02 classifying species02 classifying species
02 classifying species
 
Hibiz
HibizHibiz
Hibiz
 
Esol decree
Esol decreeEsol decree
Esol decree
 
510(k) Pre-Market Notification Project
510(k) Pre-Market Notification Project510(k) Pre-Market Notification Project
510(k) Pre-Market Notification Project
 
METODOS DE ENSEÑANZA APRENDIZAJE
METODOS DE ENSEÑANZA APRENDIZAJEMETODOS DE ENSEÑANZA APRENDIZAJE
METODOS DE ENSEÑANZA APRENDIZAJE
 

Similaire à NOSQL part of the SpringOne 2GX 2010 keynote

Creating a Facebook Clone - Part XIX - Transcript.pdf
Creating a Facebook Clone - Part XIX - Transcript.pdfCreating a Facebook Clone - Part XIX - Transcript.pdf
Creating a Facebook Clone - Part XIX - Transcript.pdfShaiAlmog1
 
Lombokの紹介
Lombokの紹介Lombokの紹介
Lombokの紹介onozaty
 
Creating a Facebook Clone - Part XIX.pdf
Creating a Facebook Clone - Part XIX.pdfCreating a Facebook Clone - Part XIX.pdf
Creating a Facebook Clone - Part XIX.pdfShaiAlmog1
 
03 Object Relational Mapping
03 Object Relational Mapping03 Object Relational Mapping
03 Object Relational MappingRanjan Kumar
 
Infinum Android Talks #20 - Benefits of using Kotlin
Infinum Android Talks #20 - Benefits of using KotlinInfinum Android Talks #20 - Benefits of using Kotlin
Infinum Android Talks #20 - Benefits of using KotlinInfinum
 
Easy data-with-spring-data-jpa
Easy data-with-spring-data-jpaEasy data-with-spring-data-jpa
Easy data-with-spring-data-jpaStaples
 
Creating a Facebook Clone - Part XX.pdf
Creating a Facebook Clone - Part XX.pdfCreating a Facebook Clone - Part XX.pdf
Creating a Facebook Clone - Part XX.pdfShaiAlmog1
 
Annotation processing and code gen
Annotation processing and code genAnnotation processing and code gen
Annotation processing and code genkoji lin
 
Creating a Facebook Clone - Part XX - Transcript.pdf
Creating a Facebook Clone - Part XX - Transcript.pdfCreating a Facebook Clone - Part XX - Transcript.pdf
Creating a Facebook Clone - Part XX - Transcript.pdfShaiAlmog1
 
springdatajpa-up.pdf
springdatajpa-up.pdfspringdatajpa-up.pdf
springdatajpa-up.pdfssuser0562f1
 
[2019] PAYCO 매거진 서버 Kotlin 적용기
[2019] PAYCO 매거진 서버 Kotlin 적용기[2019] PAYCO 매거진 서버 Kotlin 적용기
[2019] PAYCO 매거진 서버 Kotlin 적용기NHN FORWARD
 
NoSQL Endgame Percona Live Online 2020
NoSQL Endgame Percona Live Online 2020NoSQL Endgame Percona Live Online 2020
NoSQL Endgame Percona Live Online 2020Thodoris Bais
 
Java Persistence API 2.0: An Overview
Java Persistence API 2.0: An OverviewJava Persistence API 2.0: An Overview
Java Persistence API 2.0: An OverviewSanjeeb Sahoo
 
Kotlin for all the Things
Kotlin for all the ThingsKotlin for all the Things
Kotlin for all the ThingsEamonn Boyle
 
#pugMi - DDD - Value objects
#pugMi - DDD - Value objects#pugMi - DDD - Value objects
#pugMi - DDD - Value objectsSimone Gentili
 

Similaire à NOSQL part of the SpringOne 2GX 2010 keynote (20)

Spring data
Spring dataSpring data
Spring data
 
Creating a Facebook Clone - Part XIX - Transcript.pdf
Creating a Facebook Clone - Part XIX - Transcript.pdfCreating a Facebook Clone - Part XIX - Transcript.pdf
Creating a Facebook Clone - Part XIX - Transcript.pdf
 
Lombokの紹介
Lombokの紹介Lombokの紹介
Lombokの紹介
 
Creating a Facebook Clone - Part XIX.pdf
Creating a Facebook Clone - Part XIX.pdfCreating a Facebook Clone - Part XIX.pdf
Creating a Facebook Clone - Part XIX.pdf
 
03 Object Relational Mapping
03 Object Relational Mapping03 Object Relational Mapping
03 Object Relational Mapping
 
Infinum Android Talks #20 - Benefits of using Kotlin
Infinum Android Talks #20 - Benefits of using KotlinInfinum Android Talks #20 - Benefits of using Kotlin
Infinum Android Talks #20 - Benefits of using Kotlin
 
Easy data-with-spring-data-jpa
Easy data-with-spring-data-jpaEasy data-with-spring-data-jpa
Easy data-with-spring-data-jpa
 
Creating a Facebook Clone - Part XX.pdf
Creating a Facebook Clone - Part XX.pdfCreating a Facebook Clone - Part XX.pdf
Creating a Facebook Clone - Part XX.pdf
 
Recyclerview in action
Recyclerview in action Recyclerview in action
Recyclerview in action
 
Annotation processing and code gen
Annotation processing and code genAnnotation processing and code gen
Annotation processing and code gen
 
Creating a Facebook Clone - Part XX - Transcript.pdf
Creating a Facebook Clone - Part XX - Transcript.pdfCreating a Facebook Clone - Part XX - Transcript.pdf
Creating a Facebook Clone - Part XX - Transcript.pdf
 
Spring Data JPA
Spring Data JPASpring Data JPA
Spring Data JPA
 
springdatajpa-up.pdf
springdatajpa-up.pdfspringdatajpa-up.pdf
springdatajpa-up.pdf
 
[2019] PAYCO 매거진 서버 Kotlin 적용기
[2019] PAYCO 매거진 서버 Kotlin 적용기[2019] PAYCO 매거진 서버 Kotlin 적용기
[2019] PAYCO 매거진 서버 Kotlin 적용기
 
NoSQL Endgame Percona Live Online 2020
NoSQL Endgame Percona Live Online 2020NoSQL Endgame Percona Live Online 2020
NoSQL Endgame Percona Live Online 2020
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
 
Java Persistence API 2.0: An Overview
Java Persistence API 2.0: An OverviewJava Persistence API 2.0: An Overview
Java Persistence API 2.0: An Overview
 
Kotlin for all the Things
Kotlin for all the ThingsKotlin for all the Things
Kotlin for all the Things
 
From Java to Python
From Java to PythonFrom Java to Python
From Java to Python
 
#pugMi - DDD - Value objects
#pugMi - DDD - Value objects#pugMi - DDD - Value objects
#pugMi - DDD - Value objects
 

Plus de Emil Eifrem

Startups in Sweden vs Startups in Silicon Valley, 2015 edition
Startups in Sweden vs Startups in Silicon Valley, 2015 editionStartups in Sweden vs Startups in Silicon Valley, 2015 edition
Startups in Sweden vs Startups in Silicon Valley, 2015 editionEmil Eifrem
 
GraphConnect SF 2013 Keynote
GraphConnect SF 2013 KeynoteGraphConnect SF 2013 Keynote
GraphConnect SF 2013 KeynoteEmil Eifrem
 
An Overview of the Emerging Graph Landscape (Oct 2013)
An Overview of the Emerging Graph Landscape (Oct 2013)An Overview of the Emerging Graph Landscape (Oct 2013)
An Overview of the Emerging Graph Landscape (Oct 2013)Emil Eifrem
 
Startups in Sweden vs Startups in Silicon Valley
Startups in Sweden vs Startups in Silicon ValleyStartups in Sweden vs Startups in Silicon Valley
Startups in Sweden vs Startups in Silicon ValleyEmil Eifrem
 
An intro to Neo4j and some use cases (JFokus 2011)
An intro to Neo4j and some use cases (JFokus 2011)An intro to Neo4j and some use cases (JFokus 2011)
An intro to Neo4j and some use cases (JFokus 2011)Emil Eifrem
 
An overview of NOSQL (JFokus 2011)
An overview of NOSQL (JFokus 2011)An overview of NOSQL (JFokus 2011)
An overview of NOSQL (JFokus 2011)Emil Eifrem
 
NOSQL overview and intro to graph databases with Neo4j (Geeknight May 2010)
NOSQL overview and intro to graph databases with Neo4j (Geeknight May 2010)NOSQL overview and intro to graph databases with Neo4j (Geeknight May 2010)
NOSQL overview and intro to graph databases with Neo4j (Geeknight May 2010)Emil Eifrem
 
NOSQL Overview, Neo4j Intro And Production Example (QCon London 2010)
NOSQL Overview, Neo4j Intro And Production Example (QCon London 2010)NOSQL Overview, Neo4j Intro And Production Example (QCon London 2010)
NOSQL Overview, Neo4j Intro And Production Example (QCon London 2010)Emil Eifrem
 
NOSQL Overview Lightning Talk (Scalability Geekcruise 2009)
NOSQL Overview Lightning Talk (Scalability Geekcruise 2009)NOSQL Overview Lightning Talk (Scalability Geekcruise 2009)
NOSQL Overview Lightning Talk (Scalability Geekcruise 2009)Emil Eifrem
 
A NOSQL Overview And The Benefits Of Graph Databases (nosql east 2009)
A NOSQL Overview And The Benefits Of Graph Databases (nosql east 2009)A NOSQL Overview And The Benefits Of Graph Databases (nosql east 2009)
A NOSQL Overview And The Benefits Of Graph Databases (nosql east 2009)Emil Eifrem
 
Neo4j - The Benefits of Graph Databases (OSCON 2009)
Neo4j - The Benefits of Graph Databases (OSCON 2009)Neo4j - The Benefits of Graph Databases (OSCON 2009)
Neo4j - The Benefits of Graph Databases (OSCON 2009)Emil Eifrem
 
Neo4j -- or why graph dbs kick ass
Neo4j -- or why graph dbs kick assNeo4j -- or why graph dbs kick ass
Neo4j -- or why graph dbs kick assEmil Eifrem
 

Plus de Emil Eifrem (12)

Startups in Sweden vs Startups in Silicon Valley, 2015 edition
Startups in Sweden vs Startups in Silicon Valley, 2015 editionStartups in Sweden vs Startups in Silicon Valley, 2015 edition
Startups in Sweden vs Startups in Silicon Valley, 2015 edition
 
GraphConnect SF 2013 Keynote
GraphConnect SF 2013 KeynoteGraphConnect SF 2013 Keynote
GraphConnect SF 2013 Keynote
 
An Overview of the Emerging Graph Landscape (Oct 2013)
An Overview of the Emerging Graph Landscape (Oct 2013)An Overview of the Emerging Graph Landscape (Oct 2013)
An Overview of the Emerging Graph Landscape (Oct 2013)
 
Startups in Sweden vs Startups in Silicon Valley
Startups in Sweden vs Startups in Silicon ValleyStartups in Sweden vs Startups in Silicon Valley
Startups in Sweden vs Startups in Silicon Valley
 
An intro to Neo4j and some use cases (JFokus 2011)
An intro to Neo4j and some use cases (JFokus 2011)An intro to Neo4j and some use cases (JFokus 2011)
An intro to Neo4j and some use cases (JFokus 2011)
 
An overview of NOSQL (JFokus 2011)
An overview of NOSQL (JFokus 2011)An overview of NOSQL (JFokus 2011)
An overview of NOSQL (JFokus 2011)
 
NOSQL overview and intro to graph databases with Neo4j (Geeknight May 2010)
NOSQL overview and intro to graph databases with Neo4j (Geeknight May 2010)NOSQL overview and intro to graph databases with Neo4j (Geeknight May 2010)
NOSQL overview and intro to graph databases with Neo4j (Geeknight May 2010)
 
NOSQL Overview, Neo4j Intro And Production Example (QCon London 2010)
NOSQL Overview, Neo4j Intro And Production Example (QCon London 2010)NOSQL Overview, Neo4j Intro And Production Example (QCon London 2010)
NOSQL Overview, Neo4j Intro And Production Example (QCon London 2010)
 
NOSQL Overview Lightning Talk (Scalability Geekcruise 2009)
NOSQL Overview Lightning Talk (Scalability Geekcruise 2009)NOSQL Overview Lightning Talk (Scalability Geekcruise 2009)
NOSQL Overview Lightning Talk (Scalability Geekcruise 2009)
 
A NOSQL Overview And The Benefits Of Graph Databases (nosql east 2009)
A NOSQL Overview And The Benefits Of Graph Databases (nosql east 2009)A NOSQL Overview And The Benefits Of Graph Databases (nosql east 2009)
A NOSQL Overview And The Benefits Of Graph Databases (nosql east 2009)
 
Neo4j - The Benefits of Graph Databases (OSCON 2009)
Neo4j - The Benefits of Graph Databases (OSCON 2009)Neo4j - The Benefits of Graph Databases (OSCON 2009)
Neo4j - The Benefits of Graph Databases (OSCON 2009)
 
Neo4j -- or why graph dbs kick ass
Neo4j -- or why graph dbs kick assNeo4j -- or why graph dbs kick ass
Neo4j -- or why graph dbs kick ass
 

Dernier

Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 

Dernier (20)

Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 

NOSQL part of the SpringOne 2GX 2010 keynote

  • 1. Spring Data NOSQL Support • Challenge • Proliferation of data • Complexity of data • Won’t all go into relational databases • NOSQL = Not Only SQL • Opportunity for Spring to provide solutions • Spring Data support for new data stores Column/ Tuesday, October 19, 2010
  • 2. The Neo4j graph database • A graph database uses nodes, relationships and properties • Sweet spot: complex domains such as social networking, bioinformatics, fraud detection, master data mgm – Very high performance on complex data: traverses 1-2 MILLION hops per second 2 Tuesday, October 19, 2010
  • 3. A scenario ... You have a traditional web app using JPA to persist data to a relational database Tuesday, October 19, 2010
  • 4. Existing JPA data model Restaurant UserAccount @Entity @Entity public class Restaurant { @Table(name = "user_account") @Id @GeneratedValue public class UserAccount { private Long id; @Id @GeneratedValue private String name; private Long id; private String city; private String userName; private String state; private String firstName; private String zipCode; private String lastName; @Temporal(TemporalType.TIMESTAMP) private Date birthDate; @ManyToMany(cascade = CascadeType.ALL) private Set<Restaurant> favorites; Tuesday, October 19, 2010
  • 5. Adding Neo4J graph features to the data model Restaurant UserAccount @Entity @Entity @NodeEntity(partial = true) @Table(name = "user_account") public class Restaurant { @NodeEntity(partial = true) @Id @GeneratedValue public class UserAccount { private Long id; @Id @GeneratedValue private String name; private Long id; private String city; private String userName; private String state; private String firstName; private String zipCode; private String lastName; @Temporal(TemporalType.TIMESTAMP) private Date birthDate; @ManyToMany(cascade = CascadeType.ALL) Recommendation private Set<Restaurant> favorites; @RelationshipEntity @GraphProperty public class Recommendation { String nickname; @StartNode @RelatedTo(type = "friends", private UserAccount user; elementClass = UserAccount.class) @EndNode Set<UserAccount> friends; private Restaurant restaurant; @RelatedToVia(type = "recommends", private int stars; elementClass = Recommendation.class) private String comment; Iterable<Recommendation> recommendations; Tuesday, October 19, 2010
  • 6. Old style Neo4j code example public class Recommendation { private final Relationship underlyingRel; public Recommendation( Relationship underlyingRel ) { this.underlyingRel = underlyingRel; } public void rate(int stars, String comment) { this.underlyingRel.setProperty("stars", stars); this.underlyingRel.setProperty("comment", comment); } public int getStars() { return (Integer) this.underlyingRel.getProperty("stars"); } public String getComment() { return (String) this.underlyingRel.getProperty("comment"); } Tuesday, October 19, 2010
  • 7. New style Spring/Neo4j code example @RelationshipEntity public class Recommendation { @StartNode private UserAccount user; @EndNode private Restaurant restaurant; private int stars; private String comment; public Recommendation() { } public void rate(int stars, String comment) { this.stars = stars; this.comment = comment; } public int getStars() { return stars; } public String getComment() { return comment; } Tuesday, October 19, 2010
  • 8. The social networking version Tuesday, October 19, 2010
  • 9. Generating in Spring Roo - new Neo4J Add-On Tuesday, October 19, 2010
  • 10. Conclusion • The goal of the Spring Data project is to provide simple and convenient connectivity to non-relational databases such as Redis, Neo4j, MongoDB and Cassandra • The Neo4j datastore-graph and Roo add-on have been developed in collaboration with the Neo4j team – Already used in a commercial context • If you want to learn more, go to: – “Graph Database Persistence using Neo4J with Spring and Roo” on Friday @ 1015 am – http://wiki.neo4j.org/content/Neo4j_and_SpringOne 10 Tuesday, October 19, 2010