Schema Evolution in Oberon-D

Persistence, i.e., the object's property to outlive the programs that create it, is the most important feature of every object-oriented database system. Such objects can exist for a long time, but in this time the environment of an object may change. Therefore adapting the object is often necessary. Mostly it is enough to change the values of some attributes, but in some cases also a change of the object definition, like renaming or changing individual attributes, could be necessary.

The change of the object definition is made possible by the database functionality schema evolution, which allows the user to modify type definitions. In this report the adding of schema evolution to Oberon-D is shown. Oberon-D is an ongoing research project which adds database functionality to the Oberon system, is shown. In this approach 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 as part of a garbage collector run. Objects are not physically restructured, but a new object (conforming the definition of the modified type) is created instead. The transformation function reads the value in the old object and assigns it (after having made some modification on it) to the new object. All references to the object are updated in order to point to the newly created object. So we use a method which does not need an additional process and add no additional delays.