I’ve been posting comments from an email discussion I had with Luis Ramos, one of our object database experts here at Progress Software. In our last exchange, Luis commented on the ideal use cases for object databases. Today Luis answers a few questions about switching from RDBMS to ODBMS, the market, and where to get more information.
Me: Why would someone want to switch from RDBMS to ODBMS?
Luis Ramos: There are two reasons - Performance and TCO.
There is significant overhead in accessing object-oriented data (in Java, C++, or C#) from a relational database.
If "complex" or object oriented data is stored in an object-oriented database, then the data is stored in the same format as the object. It is very straight-forward. But if you try to store the same object data in a relational database, then you would need to decompose the data into rows and columns. This procedure can be quite difficult and imposes quite a bit of overhead specially if the corresponding object model is complex in terms if its inheritance hierarchy and interconnections between objects.
There will be a magnitude-times improvement in query performance using an object database. In a relational database, queries are performed on the server-side and results are brought over to the client and materialized. In an object-oriented database, such as ObjectStore, the objects and indexes are cached at the client (via its cache-forward architecture). Consequently, performing a query is very efficient since it is carried out at the client by simply de-referencing pointers or references of the corresponding index structures.
For those interested in cost, using an object-oriented database instead of a relational database can reduce the TCO significantly because it avoids the development and maintenance of object relational mapping (OR mapping) code.
Using a relational database from an application that is implemented using an object-oriented language such as Java or C++ requires the use of OR Mapping technology to transform data between objects and relational tables. The amount of code and effort to undertake (and maintain!) this transformation can be significant. With an object-oriented database, there is no OR mapping code thereby reducing the TCO.
Me: Why is the market so small?
Luis Ramos: Relational databases such as Oracle and SQL Server are very well known in the industry and are common place. People generally tend to use what they know, and so developers usually start out using relational databases by default. Relational databases can be made to work and developers would go through all sorts of contortions writing a significant amount of OR mapping code to force complex data into two-dimensional tables and live with up to 100x slower performance. But then pain is relative. If you have not heard of object-oriented databases and these benefits, how would you know better? Object database vendors need to do a better job at marketing their products.
Very few people really know about them.
Me: Where can I learn more?
Luis Ramos: You can always email me if you have questions about ODBMS or log a question here on the blog in the comments section. My email is lramos@progress.com.
There’s also a wide range of information on the ObjectStore and PSE Pro websites. There are a couple of white papers that are worth reading: here’s one for Real-Time Data Caching, and another a white paper on Coding Java Applications on Cache Forward Architecture.
Stay tuned! Our next (and final) post in this special series on object databases is where we will talk more about the question "A New Renaissance for ODBMS?"