Re: What're the differences betwen OO database and relational databases?

From: Carl Rosenberger <carl_at_db4o.com>
Date: Wed, 26 Sep 2001 18:28:43 +0200
Message-ID: <9osvua$p39$01$1_at_news.t-online.com>


soda <soda4u2_at_hotmail.com> wrote:
> I only learn relational databases at school, Object Oriented database
> was virtually unknown then. I've tried to find out but it would be
> easier to ask you folks what you think. Does OO database goes faster?
> Easier to maintain?

Hi Soda,
your name and email address are quite interesting. Is this a flamebait mail?

http://groups.google.com/groups?as_usubject=soda&as_uauthors=carl_at_db4o.com

http://www.odbms.org/soda/

Object databases usually have a much tighter language binding than relational databases. This enables you to store object hierarchies as they are, without the need to think about table mappings and joins between tables. Depending on your application this may spare between 10% and 50% of your total programming work. Less code written means less code to maintain and less sources of error.
There are some products that even recognize your classes and the changes to them automatically. In this case you do not even have to define a database scheme.
A very tight language binding removes the need for drivers and back-and-forth conversion of application data to and from SQL queries and back. This also results in better performance. There are no worries to convert table rows to objects and to map objects to keys. Object database engines take care of this automatically. Object databases usually also know object identities: If you retrieve an object, that you might be using in your code already, you will get the same *identical* object with every query that you execute. In contrast to what relational protagonistst will tell you, object databases do not expose pointers. If your program with Java, for instance, there *are no* pointers, so not even an object database can produce them. I doubt that anyone speaking about pointers has ever been experimenting with object databases.
Object databases use the same principle of referencing member objects that your programming language uses. They are *built* to store and retrieve objects (not table rows). No wonder they outperform relational databases dramatically, when it comes to storing and retrieving *objects*.

There are some negative issues of current object databases as well, which is due to the fact that they are not as mature as commercial relational databases. Judging from the last flame war here, I am sure some good friends will bring these points up.

One argument is completely useless:
The argument of the "better theory" of relational databases. Look at your usecase. Implement test benchmarks with the products that you can get your hands on. Which databases engine will you choose? The one with the "better theory" or the one that stores and instantiates objects 100 times faster with 30% less implementation work?

> Can I design OO database and use them in MySQL?

No, of course not. Object databases are a product category. MySQL ist not part of this category.

Kind regards,
Carl

---
Carl Rosenberger
db4o - database for objects - http://www.db4o.com
Received on Wed Sep 26 2001 - 18:28:43 CEST

Original text of this message