• Save
Persistance polyglotte avec Spring Data
Upcoming SlideShare
Loading in...5
×
 

Persistance polyglotte avec Spring Data

on

  • 1,527 views

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

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

Statistics

Views

Total Views
1,527
Views on SlideShare
1,522
Embed Views
5

Actions

Likes
0
Downloads
0
Comments
0

2 Embeds 5

http://a0.twimg.com 4
http://paper.li 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Persistance polyglotte avec Spring Data Persistance polyglotte avec Spring Data Presentation Transcript

  • Persistance polyglotte avecSpring Data Spring User Group FR 29 sept. 2011
  • Qui sommes nous? Olivier Mallassi @omallassi Michel Domenjoud @mdomenjoud Laurent Dutheil @laurentdutheil blog.octo.com 2
  • 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
  • © 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 structuré • Recherches • Reporting • …  Mais des quantités de données et une complexité en augmentation exponentielle© OCTO Technology 2011 6
  • 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 GraphDocument Column Oriented / Raw Data noSQL© OCTO Technology 2011 aujourd’hui… 8
  • Un peu perdus?© OCTO Technology 2011 9
  • …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
  • Les bases « graph »© OCTO Technology 2011 11
  • 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
  • Les espaces de stockage « Key/value » Age:29 Neo Name : Thomas Anderson … Trinity YXpnYXplZw== YXpnYXpl Zw==© OCTO Technology 2011 13
  • 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
  • Les espaces de stockage « Column Oriented » 29 Age Neo Timestamp#1 Thomas name Anderson Timestamp#2© OCTO Technology 2011 15
  • 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
  • Les bases « Document » {« Age »: 29, Neo « Name » : « Thomas Anderson » « knows »:[{« name »: « Trinity » …© OCTO Technology 2011 17
  • 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
  • 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
  • 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
  • Spring Data© OCTO Technology 2011 21
  • Un cas d’usage simple « Les clients ayant acheté cet article ont également acheté… »© OCTO Technology 2011
  • Un cas d’usage simple Achats liés (2) Client Commande P1 P2 Achats liés (10) Produit P4 P3© OCTO Technology 2011 23
  • Spring Data Les enjeux Faciliter la mise en œuvre d’une persistance polyglotte  Simplification  Productivité et qualité  Approche commune  Abstraction© OCTO Technology 2011 24
  • Spring Data Les projets DB relationnelles JPA JDBC Extensions Key / Value Document Column Graph© OCTO Technology 2011 25
  • 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
  • Spring Data JPA Overview  Repository  Specifications  Entités auditables© OCTO Technology 2011 27
  • Spring Data Repository© OCTO Technology 2011 28
  • 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
  • Spring Data Graph  Support de Neo4J  Mapping d’entités  Repositories  Fonctions de recherche© OCTO Technology 2011 30
  • Sans Spring Data© OCTO Technology 2011 31
  • 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
  • Mapping d’entités© OCTO Technology 2011 33
  • Mapping d’entités AspectJ : Get/Set en lecture directe dans la base (ou cache)  Risqué en lecture  Performances© OCTO Technology 2011 34
  • 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 Technology 2011 37
  • 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
  • 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 code proche du domaine objet (mappings et pattern Repository)  Inconvénients  Certains choix de design inhabituels et parfois déroutants© OCTO Technology 2011 44
  • 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
  • Des questions ?© OCTO Technology 2011 46