Enviar pesquisa
Carregar
Persistance polyglotte avec Spring Data
•
3 gostaram
•
1,640 visualizações
Michel Domenjoud
Seguir
Présentation du projet Spring Data donnée au Spring User Group FR le 29/09/2011
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 46
Recomendados
Backday Xebia : Découvrez Spring Boot sur un cas pratique
Backday Xebia : Découvrez Spring Boot sur un cas pratique
Publicis Sapient Engineering
ParisJUG Spring Boot
ParisJUG Spring Boot
Julien Sadaoui
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
Antoine Rey
Ces outils qui vous font gagner du temps
Ces outils qui vous font gagner du temps
Antoine Rey
Spring Batch 17-05-2011
Spring Batch 17-05-2011
Normandy JUG
No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010
JUG Lausanne
Innovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette Automatisé
Emmanuel Hugonnet
Paris JUG (sept 2010) - NoSQL : Des concepts à la réalité
Paris JUG (sept 2010) - NoSQL : Des concepts à la réalité
Michaël Figuière
Recomendados
Backday Xebia : Découvrez Spring Boot sur un cas pratique
Backday Xebia : Découvrez Spring Boot sur un cas pratique
Publicis Sapient Engineering
ParisJUG Spring Boot
ParisJUG Spring Boot
Julien Sadaoui
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
Antoine Rey
Ces outils qui vous font gagner du temps
Ces outils qui vous font gagner du temps
Antoine Rey
Spring Batch 17-05-2011
Spring Batch 17-05-2011
Normandy JUG
No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010
JUG Lausanne
Innovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette Automatisé
Emmanuel Hugonnet
Paris JUG (sept 2010) - NoSQL : Des concepts à la réalité
Paris JUG (sept 2010) - NoSQL : Des concepts à la réalité
Michaël Figuière
JUS 2011 - Manipulation de champs avec SALOME
JUS 2011 - Manipulation de champs avec SALOME
OpenCascade
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
OCTO Technology
Du texte à la connaissance : annotation sémantique et peuplement d'ontologie ...
Du texte à la connaissance : annotation sémantique et peuplement d'ontologie ...
Conférence IC 2009
OpenStack - open source au service du Cloud
OpenStack - open source au service du Cloud
LINAGORA
Architectures techniques NoSQL
Architectures techniques NoSQL
OCTO Technology
OpenStack & DevOps, l'Open Source au service du Cloud
OpenStack & DevOps, l'Open Source au service du Cloud
Michel-Marie Maudet
Systematic/NEOPPOD dévoilent la première base de données objets NoSQL Open So...
Systematic/NEOPPOD dévoilent la première base de données objets NoSQL Open So...
Paris, France
OpenStack 2014 - Entre projet et stratégie
OpenStack 2014 - Entre projet et stratégie
Savoir-faire Linux
Présentation Big Data et REX Hadoop
Présentation Big Data et REX Hadoop
Joseph Glorieux
No Sql User Group Intro
No Sql User Group Intro
Olivier Mallassi
Petit-déjeuner OCTO Technology : Calculez vos indicateurs en temps réel ave...
Petit-déjeuner OCTO Technology : Calculez vos indicateurs en temps réel ave...
OCTO Technology
Morning with MongoDB Paris 2012 - Octo
Morning with MongoDB Paris 2012 - Octo
MongoDB
Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022
Laurent Guérin
Meetup MongoDB Montpellier 20181120
Meetup MongoDB Montpellier 20181120
Bertrand THOMAS
Introduction au Domain Driven Design
Introduction au Domain Driven Design
DNG Consulting
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
Marc Bojoly
La Data Virtualization par Orano : cas d'usage à la Hague et démo de Denodo
La Data Virtualization par Orano : cas d'usage à la Hague et démo de Denodo
Denodo
Audition France Stratégie du 9 mars 2017 "Blockchain : les cas d'usage à l'ép...
Audition France Stratégie du 9 mars 2017 "Blockchain : les cas d'usage à l'ép...
Nabil Bouzerna
Trading dans le Cloud en gardant les pieds sur terre!
Trading dans le Cloud en gardant les pieds sur terre!
Francis Otshudi
Stage de fin d’études – dotcloud
Stage de fin d’études – dotcloud
Joffrey Fu Hrer
Mais conteúdo relacionado
Semelhante a Persistance polyglotte avec Spring Data
JUS 2011 - Manipulation de champs avec SALOME
JUS 2011 - Manipulation de champs avec SALOME
OpenCascade
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
OCTO Technology
Du texte à la connaissance : annotation sémantique et peuplement d'ontologie ...
Du texte à la connaissance : annotation sémantique et peuplement d'ontologie ...
Conférence IC 2009
OpenStack - open source au service du Cloud
OpenStack - open source au service du Cloud
LINAGORA
Architectures techniques NoSQL
Architectures techniques NoSQL
OCTO Technology
OpenStack & DevOps, l'Open Source au service du Cloud
OpenStack & DevOps, l'Open Source au service du Cloud
Michel-Marie Maudet
Systematic/NEOPPOD dévoilent la première base de données objets NoSQL Open So...
Systematic/NEOPPOD dévoilent la première base de données objets NoSQL Open So...
Paris, France
OpenStack 2014 - Entre projet et stratégie
OpenStack 2014 - Entre projet et stratégie
Savoir-faire Linux
Présentation Big Data et REX Hadoop
Présentation Big Data et REX Hadoop
Joseph Glorieux
No Sql User Group Intro
No Sql User Group Intro
Olivier Mallassi
Petit-déjeuner OCTO Technology : Calculez vos indicateurs en temps réel ave...
Petit-déjeuner OCTO Technology : Calculez vos indicateurs en temps réel ave...
OCTO Technology
Morning with MongoDB Paris 2012 - Octo
Morning with MongoDB Paris 2012 - Octo
MongoDB
Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022
Laurent Guérin
Meetup MongoDB Montpellier 20181120
Meetup MongoDB Montpellier 20181120
Bertrand THOMAS
Introduction au Domain Driven Design
Introduction au Domain Driven Design
DNG Consulting
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
Marc Bojoly
La Data Virtualization par Orano : cas d'usage à la Hague et démo de Denodo
La Data Virtualization par Orano : cas d'usage à la Hague et démo de Denodo
Denodo
Audition France Stratégie du 9 mars 2017 "Blockchain : les cas d'usage à l'ép...
Audition France Stratégie du 9 mars 2017 "Blockchain : les cas d'usage à l'ép...
Nabil Bouzerna
Trading dans le Cloud en gardant les pieds sur terre!
Trading dans le Cloud en gardant les pieds sur terre!
Francis Otshudi
Stage de fin d’études – dotcloud
Stage de fin d’études – dotcloud
Joffrey Fu Hrer
Semelhante a Persistance polyglotte avec Spring Data
(20)
JUS 2011 - Manipulation de champs avec SALOME
JUS 2011 - Manipulation de champs avec SALOME
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
Du texte à la connaissance : annotation sémantique et peuplement d'ontologie ...
Du texte à la connaissance : annotation sémantique et peuplement d'ontologie ...
OpenStack - open source au service du Cloud
OpenStack - open source au service du Cloud
Architectures techniques NoSQL
Architectures techniques NoSQL
OpenStack & DevOps, l'Open Source au service du Cloud
OpenStack & DevOps, l'Open Source au service du Cloud
Systematic/NEOPPOD dévoilent la première base de données objets NoSQL Open So...
Systematic/NEOPPOD dévoilent la première base de données objets NoSQL Open So...
OpenStack 2014 - Entre projet et stratégie
OpenStack 2014 - Entre projet et stratégie
Présentation Big Data et REX Hadoop
Présentation Big Data et REX Hadoop
No Sql User Group Intro
No Sql User Group Intro
Petit-déjeuner OCTO Technology : Calculez vos indicateurs en temps réel ave...
Petit-déjeuner OCTO Technology : Calculez vos indicateurs en temps réel ave...
Morning with MongoDB Paris 2012 - Octo
Morning with MongoDB Paris 2012 - Octo
Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022
Meetup MongoDB Montpellier 20181120
Meetup MongoDB Montpellier 20181120
Introduction au Domain Driven Design
Introduction au Domain Driven Design
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
La Data Virtualization par Orano : cas d'usage à la Hague et démo de Denodo
La Data Virtualization par Orano : cas d'usage à la Hague et démo de Denodo
Audition France Stratégie du 9 mars 2017 "Blockchain : les cas d'usage à l'ép...
Audition France Stratégie du 9 mars 2017 "Blockchain : les cas d'usage à l'ép...
Trading dans le Cloud en gardant les pieds sur terre!
Trading dans le Cloud en gardant les pieds sur terre!
Stage de fin d’études – dotcloud
Stage de fin d’études – dotcloud
Persistance polyglotte avec Spring Data
1.
Persistance polyglotte avec Spring
Data Spring User Group FR 29 sept. 2011
2.
Qui sommes nous?
Olivier Mallassi @omallassi Michel Domenjoud @mdomenjoud Laurent Dutheil @laurentdutheil blog.octo.com 2
3.
Sommaire
Persistance polyglotte et NoSQL Overview Spring Data Les enjeux Les grandes fonctionnalités Les différents projets En pratique Focus Spring Data Graph – Neo4J Cross-store en pratique avec Spring Data Graph © OCTO Technology 2011 3
4.
© OCTO Technology
2011 4
5.
Près de 40
ans de bases relationnelles © OCTO Technology 2011 5
6.
Le confort des
bases relationnelles Un système relationnel peut suffire dans la plupart des cas • Stockage structuré • Recherches • Reporting • … Mais des quantités de données et une complexité en augmentation exponentielle © OCTO Technology 2011 6
7.
Et si on
regardait un peu ailleurs? © OCTO Technology 2011 7
8.
Not Only SQL
Une pléthore de technos pour gérer les données Key/Value Graph Document Column Oriented / Raw Data noSQL © OCTO Technology 2011 aujourd’hui… 8
9.
Un peu perdus? ©
OCTO Technology 2011 9
10.
…Organisées en grandes
catégories basées sur la modélisation de la donnée Key/Value {attr1, …} Document Column Oriented Graph Flat file, Géographique, XML, Object… Une classification qui a des limites Ne prend pas en compte les patterns précédents (Cassandra & HBase) Les trade-offs sur ACID (durabilité…) © OCTO Technology 2011 10
11.
Les bases «
graph » © OCTO Technology 2011 11
12.
Les bases «
graph » en termes d’API Neo4j Transaction tx = myDb.beginTx(); try { Node architect = myDb.createNode(); Node smith = myDb.createNode(); smith.setProperty(« version », « 1.0 »); Relationship relation = smith.createRelationshipTo(architect, … relation.setProperty… tx.success(); } finally tx.finish(); © OCTO Technology 2011 12
13.
Les espaces de
stockage « Key/value » Age:29 Neo Name : Thomas Anderson … Trinity YXpnYXplZw== YXpnYXpl Zw== © OCTO Technology 2011 13
14.
Stockage « Key/Value
» en termes d’API Voldemort StoreClientFactory factory = new SocketStoreClientFactory(numThreads, numThreads, maxQueuedRequests, maxConnectionsPerNode, maxTotalConnections, bootstrapUrl); try { StoreClient<String, Object> client = factory.getStoreClient("author"); Map<String, Object> authorMap = new HashMap<String, Object>(); authorMap.put("key", "key" + i); authorMap.put("firstName", "firstName" + i); authorMap.put("lastName", "lastName" + i); client.put("key" + i, authorMap); © OCTO Technology 2011 14
15.
Les espaces de
stockage « Column Oriented » 29 Age Neo Timestamp#1 Thomas name Anderson Timestamp#2 © OCTO Technology 2011 15
16.
Stockage « Column-oriented
» en termes d’API Cassandra TTransport tr = new TSocket("192.168.216.128", 9160); TProtocol proto = new TBinaryProtocol(tr); tr.open(); Cassandra.Client cassandraClient = new Cassandra.Client(proto); Map<String, List<ColumnOrSuperColumn>> insertClientDataMap = new HashMap<String, List<ColumnOrSuperColumn>>(); List<ColumnOrSuperColumn> clientRowData = new ArrayList<ColumnOrSuperColumn>(); ColumnOrSuperColumn columnOrSuperColumn = new ColumnOrSuperColumn(); columnOrSuperColumn.setColumn(new Column("fullName".getBytes(UTF8), aCustomer.getName().getBytes(UTF8), timestamp)); clientRowData.add(columnOrSuperColumn); insertClientDataMap.put("customers", clientRowData); cassandraClient.batch_insert("myBank", aCustomer.getName(),insertClientDataMap, ConsistencyLevel.DCQUORUM); Il existe des APIs plus « abstraites » : Hector… Mécanismes de pool… © OCTO Technology 2011 16
17.
Les bases «
Document » {« Age »: 29, Neo « Name » : « Thomas Anderson » « knows »:[{« name »: « Trinity » … © OCTO Technology 2011 17
18.
Les bases «
Document » en termes d’API MongoDB //requête portant sur les tous les documents avec attendees > 80 BasicDBObject query = new BasicDBObject(); query.put(« age », new BasicDBObject(« $gt », 80)); DBCursor cur = coll.find(query); © OCTO Technology 2011 18
19.
Not Only SQL
: Persistance polyglotte « NoSQL or Polyglot persistence, is all about choosing the right persistence tool for the right job » Différents cas d'usages pour les systèmes de stockage de données • Stockage • Recherche • Navigation • Reporting La plupart des stores peuvent remplir ces fonctions, mais aucun n'est parfaitement adapté à toutes les situations © OCTO Technology 2011 19
20.
Persistance polyglotte :
les enjeux Complexité d'utiliser des systèmes hétérogènes Des concepts, des formats de stockage et des langages de manipulation des données différents Nécessité de développer les interactions au niveau applicatif Difficile de réaliser certaines opérations cross-stores • Requêtes ensemblistes, fonctions d'agrégation • Partition ou réplication du modèle de données • Homogénéité des performances, de la dispo, du partitionnement © OCTO Technology 2011 20
21.
Spring Data © OCTO
Technology 2011 21
22.
Un cas d’usage
simple « Les clients ayant acheté cet article ont également acheté… » © OCTO Technology 2011
23.
Un cas d’usage
simple Achats liés (2) Client Commande P1 P2 Achats liés (10) Produit P4 P3 © OCTO Technology 2011 23
24.
Spring Data
Les enjeux Faciliter la mise en œuvre d’une persistance polyglotte Simplification Productivité et qualité Approche commune Abstraction © OCTO Technology 2011 24
25.
Spring Data
Les projets DB relationnelles JPA JDBC Extensions Key / Value Document Column Graph © OCTO Technology 2011 25
26.
Spring Data
Des frameworks intégrés à Spring Intégration à Spring Une couche d’abstraction Faciliter les opérations cross-store © OCTO Technology 2011 26
27.
Spring Data JPA
Overview Repository Specifications Entités auditables © OCTO Technology 2011 27
28.
Spring Data
Repository © OCTO Technology 2011 28
29.
Spring Data Document
Support de MongoDB MongoTemplate Mapping d’entités @Document Repository Requêtes Cross-store persistence avec une base JPA « maître » © OCTO Technology 2011 29
30.
Spring Data Graph
Support de Neo4J Mapping d’entités Repositories Fonctions de recherche © OCTO Technology 2011 30
31.
Sans Spring Data ©
OCTO Technology 2011 31
32.
Configuration simple
Quelques dépendances Maven Un peu de configuration Spring Et c'est parti! Quelques difficultés à compiler le projet dans l’IDE (AspectJ) © OCTO Technology 2011 32
33.
Mapping d’entités © OCTO
Technology 2011 33
34.
Mapping d’entités
AspectJ : Get/Set en lecture directe dans la base (ou cache) Risqué en lecture Performances © OCTO Technology 2011 34
35.
Relations © OCTO Technology
2011 35
36.
GraphRepository © OCTO Technology
2011 36
37.
Recherches et parcours
de graphes Parcours avec @GraphTraversal Pattern matching avec @Query et Cypher © OCTO Technology 2011 37
38.
Gestion des entités
Opérations directement sur l’entité Etat des entités Entité détachée à la création jusqu’au 1er persist Entité détachée hors transaction = pas d’écriture dans le graphe Pas d’état détaché complet : dans tous les cas, get = lecture Risques de retour aux DTO et clonages d’objets © OCTO Technology 2011 38
39.
Entités cross-store © OCTO
Technology 2011 39
40.
Entités cross-store © OCTO
Technology 2011 40
41.
Cross-store en pratique
Repository © OCTO Technology 2011 41
42.
Cross-store en pratique
Repository © OCTO Technology 2011 42
43.
Promesses tenues? © OCTO
Technology 2011 43
44.
Spring Data Graph
: Avantages et inconvénients Avantages: Intégration à la stack Spring Un code proche du domaine objet (mappings et pattern Repository) Inconvénients Certains choix de design inhabituels et parfois déroutants © OCTO Technology 2011 44
45.
Pour conclure
Surtout une surcouche aux API existantes Des devs Java facilités avec les technos NoSQL Des projets encore jeunes mais prometteurs © OCTO Technology 2011 45
46.
Des questions ? ©
OCTO Technology 2011 46