Question
Object oriented databases seem like a really cool idea to me, no need to worry about mapping your domain model to your database model, no messing around with SQL or ORM tools. The way I understand it, relational DBs offer some advantages when there is massive amounts of data, and searching and indexing need to be done. To my mind, 99% of websites are not massive, and enterprise issues never need to be thought about, so why aren't OO DBs more widely used?
Answer
Why we abandoned Object Databases
A while back, I was part of a Solaris/C++ project that used the Objectivity object database. We eventually switched the project over to Sybase. This was about 10 years ago, so I'm sure a lot has changed since then, but a few of the observations still apply.
The application was a carrier-class telecom system.
- The basic functionality was nice. You reference an object and it magically pops into memory. If your programming problem boils down to having a large graph of objects (as opposed to tabular data) it is a definite win.
- There were some stability-related "early adopter" problems. Seeing as the company is still in business it's safe to assume they are fixed.
- We wanted to allow the client to define their own schema. This was a huge problem, since you give the object database a specification and it spits out a header file which defines your object. This is definitely not conducive to post-compiling schema definition, which is a definite strength of SQL databases.
- The customer perceived it as being a new, experimental technology. If you're familiar with the telecom world, you know that's not a recommendation.
- SQL databases have tons of tools for working with schemas, database administration, UI generation, backup, etc. We were having to write every little piece of that ourselves.
- I had a bad experience working with some of the early-adopter objectologists in that group. If you're familiar with the DailyWTF, these were the True,False,FileNotFound guys.
While attempting to address the client customization part, our lead objectologist came up with some data classes called Rows and Columns. That was when it became apparent that for our particular application we were just a whole lot better off going with a relational database.
Anyways, that was my experience with Object DBs, I would love to hear some other (hopefully happier!) experiences with them.
< br > via < a class="StackLink" href=" http://stackoverflow.com/questions/800/" >Object Oriented vs. Relational Databases< /a>
0 comments:
Post a Comment