Your SlideShare is downloading. ×
Persistance polyglotte avecSpring Data                        Spring User Group FR                                29 sept....
Qui sommes nous? Olivier Mallassi          @omallassi Michel Domenjoud         @mdomenjoud Laurent Dutheil         @lau...
Sommaire    Persistance polyglotte et NoSQL    Overview Spring Data            Les enjeux            Les grandes fonct...
© OCTO Technology 2011   4
Près de 40 ans de bases relationnelles© OCTO Technology 2011                         5
Le confort des bases relationnelles    Un système relationnel peut suffire dans la plupart des cas          •    Stockage...
Et si on regardait un peu ailleurs?© OCTO Technology 2011                                  7
Not Only SQL                                 Une pléthore de technos pour gérer les données                     Key/Value ...
Un peu perdus?© OCTO Technology 2011                    9
…Organisées en grandes catégories                                                    basées sur la modélisation de la donn...
Les bases « graph »© OCTO Technology 2011                         11
Les bases « graph »                                                                         en termes d’API           Neo4...
Les espaces de stockage « Key/value »                                    Age:29                           Neo      Name : ...
Stockage « Key/Value »                                                                          en termes d’API           ...
Les espaces de stockage « Column Oriented »                                                    29                         ...
Stockage « Column-oriented »                                                                              en termes d’API ...
Les bases « Document »                               {« Age »: 29,                         Neo   « Name » : « Thomas Ander...
Les bases « Document »                                                                       en termes d’API       MongoDB...
Not Only SQL : Persistance polyglotte    « NoSQL or Polyglot persistence, is all about choosing the right persistence    ...
Persistance polyglotte : les enjeux    Complexité dutiliser des systèmes hétérogènes    Des concepts, des formats de sto...
Spring Data© OCTO Technology 2011   21
Un cas d’usage simple                          « Les clients ayant acheté cet                         article ont égalemen...
Un cas d’usage simple                                              Achats liés (2)         Client          Commande   P1  ...
Spring Data                                                  Les enjeux       Faciliter la mise en œuvre d’une persistance...
Spring Data                                       Les projets   DB relationnelles                         JPA   JDBC Exten...
Spring Data                             Des frameworks intégrés à Spring    Intégration à Spring    Une couche d’abstrac...
Spring Data JPA                                Overview    Repository    Specifications    Entités auditables© OCTO Tec...
Spring Data                          Repository© OCTO Technology 2011                 28
Spring Data Document        Support de MongoDB        MongoTemplate        Mapping d’entités @Document        Reposito...
Spring Data Graph        Support de Neo4J        Mapping d’entités        Repositories        Fonctions de recherche© ...
Sans Spring Data© OCTO Technology 2011                      31
Configuration simple    Quelques dépendances Maven    Un peu de configuration Spring    Et cest parti!                 ...
Mapping d’entités© OCTO Technology 2011                       33
Mapping d’entités                         AspectJ : Get/Set en lecture                         directe dans la base (ou ca...
Relations© OCTO Technology 2011               35
GraphRepository© OCTO Technology 2011                     36
Recherches et parcours de graphes    Parcours avec @GraphTraversal    Pattern matching avec @Query et Cypher© OCTO Techn...
Gestion des entités    Opérations directement sur l’entité    Etat des entités            Entité détachée à la création...
Entités cross-store© OCTO Technology 2011                         39
Entités cross-store© OCTO Technology 2011                         40
Cross-store en pratique                                      Repository© OCTO Technology 2011                             41
Cross-store en pratique                                      Repository© OCTO Technology 2011                             42
Promesses tenues?© OCTO Technology 2011                       43
Spring Data Graph : Avantages et inconvénients    Avantages:            Intégration à la stack Spring            Un cod...
Pour conclure    Surtout une surcouche aux API existantes    Des devs Java facilités avec les technos NoSQL    Des proj...
Des questions ?© OCTO Technology 2011                     46
Upcoming SlideShare
Loading in...5
×

Persistance polyglotte avec Spring Data

1,347

Published on

Présentation du projet Spring Data donnée au Spring User Group FR le 29/09/2011

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,347
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Persistance polyglotte avec Spring Data"

  1. 1. Persistance polyglotte avecSpring Data Spring User Group FR 29 sept. 2011
  2. 2. Qui sommes nous? Olivier Mallassi @omallassi Michel Domenjoud @mdomenjoud Laurent Dutheil @laurentdutheil blog.octo.com 2
  3. 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. 4. © OCTO Technology 2011 4
  5. 5. Près de 40 ans de bases relationnelles© OCTO Technology 2011 5
  6. 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. 7. Et si on regardait un peu ailleurs?© OCTO Technology 2011 7
  8. 8. Not Only SQL Une pléthore de technos pour gérer les données Key/Value GraphDocument Column Oriented / Raw Data noSQL© OCTO Technology 2011 aujourd’hui… 8
  9. 9. Un peu perdus?© OCTO Technology 2011 9
  10. 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. 11. Les bases « graph »© OCTO Technology 2011 11
  12. 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. 13. Les espaces de stockage « Key/value » Age:29 Neo Name : Thomas Anderson … Trinity YXpnYXplZw== YXpnYXpl Zw==© OCTO Technology 2011 13
  14. 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. 15. Les espaces de stockage « Column Oriented » 29 Age Neo Timestamp#1 Thomas name Anderson Timestamp#2© OCTO Technology 2011 15
  16. 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. 17. Les bases « Document » {« Age »: 29, Neo « Name » : « Thomas Anderson » « knows »:[{« name »: « Trinity » …© OCTO Technology 2011 17
  18. 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. 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 dusages pour les systèmes de stockage de données • Stockage • Recherche • Navigation • Reporting  La plupart des stores peuvent remplir ces fonctions, mais aucun nest parfaitement adapté à toutes les situations© OCTO Technology 2011 19
  20. 20. Persistance polyglotte : les enjeux  Complexité dutiliser 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 dagré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. 21. Spring Data© OCTO Technology 2011 21
  22. 22. Un cas d’usage simple « Les clients ayant acheté cet article ont également acheté… »© OCTO Technology 2011
  23. 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. 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. 25. Spring Data Les projets DB relationnelles JPA JDBC Extensions Key / Value Document Column Graph© OCTO Technology 2011 25
  26. 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. 27. Spring Data JPA Overview  Repository  Specifications  Entités auditables© OCTO Technology 2011 27
  28. 28. Spring Data Repository© OCTO Technology 2011 28
  29. 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. 30. Spring Data Graph  Support de Neo4J  Mapping d’entités  Repositories  Fonctions de recherche© OCTO Technology 2011 30
  31. 31. Sans Spring Data© OCTO Technology 2011 31
  32. 32. Configuration simple  Quelques dépendances Maven  Un peu de configuration Spring  Et cest parti! Quelques difficultés à compiler le projet dans l’IDE (AspectJ)© OCTO Technology 2011 32
  33. 33. Mapping d’entités© OCTO Technology 2011 33
  34. 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. 35. Relations© OCTO Technology 2011 35
  36. 36. GraphRepository© OCTO Technology 2011 36
  37. 37. Recherches et parcours de graphes  Parcours avec @GraphTraversal  Pattern matching avec @Query et Cypher© OCTO Technology 2011 37
  38. 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. 39. Entités cross-store© OCTO Technology 2011 39
  40. 40. Entités cross-store© OCTO Technology 2011 40
  41. 41. Cross-store en pratique Repository© OCTO Technology 2011 41
  42. 42. Cross-store en pratique Repository© OCTO Technology 2011 42
  43. 43. Promesses tenues?© OCTO Technology 2011 43
  44. 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. 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. 46. Des questions ?© OCTO Technology 2011 46

×