A new schema implementation enables reversible changes to be made to definitions
in a schema. The definitions of attributes and classes are in the form of schema
objects. Each schema object has an internal ID in addition to its unique name and
object ID (OID), and a deactivation flag for indicating whether the schema object
has been deactivated. To modify an attribute or class, the corresponding schema
object is deactivated by setting its deactivation flag to "TRUE," and a new schema
object is created to contain the changes. The new schema object has the same unique
name and OID as the old schema object but is given a different internal ID. When
a client wants to access instances of the schema object by its unique name or OID,
a translation is made to provide the internal ID of the new schema object such
that instances of the new schema object are located instead of the old schema object.
The changes to the schema can be reversed by reactivating the first schema object
and deactivating the second schema object.