ABSTRACT
Persistent object stores require a way to automatically upgrade persistent objects, to change their code and storage representation. Automatic upgrades are a challenge for such systems. Upgrades must be performed in a way that is efficient both in space and time, and that does not stop application access to the store. In addition, however, the approach must be modular: it must allow programmers to reason locally about the correctness of their upgrades similar to the way they would reason about regular code. This paper provides solutions to both problems.The paper first defines upgrade modularity conditions that any upgrade system must satisfy to support local reasoning about upgrades. The paper then describes a new approach for executing upgrades efficiently while satisfying the upgrade modularity conditions. The approach exploits object encapsulation properties in a novel way. The paper also describes a prototype implementation and shows that our upgrade system imposes only a small overhead on application performance.
- A. Adya, R. Gruber, B. Liskov, and U. Maheshwari. Efficient optimistic concurrency control using loosely synchronized clocks. In ACM SIGMOD International Conference on Management of Data, May 1995.]] Google ScholarDigital Library
- O. Agesen, S. N. Freund, and J. C. Mitchell. Adding type parameterization to the Java language. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), October 1997.]] Google ScholarDigital Library
- J. Aldrich, V. Kostadinov, and C. Chambers. Alias annotations for program understanding. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), November 2002.]] Google ScholarDigital Library
- M. P. Atkinson, F. Bancilhon, D. J. DeWitt, K. R. Dittrich, D. Maier, and S. B. Zdonik. The object-oriented database system manifesto. In SIGMOD Conference, May 1990.]]Google ScholarCross Ref
- M. P. Atkinson, M. A. Dmitriev, C. Hamilton, and T. Printezis. Scalable and recoverable implementation of object evolution for the PJama 1 platform. In Persistent Object Systems (POS), September 2000.]] Google ScholarDigital Library
- M. P. Atkinson, M. J. Jordan, L. Daynes, and S. Spence. Design issues for persistent Java: A type-safe, object-oriented, orthogonally persistent system. In Persistent Object Systems (POS), May 1996.]]Google Scholar
- J. Banerjee, W. Kim, H. Kim, and H. F. Korth. Semantics and implementation of schema evolution in object-oriented databases. In ACM SIGMOD International Conference on Management of Data, May 1987.]] Google ScholarDigital Library
- E. Bertino, G. Guerrini, and L. Rusca. Object evolution in object databases. In B. Franhoefer and R. Pareschi, editors, Dynamic Worlds, Kluwer Academic Publishers, 1999.]]Google Scholar
- C. Boyapati. JPS: A distributed persistent Java system. SM thesis, Massachusetts Institute of Technology, September 1998.]]Google Scholar
- C. Boyapati, R. Lee, and M. Rinard. Safe runtime downcasts with ownership types. In ECOOP International Workshop on Aliasing, Confinement and Ownership in Object-Oriented Programming (IWACO), July 2003.]]Google Scholar
- C. Boyapati, R. Lee, and M. Rinard. Ownership types for safe programming: Preventing data races and deadlocks. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), November 2002.]] Google ScholarDigital Library
- C. Boyapati, B. Liskov, and L. Shrira. Ownership types for object encapsulation. In Principles of Programming Languages (POPL), January 2003.]] Google ScholarDigital Library
- C. Boyapati, B. Liskov, and L. Shrira. Ownership types and safe lazy upgrades in object-oriented databases. Technical Report TR-858, MIT Laboratory for Computer Science, July 2002.]]Google Scholar
- C. Boyapati and M. Rinard. A parameterized type system for race-free Java programs. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), October 2001.]] Google ScholarDigital Library
- C. Boyapati, A. Salcianu, W. Beebee, Jr., and M. Rinard. Ownership types for safe region-based memory management in Real-Time Java. In Programming Language Design and Implementation (PLDI), June 2003.]] Google ScholarDigital Library
- G. Bracha, M. Odersky, D. Stoutamire, and P. Wadler. Making the future safe for the past: Adding genericity to the Java programming language. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), October 1998.]] Google ScholarDigital Library
- R. Bretl et al. The GemStone data management system. In W. Kim and F. H. Lochovsky, editors, Object-Oriented Concepts, Databases, and Applications. 1989.]] 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 Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), October 1994.]] Google ScholarDigital Library
- M. Castro, A. Adya, B. Liskov, and A. C. Myers. HAC: Hybrid adaptive caching for distributed storage systems. In Symposium on Operating System Principles (SOSP), October 1997.]] Google ScholarDigital Library
- R. Catell, editor. The Object Database Standard: ODMG 3.0. Morgan Kaufmann, 2000.]] Google ScholarDigital Library
- Y. Cheung. Lazy schema evolution in object-oriented databases. SM thesis, Massachusetts Institute of Technology, September 2001.]]Google Scholar
- S. M. Clamen. Type evolution and instance adaptation. Technical Report CMU-CS-92-133, Carnegie Mellon University, June 1992.]] Google ScholarDigital Library
- D. G. Clarke. Object ownership and containment. PhD thesis, University of New South Wales, Australia, July 2001.]] Google ScholarDigital Library
- D. G. Clarke and S. Drossopoulou. Ownership, encapsulation and disjointness of type and effect. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), November 2002.]] Google ScholarDigital Library
- D. G. Clarke, J. M. Potter, and J. Noble. Ownership types for flexible alias protection. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), October 1998.]] Google ScholarDigital Library
- V. M. Crestana-Jensen, A. J. Lee, and E. A. Rundensteiner. Consistent schema version removal: An optimization technique for object-oriented views. In IEEE Transactions on Knowledge and Data Engineering (TKDE) 12(2), March 2000.]] Google ScholarDigital Library
- M. Day, R. Gruber, B. Liskov, and A. C. Myers. Subtypes vs. where clauses: Constraining parametric polymorphism. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), October 1995.]] Google ScholarDigital Library
- C. Delcourt and R. Zicari. The design of an integrity consistency checker (ICC) for an object-oriented database system. In European Conference for Object-Oriented Programming (ECOOP), July 1991.]] Google ScholarDigital Library
- O. Deux et al. The story of O2. In IEEE Transactions on Knowledge and Data Engineering (TKDE) 2(1), March 1990.]] Google ScholarDigital Library
- M. A. Dmitriev. Safe class and data evolution in large and long-lived Java applications. Technical Report TR-2001-98, Sun Microsystems, August 2001.]] Google ScholarDigital Library
- S. Drossopoulou, F. Damiani, M. Dezani-Ciancaglini, and P. Giannini. Fickle : Dynamic object re-classification. In ECOOP, 2001.]] Google ScholarDigital Library
- D. Duggan. Type-based hot swapping of running modules. Technical Report SIT CS 2001-7, Stevens Institute of Technology, Hoboken, NJ 07030, October 2001.]]Google Scholar
- F. Ferrandina and G. Ferran. Schema and database evolution in the O2 Object Database System. In Proceedings of the 21st International Conference on Very Large Data Bases (VLDB), 1995.]] Google ScholarDigital Library
- F. Ferrandina, T. Meyer, and R. Zicari. Measuring the Performance of Immediate and Deferred Updates in Object Database Systems. In Proceedings of the OOPSLA Workshop on Object Database Behavior, Benchmarks and Performance, 1995.]]Google Scholar
- E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.]] Google ScholarDigital Library
- M. Hicks, J. Moore, and S. Nettles. Dynamic software updating. In Programming Language Design and Implementation (PLDI), June 2001.]] Google ScholarDigital Library
- G. Hjalmtysson and R. Gray. Dynamic C++ classes - a lightweight mechanism to update code in running program. In USENIX Annual Technical Conference, June 1998.]] Google ScholarDigital Library
- K. R. M. Leino and G. Nelson. Data abstraction and information hiding. Research Report 160, Compaq Systems Research Center, November 2000.]]Google Scholar
- K. R. M. Leino, A. Poetzsch-Heffter, and Y. Zhou. Using data groups to specify and check side effects. In Programming Language Design and Implementation (PLDI), June 2002.]] Google ScholarDigital Library
- B. S. Lerner and A. N. Habermann. Beyond schema evolution to database reorganization. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), October 1990.]] Google ScholarDigital Library
- B. Liskov, M. Castro, L. Shrira, and A. Adya. Providing persistent objects in distributed systems. In European Conference for Object-Oriented Programming (ECOOP), June 1999.]] Google ScholarDigital Library
- B. Liskov, C. Moh, S. Richman, L. Shrira, Y. Cheung, and C. Boyapati. Safe lazy software upgrades in object-oriented databases. Technical Report TR-851, MIT Laboratory for Computer Science, June 2002.]]Google Scholar
- B. Liskov, A. Snyder, R. R. Atkinson, and C. Schaffert. Abstraction mechanisms in CLU. In Communications of the ACM (CACM) 20(8), August 1977.]] Google ScholarDigital Library
- J. M. Lucassen and D. K. Gifford. Polymorphic effect systems. In Principles of Programming Languages (POPL), January 1988.]] Google ScholarDigital Library
- A. C. Myers, J. A. Bank, and B. Liskov. Parameterized types for Java. In Principles of Programming Languages (POPL), January 1997.]] Google ScholarDigital Library
- Object Design Inc. ObjectStore Advanced C++ API User Guide Release 5.1, 1997.]]Google Scholar
- Objectivity Inc. Objectivity Technical Overview, Version 6.0, 2001.]]Google Scholar
- D. J. Penney and J. Stein. Class modification in the GemStone object-oriented DBMS. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), October 1987.]] Google ScholarDigital Library
- A. H. Skarra and S. B. Zdonik. The management of changing types in an object-oriented database. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), November 1986.]] Google ScholarDigital Library
- Versant Object Technology. Versant User Manual, 1992.]]Google Scholar
- M. Viroli and A. Natali. Parametric polymorphism in Java: An approach to translation based on reflective features. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), October 2000.]] Google ScholarDigital Library
- R. Zicari. A framework for schema updates in an object-oriented database systems. In International Conference on Data Engineering (ICDE), April 1991.]] Google ScholarDigital Library
Index Terms
- Lazy modular upgrades in persistent object stores
Recommendations
Lazy modular upgrades in persistent object stores
Special Issue: Proceedings of the OOPSLA '03 conferencePersistent object stores require a way to automatically upgrade persistent objects, to change their code and storage representation. Automatic upgrades are a challenge for such systems. Upgrades must be performed in a way that is efficient both in space ...
Dependable, online upgrades in enterprise systems
OOPSLA '09: Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applicationsSoftware upgrades are unreliable, often causing downtime or data loss. I propose Imago, an approach for removing the leading causes of upgrade failures (broken dependencies) and of planned downtime (data migrations). While imposing a higher resource ...
Dependable, online upgrades in enterprise systems
OOPSLA '09: Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applicationsSoftware upgrades are unreliable, often causing downtime or data loss. I propose Imago, an approach for removing the leading causes of upgrade failures (broken dependencies) and of planned downtime (data migrations). While imposing a higher resource ...
Comments