Adding Schema Evolution to the Persistent Development Environment Oberon-D

Markus Knasmüller
Johannes Kepler Universität Linz
Institute for Practical Computer Science
Altenbergerstraße 69, A-4040 Linz


Abstract

Persistence is the property of objects to outlive the programs that create them. It is the most important feature of object-oriented database systems. Persistent objects can exist for a long time, but in this time the environment may change. Therefore adapting objects is often necessary. In most cases it is enough to change the values of some attributes, but sometimes also the types of the objects have to be modified, for example, when attributes have to be renamed or changed. The modification of types in a database is called schema evolution. In this report we show how schema evolution was added to Oberon-D. Oberon-D is an ongoing research project which adds database functionality to the Oberon system. In Oberon-D persistence is obtained by a persistent heap on the disk. Persistent objects, which are not referenced by other persistent objects are reclaimed by a Stop & Copy garbage collector. Schema evolution is done during a garbage collector run. Objects are not physically restructured, but a new object (conforming to the definition of the modified type) is created instead. A transformation function reads the value in the old object and assigns it - with possible modifications - to the new object. All references to the object are updated to point to the newly created object. This technique does not need an additional process nor does it produce additional delays. We show the use of schema evolution as well as its implementation.


Technical Report 10, University of Linz, Institute of Computer Science (System Software), June 1997.

You can download the report in compressed postscript.