Comparison of Versant to Objectivity

 

We installed the Versant ODBMS (Objectivitys main competitor) on our
Pentium-class PCs running Windows/NT,
and ported the "stars" application to it. For both Objectivity and Versant we
used Microsoft's Visual C++ version 5.0 to compile and link the applications. We
measured the performance of the application as a function of the number of
objects in the database, and compared these times with those obtained using
Objectivity/DB.

Porting of the application from the Objectivity to the Versant API
took about half a day, and required minor changes in the schema and application.
We found that he systems operation of the Versant database was slightly
more cumbersome than that of Objectivity. In particular, although
the operations involved in importing the stars schema into the
Versant databases was very similar to that used in Objectivity,
this had to be done separately for each Versant
database. In Objectivity the schema only had to be applied
once to the federation. On the other hand, Versant offered a "LinkVstr" feature
on permanent objects: a linked list of object pointers. This proved very
convenient when converting
our code that iterated through all objects in each database. Similar
functionality can be achieved in Objectivity by the use of
user-defined arrays of object IDs, but we did not investigate this.
Objectivity includes the concept of "containers" of objects, which
can be used to group objects together in order to optimise access
speed or simplify application code. Each container resides in a
database, and iterators can be declared on the container. We found
that failure to use these container iterators instead of database
iterators caused a significant performance degradation
due to excessive activity in the lockserver. Finally, the Versant
"predicate" query syntax differed significantly in its API from the
Objectivity "predicate": we believe the Versant version to be
faster.