Object Oriented databases


This is a general Question:

For many years people are talking about the Object Oriented database and there are certainly quite a few in the market.
But, even though the major suppliers (like Oracle) started adding such features in to their major DB release, the development community has not been using them as wide as one would expect.
I do not have enough experience with OO and therefor I would appreciate your comments on reasons that is is not that wide spread

Who is Participating?

I would say the #1 reason why OO databases are really gaining popularity is that relational databases are totaly entrenched. Every reporting package on the market works the relational databases, but none of them work with object oriented databases.

Nothing integrates with OO databases since its a philisophical design change, and not just a data storage format change.

Object oriented databases by their very nature do not use Ansi SQL syntax to query them.

I saw a very complete summary of OO databases with code examples of how to use them on www.slashdot.org (youll have to search on their site for it)

Basically it said the way you would use an OO database is the exact same way you would use a collection of objects in your programming language of choice with the 1 difference being that between the times your run your program, your program persists the data collection back to the file sytsem.

#2 Todays current generation of DBAs could not, and would NOT be qualified to design an OO database because they dont have the skills and they SHOULD not have the skills. If dba's wont share the design and implementation of relational databases with developers, then developers wont share OO design and implementation with DBA's.  The people that have the skills are the software developers with their OO Design background, not the DBA's. So OO databases will become wide spread in use when you kick out the DBA's and make the DBA tasks part of the developers job.

Gustav BrockCIOCommented:
The only real OO database engine at some level I've seen, is InterSystems' Caché. A fully functional single developer license is free to download.

I think the reason for not being wide spread yet is that you as a developer really have to turn your head 180 degrees. However, if you do that, a lot of opportunities and fun show up and, though troublesome for a beginning, it is very nice and encouraging to be able to manipulate the engine without old fashioned SQL.
Caché knows that SQL sometimes is much easier to use so it fully supports SQL as well as ODBC, thus giving you both worlds - in fact you can start out just using SQL and ODBC, then move on as you learn or need the OO features. Have in mind though, that it is an engine only with a nice developer (Studio) environment (Windows only) - you will need a frontend of some kind for you users.

Another important reason for not being widespread is the inertia among dbas. For demanding purposes you choose engines you know will work. It can be hard to find tasks where experimentation is allowed or desired.

cactus_data did a good job covering the big reasons.  Related to "inertia" is the fact that relational SQL is very common.  It filled  a need very well, and is one reason that you do not see the hierarchical databases as much anymore (except on mainframes).  This is sort of like getting the U.S. to adopt the metric system.  The main reason for not doing it is that everyone is already familiar ("invested") in the old system, even though the new system has many advantages.  Given some time, we should see some OO leaders and standards emerge.
Joe WoodhousePrincipal ConsultantCommented:
Not disagreeing with what's been said above, I'd also add that (rightly or wrongly) OO databases are often perceived as a "worst of all worlds" hybrid solution.

If I have a need well suited to a database solution, the odds are good that an established standard relational database product will be more fully featured, more tested in the marketplace, and have more front-end application vendor support for it than the relatively more recent OO database technologies.

Likewise, if I think a traditional development environment is the answer to my problem, there are plenty of very good OO languages and environments that will again have more features and maturity than a hybrid approach.

Another way of putting that is that while a hybrid approach may be able to be used in more situations, it will often be outcompeted by a more specialised approach which is a better fit for that particular need.
Agreeing with what the previous comments, I would like to note that there exist also partial OO models, like object-relational database management systems (ORDBMS), eg PostgreSQL.

From  http://www.faqs.org/docs/ppbook/x1277.htm :

PostgreSQL is a sophisticated object-relational database management system (ORDBMS). An ORDBMS is an extension of the more traditional relational database management systems (RDBMS). An RDBMS enables users to store related pieces of data in two-dimensional data structures called tables. This data may consist of many defined types, such as integers, floating-point numbers, character strings, and timestamps. Data inserted in the table can be categorized using a grid-like system of vertical columns, and horizontal rows. The relational model was built on a strong premise of conceptual simplicity, which is arguably both its most prominent strength and weakness.

The object-relational aspect of PostgreSQL adds numerous enhancements to the straight relational data model. These include support for arrays (multiple values in a single column), inheritance (child-parent relationships between tables), and functions (programmatic methods invoked by SQL statements). For the advanced developer, PostgreSQL even supports extensibility of its data types and procedural languages.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.