Product Reviews
I review the following products against the criteria outlined in the previous sections:
Consult the Cetus OODB area for a fairly up-to-date list of all OODBMS vendors.
| Criteria |
ObjectStore |
Versant Developer Suite |
Poet |
Objectivity |
| Background |
| Vendor |
Object Design |
Versant |
Poet |
Objectivity |
| Product page |
ObjectStore |
VDS |
FastObjects |
Objectivity |
| Technical reference[29] |
Spec or PDF
data sheet |
Overview or
manuals |
Java
or C++ |
PDF
overview or specific
data sheets |
| Version |
6.0 |
6.0 |
t7 8.0[16] |
6.0 |
| Costs and Licensing |
| Evaluations |
30-day trial[1] |
60-day trial |
Feature limited |
90-day trial |
| License costs |
?[2] |
?[2] |
?[2] |
?[2] |
| Online support |
Fair[3][9] |
Fair[9] |
Good[19] |
Strong |
| User community[23] |
Medium[4] |
Medium |
Small |
Medium |
| Compliance |
| ODL compliance |
N |
N |
N |
Incomplete 2.0/3.0 |
| OQL compliance |
N |
N[10] |
ODMG 3.0[17] |
N |
| Java interface |
ODMG 3.0 compliant |
ODMG 3.0 |
ODMG 3.0 |
ODMG 3.0 |
| C++ Interface |
Supported |
ODMG 3.0 |
N/A |
Incomplete 2.0/3.0 |
| Smalltalk Interface |
N/A |
N/A |
N/A |
ODMG 3.0 |
| Compatibility |
| Supported Unix |
Linux, Solaris, HP-UX, IRIX, AIX, Tru64 [ref] |
Linux, Solaris, HP-UX, IRIX, SGI, Tru64 [ref] |
Linux, Solaris, HP-UX[ref] |
Linux, Solaris, HP-UX, IRIX, AIX, Tru64 [ref] |
| Supported Windows |
98, NT4, 2000 [ref] |
NT4, 2000 [ref] |
98, NT4, 2000 [ref] |
98, NT4, 2000 [ref] |
| JDK requirements |
1.0?, 1.11.3[22] |
1.2, 1.3 |
1.11.3 |
1.22, 1.3 |
| Specialization of persistent classes |
N[5] |
N[5] |
N[5] |
Y[24] |
| Embeddable version |
Y |
N |
Y[18] |
N |
| Features |
| Database browser |
Y |
Y |
Y |
Y |
| Client-side caching |
Y |
Y |
Y |
Y |
| Database security |
User/group control for databases and segments |
User control for databases?[14] |
User/group control for specific classes and databases |
User control for databases |
| XML support |
Y |
Y[15] |
Partial[20] |
Partial[20] |
| Performance |
| Locking strategy |
Database, page or object |
Object-level |
Object-level |
Container-level[25] |
| Maximum database size[7] |
100's of GB? |
10's to 100's of GB?[12] |
? |
Reported to be terabytes |
| Transaction support |
Deadlock detection, MVCC [8] |
Distributed transaction management (similar to MVCC
concept) |
Checkpoints, shared or parallel transactions, nested
transactions |
Checkpoints, deadlock detection, shared or parallel
transactions |
| Query/performance profiler |
Y |
N[13] |
N |
N[26] |
| Scalability |
| Failover |
Y |
Y |
Y |
Option[27] |
| Load balancing |
Partly[6] |
Partly[11] |
Partly[21] |
Option[27] |
| Replication and incremental backup |
Y |
Y |
Y |
Option[27] |
| Ad hoc query engine |
No OQLuses collection and query objects |
Y[10] |
Y (OQL) |
Y[28] |
Risky BusinessBut Worth a Shot
I hope I have not come across as an OODB evangelistI still consider OODBs to be risky business for most applications that I use. However, once you understand and are familiar with them they can be handy tools. Poet and ObjectStore are my personal favorites, but I found them all useful.
Notes:
| [1] |
Only the single-instance personal edition (PSE) is
available for download. |
| [2] |
Quotes must be obtained through sales
representatives. |
| [3] |
Some support areas were accessible only for active maintenance contracts. |
| [4] |
Size is relative only to other OODB products. User communities for OODBs are much smaller than relational database equivalents. |
| [5] |
Persistent classes must be post-processed. |
| [6] |
Load balancing across multiple databases does not seem possible. Instead, processing is distributed through client-side caching, which reduces load on the server by moving more logic and computing transparently to the client. |
| [7] |
These results were not confirmed and are highly subjective vendor claims. When discussing database sizes, factors such as object complexity, size, and "reasonable response times" come into play. |
| [8] |
Multiversion Concurrency Control (MVCC) is a proprietary approach to maintaining a consistent view of data across cached-client and server views of the data during concurrent reads/writes. |
| [9] |
Would benefit from more on-line tutorials, FAQs, discussion forumsall should be open to existing and potential customers |
| [10] |
Implements a proprietary language, VQL, which has some commonality with OQL |
| [11] |
Uses replication to achieve some load balancing; although not confirmed, presumably load balancing would be through redirection of requests to multiple databases. Transparent replication across databases would ensure that a current view was seen at each OODBMS. |
| [12] |
Requires the 64-bit version to surpass a variety of 2^32 limits in memory, record counts, etc.; 64-bit versions of Versant are built but not certified for all supported platforms. |
| [13] |
Some functions are supplied to support query tuning and timing. |
| [14] |
Does not seem to speak of more granular security or provide this capability in the API unless I've missed it somewhere; I found specific mention of database-level access only through OS-enforced database file permissions. |
| [15] |
Requires separately supplied tools |
| [16] |
Poet comes in three flavors: t2 (realtime embedded Java), e7 (embedded Java/C++), and t7 (enterprise Java/C++). Versions are not prominently displayed, so the v8.0 for t7 is derived from the file version number, currently at 8.0.0.19. |
| [17] |
Unable to confirm that full ODMG 3.0 OQL is supported, but coverage appears to be fairly good |
| [18] |
Includes an embeddable version in C++ or Java (e7) and a real-time embeddable version in Java (t2) |
| [19] |
The online support site community.fastobjects.com is very comprehensive but frequently slow, and it regularly returns page timeouts from my high-speed connection. |
| [20] |
I have been able to use batch import/export functionality only with a command-line interface. |
| [21] |
No clear signs of distributed features, and I have not
worked with a distributed configuration. Load balancing can be achieved to
some extent if Poet is configured for database replication with the
"reader scalability" option, allowing queries against read-only slave
databases. |
| [22] |
At least JDK 1.2 seems to work best, as you get better collection support and avoid some reported "quirks" (unsure if these have been addressed for JDK 1.1 issues). |
| [23] |
Difficult to estimate - I took a stab based on
revenue/financials and Internet/newsgroup discussion frequency. Consider
these to be guesses. |
| [24] |
Persistent classes are identified by either extending ooObj
or implementing the IooObj interface. |
| [25] |
Although locks for an entire container seems scary, the idea is that this reduces significant load on the lock server. Under high concurrent activity, I would be worried that problems would arise, but discussions on the newsgroups point out some design approaches that can leverage the container-locking model. |
| [26] |
Some run-time query debugging is available through API
calls and statistics. |
| [27] |
Sources such as this
press release imply that these options add cost. |
| [28] |
No OQL-like equivalent is available. SQL++ is a
SQL-compliant feature that allows SQL queries against the OODB; Containers
support a scan() method and simple "Predicate Query Language"
expressions |
| [29] |
Each of the four products allows evaluation copy downloads. The accompanying documentation and samples for these downloads are typically very good. |
|