Choosing the Right OODB Solution

Gain an understanding of the differences among four top OODB products, enabling you to determine the appropriate OODB for your applications.

by Steve Franklin
URL:
http://www.devx.com/dbzone/articles/sf0801/sf0801-1.asp

As with relational databases (RDBs), there are many major object-oriented database (OODB) options on the market. However, OODBs have less standardization in price, functionality, features, and architecture. This article will help you understand some of the differences among OODBs, enabling you to narrow the number of OODBs appropriate for your applications.

The references I used for these product evaluations vary quite a bit depending on the criteria. In many cases, the evaluations are based on personal experiences (and opinion). Other specifics were obtained directly from evaluating the software or reviewing vendor-supplied data sheets. Before making a selection, always perform extensive testing that is specific to your application. As always, "your mileage may vary."

The four OODB products that we will analyze are ObjectStore, Versant Developer Suite, Poet FastObjects, and Objectivity. Each will be evaluated using the following criteria:

Costs and Licensing
Two costs are associated with projects: startup and maintenance. The startup costs often dominate the evaluation, but issues such as yearly support, on-line forums, and fellow users all should be factored into a product's cost. OODBs often are very expensive, even compared with major RDBMS competitors.

Criteria Look for...
Evaluations Freely downloadable, full-featured evaluation software
Developer license costs Low-cost, per-seat licenses
Production license costs Low-cost, per-CPU licenses with low per-year maintenance
Online support Responsive technical staff, many useful on-line tech notes, samples, and discussions
Strong user community A large audience of users, good activity within the newsgroups, unofficial support sites

Compliance
OODBs generally do not take the goal of compliance as seriously as their relational counterparts. Most OODBs have their own unique approaches to implementing various features. This presents a problem with regards to the Object Database Management Group (
ODMG) standard—with no other clear specification to measure OODBs against, the ODMG specification is the best available gauge. Finding a product that is fully compliant with the ODMG 2.0 or 3.0 spec is difficult, and the 2.0 specification is fairly light and incomplete compared with the year-old 3.0 specification. Perhaps we will measure Java OODBs against the Java Data Objects (JDO) specification in the near future.

Criteria Look for...
Object Definition Language (ODL) compliance Full ODMG 3.0 compliance for object definition
Object Query Language (OQL) compliance Full ODMG 3.0 compliance for queries
Java compliance Full ODMG 3.0 compliance, indicating accurate implementation of the Java API/binding
C++ compliance Full ODMG 3.0 compliance, indicating accurate implementation of the C++ API
Smalltalk compliance Full ODMG 3.0 compliance (perhaps an optional criterion if your architecture is unlikely to include Smalltalk)

Compatibility
Projects require increasing flexibility across languages and platforms. An OODB should not hinder this flexibility in any way. However, platform support is costly because it requires significant testing and documentation. Consequently, some vendors support their product on only a small number of platforms. Finding a solution that tightly integrates with the major OO languages, C++, Java, and Smalltalk, is quite difficult.

Criteria Look for...
Supported platforms Broad platform support—I always look for the "key three": Linux, Win2000, and Solaris. Your priorities may vary.
Java integration Broad JDK support that closely tracks the current JDK specification
C++ integration Broad compiler support
Specialization of persistent classes Avoid tight coupling—look for databases that do not require modification of all persistent classes in the code. This is a preference, so you should research the pros and cons of post-processed enhancers versus extends/implements approaches.
Embeddable version Small footprints in disk; RAM; the ability to opt out of some non-core features

Features
Each database solution offers its own unique features. I highlight a few core features because of their value to development projects.

Criteria Look for...
Database browser Ability to administer the database, modify contents, update schema, and report on contents
Client-side caching Features that improve speed of a "warm" database, minimizing unnecessary fetches to the database while ensuring object synchronization
Database security User and group access controls, preferably at the object—if not the container—level
XML support Utilities to seamlessly insert and extract XML into the database
IDE integration Integration with environments such as TogetherSoft to improve developer productivity can improve developer productivity.

Performance
As I discussed in
Object Oriented Databases Are Worth a Closer Look, OODBs excel in some performance areas and fall short in others. Although details about the performance benchmarks for each product would be too extensive to cover here, an understanding of the architecture and feature limitations that could hinder performance is important.

Criteria Look for...
Locking strategy Depends on the application—object-level locks can provide more confidence, but page-level locking mechanisms can fly under certain conditions
Load balancing Ability to transparently distribute database, invoke method calls on remote servers, share objects in concurrent threads/accesses
Maximum database size Bigger is better
Transaction support Checkpoints: one transaction shared by multiple threads, one thread sharing multiple transactions, nested transactions; Ensure that you understand how synchronization across client/server works in combination with client-side caching in case the implementation of a given product affects your application.
Query/performance profiler Ability to extract information, which assists you in debugging performance bottlenecks; OODBs typically offer fewer optimization and tuning options than RDBs, but tools that help you profile and explain queries still can be very useful.

Scalability and Availability
Although not every project needs enterprise recovery, availability, and scalability functionality, knowing that your chosen OODB solution can grow with your project down the road still is worthwhile.

Criteria Look for...
Failover Transparent switch to redundant database when the primary server experiences problems
Load balancing Ability to distribute performance across redundant servers, partition objects across servers, and synchronize views of data across client-side object caches
Replication and incremental backup Ability to seamlessly duplicate data to support load balancing or recovery
Ad hoc query engine Rich query language that allows rapid access to data, ideally can join information across objects that do not have direct associations

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.1–1.3[22] 1.2, 1.3 1.1–1.3 1.22, 1.3
Specialization of persistent classes N[5] N[5] N[5] Y[24]
Embeddable version Y 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 OQL—uses collection and query objects Y[10] Y (OQL) Y[28]

Risky Business—But Worth a Shot
I hope I have not come across as an OODB evangelist—I 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 forums—all 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.


Steve Franklin handles the architecture and project engineering responsibilities at a major software firm dealing with J2EE, client/server, command and control, and other distributed architectures. Steve Franklin's primary "off-hours" hobby can be found at Lookoff.com, a repository for Internet and research resources. He can be reached at steve@lookoff.com.




Sponsored Links

Advertising Info  |   Member Services  |   Contact Us  |   Help  |   Feedback  |   Site Map
Jupiterweb networks

internet.comearthweb.comDevx.comClickZ

Search Jupiterweb:

Jupitermedia Corporation has four divisions:
JupiterWeb, JupiterResearch, JupiterEvents, and JupiterImages

Copyright 2004 Jupitermedia Corporation All Rights Reserved.
Legal Notices, Licensing, Reprints, & Permissions, Privacy Policy.

Jupitermedia Corporate Info | Newsletters | Tech Jobs | E-mail Offers