ExSchema
Discovering and Maintaining
Schemas from Polyglot Persistence
Applications
Juan Castrejón, Genoveva Vargas-Solar,...
Objective
Discover external schemas from the
source code of polyglot persistence applications
2
Objective
Discover external schemas from the
source code of polyglot persistence applications
3
High-level view of the dat...
Objective
Discover external schemas from the
source code of polyglot persistence applications
4
Document
DB
Column-
Family...
Why?
Polyglot persistence applications
are becoming widespread
Schema-less datastores
Non-standard APIs
Implicit schemas d...
https://github.com/neo4j-examples/imdb
6
Example
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
cla...
How?
Declarations
Analyzer
Updates
Analyzer
Repositories
Analyzer
MetaLayer
Representation
ExSchema
Neo4j API MongoDB API ...
MetaLayer
Set
Struct
Attribute
Relationship
*
*
*
*
*
*
*
**
Based on: P. Atzeni, F. Bugiotti, and L. Rossi. Uniform acces...
9
MetaLayer
Results
PDF file
Spring Roo scripts
(JPA, MongoDB, Neo4j)
10
11
Results
Git repository analysis for schema evolution
(Tags and Branches)
Neo4j:
- https://github.com/neo4j-examples/cineasts.git
- https://github.com/neo4j-examples/imdb.git
- https://github.com/...
Limitations
Based on project structure and update operations
Based on programming styles of test applications
(Queries and...
Future work
Analysis of queries and get operations
Support additional languages besides Java
Increase support for differen...
Implementation
Eclipse JDT
Eclipse AST
Spring Data
https://code.google.com/p/exschema/
16
Contact
Juan.Castrejon@imag.fr
17
ExSchema - ICSM'13
Upcoming SlideShare
Loading in...5
×

ExSchema - ICSM'13

260

Published on

ICSM - Demo Presentation

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

  • Be the first to like this

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

No notes for slide

ExSchema - ICSM'13

  1. 1. ExSchema Discovering and Maintaining Schemas from Polyglot Persistence Applications Juan Castrejón, Genoveva Vargas-Solar, Christine Collet, Rafael Lozano Université de Grenoble, LIG-LAFMIA, CNRS, Grenoble INP, Tecnológico de Monterrey
  2. 2. Objective Discover external schemas from the source code of polyglot persistence applications 2
  3. 3. Objective Discover external schemas from the source code of polyglot persistence applications 3 High-level view of the data entities managed by a program (Developer’s point of view)
  4. 4. Objective Discover external schemas from the source code of polyglot persistence applications 4 Document DB Column- Family DB Graph DB Source code Relational DB Key-Value DB
  5. 5. Why? Polyglot persistence applications are becoming widespread Schema-less datastores Non-standard APIs Implicit schemas described in the source code But for their development and maintenance, software engineers have to deal with… 5 M. Fowler and P. Sadalage, NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence. Pearson Education, 2012.
  6. 6. https://github.com/neo4j-examples/imdb 6 Example import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Relationship; class ActorImpl implements Actor { private static final String NAME_PROPERTY = "name”; private final Node underlyingNode; public void setName( final String name ) { underlyingNode.setProperty( NAME_PROPERTY, name ); } public Role createRole( final Actor actor, final Movie movie, final String roleName ) final Node actorNode = ((ActorImpl) actor).getUnderlyingNode(); final Node movieNode = ((MovieImpl) movie).getUnderlyingNode(); final Relationship rel = actorNode.createRelationshipTo( movieNode, RelTypes.ACTS_IN ); … } Neo4j (Graph data store) Declaration Update
  7. 7. How? Declarations Analyzer Updates Analyzer Repositories Analyzer MetaLayer Representation ExSchema Neo4j API MongoDB API HBase API JPA API Spring Data CouchDB API Application source code Annotations Analyzer Analyze project structure and update operations 7
  8. 8. MetaLayer Set Struct Attribute Relationship * * * * * * * ** Based on: P. Atzeni, F. Bugiotti, and L. Rossi. Uniform access to non-relational database systems: the SOS platform. In CAiSE’12, volume 7328 of LNCS, pages 160–174. Springer, 2012. 8
  9. 9. 9 MetaLayer
  10. 10. Results PDF file Spring Roo scripts (JPA, MongoDB, Neo4j) 10
  11. 11. 11 Results Git repository analysis for schema evolution (Tags and Branches)
  12. 12. Neo4j: - https://github.com/neo4j-examples/cineasts.git - https://github.com/neo4j-examples/imdb.git - https://github.com/neo4j-examples/java-astar-routing.git - https://github.com/neo4j-examples/java-dijkstra.git - https://github.com/neo4j-examples/java-tree-traverse.git - MyNetContacts (http://vargas-solar.imag.fr/academika/cloud-data-management/) MongoDB: - https://github.com/mongolab/mongodb-driver-examples.git HBase: - https://github.com/larsgeorge/hbase-book.git (ch03) - https://github.com/SpringSource/spring-hadoop-samples.git (original-samples/hbase-crud) CouchDB: - https://github.com/mbreese/couchdb4j.git Relational: - Indvalid-core (http://www.indvalid.com/) Relational + MongoDB: - https://github.com/SpringSource/cloudfoundry-samples.git (cross-store) - MyNet (http://vargas-solar.imag.fr/academika/cloud-data-management/) - Indvalid-dao (http://www.indvalid.com/) Neo4j + MongoDB + Relational: - twitter-spring - twitter-polyglot (Based on: P. Atzeni, F. Bugiotti, and L. Rossi. Uniform access to non-relational database systems: the SOS platform. In CAiSE’12, volume 7328 of LNCS, pages 160–174. Springer, 2012) Industrial application 13 Test applications
  13. 13. Limitations Based on project structure and update operations Based on programming styles of test applications (Queries and get operations not considered) (Heavily relies on local variables) 14 Limited associations between entities (Besides Neo4j’s relationships and MongoDB cross-store)
  14. 14. Future work Analysis of queries and get operations Support additional languages besides Java Increase support for different programming styles 15
  15. 15. Implementation Eclipse JDT Eclipse AST Spring Data https://code.google.com/p/exschema/ 16
  16. 16. Contact Juan.Castrejon@imag.fr 17
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×