Lazy modular upgrades in persistent object stores

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.

[1]  Craig Schaffert,et al.  Abstraction mechanisms in CLU , 1977, Commun. ACM.

[2]  Stanley B. Zdonik,et al.  The management of changing types in an object-oriented database , 1986, OOPSLA 1986.

[3]  Jacob Stein,et al.  Class modification in the GemStone object-oriented DBMS , 1987, OOPSLA 1987.

[4]  Jay Banerjee,et al.  Semantics and implementation of schema evolution in object-oriented databases , 1987, SIGMOD '87.

[5]  David K. Gifford,et al.  Polymorphic effect systems , 1988, POPL '88.

[6]  David Maier,et al.  The GemStone Data Management System , 1989, Object-Oriented Concepts, Databases, and Applications.

[7]  David J. DeWitt,et al.  The Object-Oriented Database System Manifesto , 1994, Building an Object-Oriented Database System, The Story of O2.

[8]  A. Nico Habermann,et al.  Beyond schema evolution to database reorganization , 1990, OOPSLA/ECOOP '90.

[9]  O. Deux,et al.  The Story of O2 , 1990, IEEE Trans. Knowl. Data Eng..

[10]  Roberto V. Zicari,et al.  The Design of an Integrity Consistency Checker (ICC) for an Object-Oriented Database System , 1991, ECOOP.

[11]  Roberto Zicari,et al.  A framework for schema updates in an object-oriented database system , 1991, [1991] Proceedings. Seventh International Conference on Data Engineering.

[12]  Stewart M. Clamen,et al.  Type Evolution and Instance Adaptation , 1992 .

[13]  R. G. G. Cattell,et al.  The Object Database Standard: ODMG-93 , 1993 .

[14]  David J. DeWitt,et al.  A Status Report on the oo7 OODBMS Benchmarking Effort , 1994, OOPSLA.

[15]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[16]  Andrew C. Myers,et al.  Subtypes vs. where clauses: constraining parametric polymorphism , 1995, OOPSLA.

[17]  Fabrizio Ferrandina,et al.  Schema and Database Evolution in the O2 Object Database System , 1995, VLDB.

[18]  Robert Gruber,et al.  Efficient optimistic concurrency control using loosely synchronized clocks , 1995, SIGMOD '95.

[19]  Malcolm P. Atkinson,et al.  Design Issues for Persistent Java: A Type-Safe, Object-Oriented, Orthogonally Persistent System , 1996, POS.

[20]  Miguel Castro,et al.  HAC: hybrid adaptive caching for distributed storage systems , 1997, SOSP.

[21]  Stephen N. Freund,et al.  Adding type parameterization to the Java language , 1997, OOPSLA '97.

[22]  Andrew C. Myers,et al.  Parameterized types for Java , 1997, POPL '97.

[23]  James Noble,et al.  Ownership types for flexible alias protection , 1998, OOPSLA '98.

[24]  Martin Odersky,et al.  Making the future safe for the past: adding genericity to the Java programming language , 1998, OOPSLA '98.

[25]  Robert Gray,et al.  Dynamic C++ Classes - A Lightweight Mechanism to Update Code in a Running Program , 1998, USENIX Annual Technical Conference.

[26]  Chandrasekhar Boyapati,et al.  JPS : a distributed persistent Java system , 1998 .

[27]  Xue Li A survey of schema evolution in object-oriented databases , 1999, Proceedings Technology of Object-Oriented Languages and Systems (Cat. No.PR00393).

[28]  Miguel Castro,et al.  Providing Persistent Objects in Distributed Systems , 1999, ECOOP.

[29]  E. Bertino,et al.  OBJECT EVOLUTION IN OBJECT DATABASES , 1999 .

[30]  Mirko Viroli,et al.  Parametric polymorphism in Java: an approach to translation based on reflective features , 2000, OOPSLA '00.

[31]  Malcolm P. Atkinson,et al.  Scalable and Recoverable Implementation of Object Evolution for the PJama1 Platform , 2000, POS.

[32]  Elke A. Rundensteiner,et al.  Consistent Schema Version Removal: An Optimization Technique for Object-Oriented Views , 2000, IEEE Trans. Knowl. Data Eng..

[33]  Sophia Drossopoulou,et al.  Fickle : Dynamic Object Re-classification , 2001, ECOOP.

[34]  Martin C. Rinard,et al.  A parameterized type system for race-free Java programs , 2001, OOPSLA '01.

[35]  Scott Nettles,et al.  Dynamic software updating , 2001, PLDI '01.

[36]  Mikhail Dmitriev,et al.  Safe class and data evolution in large and long-lived Java applications , 2001 .

[37]  Craig Chambers,et al.  Alias annotations for program understanding , 2002, OOPSLA '02.

[38]  Martin C. Rinard,et al.  ACM Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), November 2002 Ownership Types for Safe Programming: Preventing Data Races and Deadlocks , 2022 .

[39]  Martin Rinard,et al.  Safe Runtime Downcasts With Ownership Types , 2002 .

[40]  Liuba Shrira,et al.  Safe Lazy Software Upgrades in Object-Oriented Databases , 2002 .

[41]  Liuba Shrira,et al.  Ownership Types and Safe Lazy Upgrades in Object-Oriented Databases , 2002 .

[42]  Sophia Drossopoulou,et al.  Ownership, encapsulation and the disjointness of type and effect , 2002, OOPSLA '02.

[43]  K. Rustan M. Leino,et al.  Data abstraction and information hiding , 2002, TOPL.

[44]  K. Rustan M. Leino,et al.  Using data groups to specify and check side effects , 2002, PLDI '02.

[45]  Liuba Shrira,et al.  Ownership types for object encapsulation , 2003, POPL '03.

[46]  Martin C. Rinard,et al.  Ownership types for safe region-based memory management in real-time Java , 2003, PLDI '03.

[47]  David Gerard Clarke,et al.  Object ownership and containment , 2003 .

[48]  Dominic Duggan,et al.  Type-based hot swapping of running modules , 2005, Acta Informatica.