Versions in Ode: Implementations and Experiences

25 April 1999

New Image

The Ode object-oriented database system supports the creation and manipulation of objects with versions. Versioning is orthogonal to type - any object in the database can be versioned at any time and the same code works on both versioned and non-versioned instances. Object versioning is supported by many object-oriented databases (e.g., Gemstone, ObjectStore, Versant). However, the facilities are often complex and may not quite match application requirements. Furthermore, the implementation techniques are not well-documented. Ode took the approach of designing a minimal set of versioning primitives with which users can specify the exact policy they require. To illustrate the flexibility and power of our versioning facilities, we use them to implement a set of previously suggested versioning capabilities. We describe how our versioning facilities are implemented and discuss our experience in using them.