ABSTRACT
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 persistent programs by extracting queries to efficiently prefetch required data. A static analysis derives query structure and conditions across methods that access persistent data. Using the static analysis, our system transforms the program to execute explicit queries. The transformed program composes queries across methods to handle method calls that return persistent data. We extend an existing Java compiler to implement the static analysis and program transformation, handling recursion and parameterized queries. We evaluate the effectiveness of query extraction on the OO7 and TORPEDO benchmarks. This work is focused on programs written in the current version of Java, without languages changes. However, the techniques developed here may also be of value in conjunction with object-oriented languages extended with high-level query syntax.
- M. Atkinson and R. Morrison. Special issue on persistent object systems. VLDB Journal, 4(3), 1995. Google ScholarDigital Library
- M. P. Atkinson and R. Morrison. Orthogonally persistent object systems. VLDB Journal, 4(3):319--401, 1995. Google ScholarCross Ref
- 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 ScholarDigital 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 ScholarDigital Library
- M. J. Carey, D. J. DeWitt, C. Kant, and J. F. Naughton. A status report on the OO7 OODBMS benchmarking effort. In Proc. of ACM Conf. on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), pages 414--426. ACM Press, 1994. Google ScholarDigital Library
- D. Cengija. Hibernate your data. onJava.com, 2004.Google Scholar
- 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 ScholarDigital Library
- W. R. Cook and S. Rai. Safe query objects: statically typed objects as remotely executable queries. In ICSE '05: Proceedings of the 27th international conference on Software engineering, pages 97--106, New York, NY, USA, 2005. ACM Press. Google ScholarDigital Library
- E. Cooper, S. Lindley, P. Wadler, and J. Yallop. Links: Web programming without tiers. In Proceedings of the 5th International Symposium on Formal Methods for Components and Objects, pages 266--296, Amsterdam, The Netherlands, November 2006. Google ScholarDigital 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
- A. Georges, D. Buytaert, and L. Eeckhout. Statistically rigorous java performance evaluation. In OOPSLA '07: Proceedings of the 22nd annual ACM SIGPLAN conference on Object oriented programming systems and applications, pages 57--76, New York, NY, USA, 2007. ACM. Google ScholarDigital Library
- J. Ha, M. Gustafsson, S. M. Blackburn, and K. S. McKinley. Microarchitectural characterization of production jvms and java workloads. Mar 2008.Google Scholar
- 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 ScholarDigital Library
- G. Hedin and T. Ekman. The JastAdd system -- modular extensible compiler construction. Science of Computer Programming, 69:14--26, 2007. Google ScholarDigital 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 ScholarDigital Library
- K. Ishizaki, M. Kawahito, T. Yasue, H. Komatsu, and T. Nakatani. A study of devirtualization techniques for a java just-in-time compiler. In OOPSLA '00: Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pages 294--310, New York, NY, USA, 2000. ACM Press. Google ScholarDigital Library
- D. E. Knuth. Semantics of context-free languages. Theory of Computing Systems, 2(2):127--145, June 1968.Google Scholar
- D. Leijen and E. Meijer. Domain specific embedded compilers. In Proceedings of the 2nd conference on Domain specific languages, pages 109--122. ACM Press, 1999. Google ScholarDigital Library
- E. Magnusson and G. Hedin. Circular reference attributed grammars -- their evaluation and applications. Sci. Comput. Program., 68(1):21--37, 2007. Google ScholarDigital Library
- D. Maier. Representing database programs as objects. In F. Bancilhon and P. Buneman, editors, Advances in Database Programming Languages, Papers from DBPL-1, pages 377--386. ACM Press / Addison-Wesley, 1987. Google ScholarDigital Library
- B. E. Martin. Uncovering database access optimizations in the middle tier with TORPEDO. In Proceedings of the 21st International Conference on Data Engineering, pages 916--926. IEEE Computer Society, 2005. Google ScholarDigital Library
- 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
- Microsoft Corporation. The LINQ project. msdn. microsoft.com/netframework/future/linq.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 ScholarDigital Library
- 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 ScholarCross Ref
- J. W. Schmidt and F. Matthes. The DBPL project: advances in modular database programming. Inf. Syst., 19(2):121--140, 1994. Google ScholarDigital Library
- B. A. Wiedermann and W. R. Cook. Extracting queries by static analysis of transparent persistence. In Proc. of the ACM Conf. on Principles of Programming Languages (POPL), pages 199--210, 2007. Google ScholarDigital 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 ScholarDigital Library
- L. Wong. Kleisli, a functional query system. J. Funct. Program., 10(1):19--56, 2000. Google ScholarDigital Library
- M. Zand, V. Collins, and D. Caviness. A survey of current object-oriented databases. SIGMIS Database, 26(1):14--29, 1995. Google ScholarDigital Library
Index Terms
- Interprocedural query extraction for transparent persistence
Recommendations
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 ...
Extracting queries by static analysis of transparent persistence
Proceedings of the 2007 POPL ConferenceTransparent 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 ...
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 ...
Comments