In this section we describe the functionalities that have
been added in the new release of 02 for automatically
updating the database after a schema has been modified.
The semantics of updating the database after a schema
change depends on the application(s) which use(s) the
schema. The basic mechanism to update the database
is very simple: the designer has the possibility to program
so called conversion functions which are associated
to modified classes in the schema and define how objects
have to be restructured. If no conversion functions are
provided by the designer, the system provides default conversion
functions where no programming is required. Instead,
default transformation rules are applied to objects
of modified classes.
Similar concepts to user-defined database conversion
functions can be found in GemStone[3], ObjectStore[l3],
OTGen[lO], whereby Versant [18] and Itasca [9] offer features
that are similar to default conversion functions only.
The definition and modality of use of conversion functions
is explained in Sections 2.1 and 2.2.
The main design issue when implementing database
(user-defined or default) conversion functions, is &en
such functions have to be executed, that is when the
database has to be brought up to a consistent state wrt.
the new schema.
We had two possible strategies to choose [6, 71: an immediate
strategy, where objects in the database are updated
in any case as soon as the schema modification is
performed, and a deferred strategy, where objects are updated
only when they are actually used. The two above
strategies have advantages and disadvantages [6, 71; in
O2 we have supported both strategies and gave the designer
the possibility to select the one which is most appropriate
for his/her application domains. The implementation
details are presented in Sections 3 and 4.