Abstract
Transparent persistence promises to integrate programming languages and databases by allowing procedural programs to access persistent data with the same ease as non-persistent data. When the data is stored in a relational database, however, transparent persistence does not naturally leverage the performance benefits of relational query optimization. We present a program analysis that combines the benefits of both approaches by extracting database queries from programs with transparent access to persistent data. The analysis uses a sound abstract interpretation of the original program to approximate the data traversal paths in the program and the conditions under which the paths are used. The resulting paths are then converted into a query, and the program is simplified by removing redundant tests. We study an imperative kernel language with read-only access to persistent data and identify the conditions under which the transformations can be applied. This analysis approach promises to combine the software engineering benefits of transparent data persistence with the performance benefits of database query optimization.
- J. R. Allen and K. Kennedy. Automatic loop interchange. In Proc. of the Symp. on Compiler Construction (CC), pages 233--246, 1984.]] Google Scholar
Digital Library
- M. P. Atkinson. Programming languages and databases. In Proc. of the Intl. Conf. on Very Large Data Bases (VLDB), pages 408--419. IEEE Computer Society, 1978.]]Google Scholar
- M. P. Atkinson, L. Daynès, M. J. Jordan, T. Printezis, and S. Spence. An orthogonally persistent Java. SIGMOD Rec., 25(4):68--75, 1996.]] Google Scholar
Digital Library
- M. P. Atkinson and R. Morrison. Orthogonally persistent object systems. VLDB Journal, 4(3):319--401, 1995.]] Google Scholar
Digital Library
- C. Batini, S. Ceri, and S. B. Navathe. Conceptual Database Design - An Entity-Relationship Approach. Benjamin Cummings, 1992.]] Google Scholar
Digital Library
- P. A. Bernstein, S. Pal, and D. Shutt. Context-based prefetch for implementing objects on relations. In The VLDB Journal, pages 327--338, 1999.]] Google Scholar
Digital Library
- G. M. Bierman, E. Meijer, and W. Schulte. The essence of data access in cω. In Proc. of the European Conference on Object-Oriented Programming (ECOOP), pages 287--311, 2005.]] Google Scholar
Digital Library
- R. G. G. Cattell, D. K. Barry, M. Berler, J. Eastman, D. Jordan, C. Russell, O. Schadow, T. Stanienda, and F. Velez, editors. The Object Data Standard ODMG 3.0. Morgan Kaufmann, January 2000.]] Google Scholar
Digital Library
- S. Chaudhuri. An overview of query optimization in relational systems. In Proc. of Symp. on Principles of Database System (PODS), pages 34--43, 1998.]] Google Scholar
Digital Library
- P. P. Chen. The entity-relationship model - toward a unified view of data. ACM Transactions on Database Systems (TODS), 1(1):9--36, 1976.]] Google Scholar
Digital Library
- W. R. Cook and S. Rai. Safe query objects: Statically typed objects as remotely executable queries. In Proc. of the Intl. Conf. on Software Engineering (ICSE), pages 97--106, 2005.]] Google Scholar
Digital Library
- G. Copeland and D. Maier. Making smalltalk a database system. In Proceedings of the 1984 ACM SIGMOD international conference on Management of data, pages 316--325. ACM Press, 1984.]] Google Scholar
Digital Library
- P. Cousot and R. Cousot. Systematic design of program transformation frameworks by abstract interpretation. In Proc. of the ACM Symp. on Principles of Programming Languages (POPL), pages 178--190, 2002.]] Google Scholar
Digital Library
- A. Deutsch. A storeless model of aliasing and its abstractions using finiterepresentations of right-regular equivalence relations. Computer Languages, 1992., Proceedings of the 1992 International Conference on, pages 2--13, 1992.]]Google Scholar
Cross Ref
- O. Deux. The O2 system. Commun. ACM, 34(10):34--48, 1991.]] Google Scholar
Digital Library
- J.-A. Dub, R. Sapir, and P. Purich. Oracle Application Server TopLink application developer guide, 10g (9.0.4). Oracle Corporation, 2003.]]Google Scholar
- M. Emami, R. Ghiya, and L. J. Hendren. Context-sensitive interprocedural points-to analysis in the presence of function pointers. In PLDI '94: Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation, pages 242--256, New York, NY, USA, 1994. ACM Press.]] Google Scholar
Digital Library
- A. Gawecki and F. Matthes. Integrating query and program optimization using persistent CPS representations. In M. P. Atkinson and R. Welland, editors, Fully Integrated Data Environments, ESPRIT Basic Research Series, pages 496--501. Springer Verlag, 2000.]]Google Scholar
- R. Ghiya and L. J. Hendren. Is it a tree, a DAG, or a cyclic graph? a shape analysis for heap-directed pointers in C. In Proc. of the ACM Symp. on Principles of Programming Languages (POPL), pages 1--15, 1996.]] Google Scholar
Digital Library
- C. Gould, Z. Su, and P. Devanbu. Static checking of dynamically generated queries in database applications. In Proc. of the Intl. Conf. on Software Engineering (ICSE), pages 645--654, 2004.]] Google Scholar
Digital Library
- W.-S. Han, Y.-S. Moon, and K.-Y. Whang. PrefetchGuide: capturing navigational access patterns for prefetching in client/server object-oriented/object-relational dbmss. Information Sciences, 152(1):47--61, 2003.]] Google Scholar
Digital Library
- Hibernate reference documentation. http://www.hibernate.org/hib_docs/v3/reference/en/html, May 2005.]]Google Scholar
- A. Ibrahim and W. Cook. Automatic prefetching by traversal profiling in object persistence architectures. In Proc. of the European Conference on Object-Oriented Programming (ECOOP), 2006.]] Google Scholar
Digital Library
- K. Kvilekval and A. Singh. SPREE: Object prefetching for mobile computers. In Distributed Objects and Applications (DOA), Oct 2004.]]Google Scholar
Cross Ref
- B. Liskov, A. Adya, M. Castro, S. Ghemawat, R. Gruber, U. Maheshwari, A. C. Myers, M. Day, and L. Shrira. Safe and efficient sharing of persistent objects in Thor. In Proceedings of the Intl. Conf. on Management of Data (SIGMOD), pages 318--329, 1996.]] Google Scholar
Digital Library
- D. Maier. Representing database programs as objects. In F. Bancilhon and P. Buneman, editors, Advances in Database Programming Languages, pages 377--386. New York, NY, 1990.]] Google Scholar
Digital Library
- D. Maier, J. Stein, A. Otis, and A. Purdy. Developments of an object-oriented DBMS. In Proc. of ACM Conf. on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), pages 472--482, 1986.]] Google Scholar
Digital Library
- V. Matena and M. Hapner. Enterprise Java Beans Specification 1.0. Sun Microsystems, 1998.]]Google Scholar
- F. Matthes, G. Schroder, and J. Schmidt. Tycoon: A scalable and interoperable persistent system environment. In M. Atkinson, editor, Fully Integrated Data Environments. Springer-Verlag, 1995.]]Google Scholar
- R. Morrison, R. C. H. Connor, G. N. C. Kirby, D. S. Munro, M. P. Atkinson, Q. I. Cutts, A. L. Brown, and A. Dearle. The Napier88 persistent programming language and environment. In M. P. Atkinson and R. Welland, editors, Fully Integrated Data Environments, pages 98--154. Springer, 1999.]]Google Scholar
- M. Neubauer and P. Thiemann. From sequential programs to multi-tier applications by program transformation. In Proc. of the ACM Symp. on Principles of Programming Languages (POPL), pages 221--232, 2005.]] Google Scholar
Digital Library
- B. C. Pierce. Types and Programming Languages. MIT Press, 2002.]] Google Scholar
Digital Library
- T. Rus and E. Van Wyk. A formal approach to parallelizing compilers. In Proc. of the SIAM Conf. on Parallel Processing for Scientific Computation, March 14, 1997.]]Google Scholar
- C. Russell. Java Data Objects (JDO) Specification JSR-12. Sun Microsystems, 2003.]]Google Scholar
- J. Schmidt, F. Matthes, and P. Valduriez. Building persistent application systems in fully integrated data environments: Modularization, abstraction and interoperability. In Proceedings of Euro-Arch'93 Congress. Springer Verlag, Oct. 1993.]]Google Scholar
Cross Ref
- J. W. Schmidt and F. Matthes. The DBPL project: advances in modular database programming. Inf. Syst., 19(2):121--140, 1994.]] Google Scholar
Digital Library
- R. Software. Whitepaper on the UML and Data Modeling, 2000.]]Google Scholar
- R. Vitenberg, K. Kvilekval, and A. K. Singh. Increasing concurrency in databases using program analysis. In Proc. of the European Conference on Object Oriented Programming (ECOOP), pages 341--363, 2004.]]Google Scholar
Cross Ref
- M. N. Wegman and F. K. Zadeck. Constant propagation with conditional branches. ACM Transactions on Programming Languages and Systems (TOPLAS), 13(2):181--210, 1991.]] Google Scholar
Digital Library
- R. Wilhelm, S. Sagiv, and T. W. Reps. Shape analysis. In Computational Complexity, pages 1--17, 2000.]] Google Scholar
Digital Library
- D. Willis, D. J. Pearce, and J. Noble. Efficient object querying in Java. In Proc. of the European Conference on Object-Oriented Programming (ECOOP), Nantes, France, 2006.]] Google Scholar
Digital Library
Index Terms
Extracting queries by static analysis of transparent persistence
Recommendations
Extracting queries by static analysis of transparent persistence
POPL '07: Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languagesTransparent persistence promises to integrate programming languages and databases by allowing procedural programs to access persistent data with the same ease as non-persistent data. When the data is stored in a relational database, however, transparent ...
Interprocedural query extraction for transparent persistence
Transparent persistence promises to integrate programming languages and databases by allowing programs to access persistent data with the same ease as non-persistent data. In this work we demonstrate the feasibility of optimizing transparently ...
Interprocedural query extraction for transparent persistence
OOPSLA '08: Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applicationsTransparent persistence promises to integrate programming languages and databases by allowing programs to access persistent data with the same ease as non-persistent data. In this work we demonstrate the feasibility of optimizing transparently ...






Comments