[DB-SIG] Re: [Pycon2005-attendees] Pycon2005 and database divide
(ODB vs relational DB)
Bob Ippolito
bob at redivi.com
Sun Mar 27 06:04:52 CEST 2005
On Mar 26, 2005, at 10:25 PM, john.m.camara at comcast.net wrote:
> Do all databases need ad hoc query languages?
>
> Oh, I can already feel the heat is on its way before I even get the
> words typed out.
>
> IMHO, saying or believing a database needs an ad hoc query language
> is equivalent to saying or believing a language needs static types.
>
> All Relational Databases lovers should now take a couple of
> slooooow deep breaths and cool down.
>
> There are quite a few object oriented applications that require
> only querying over a relatively few fields and thus does not need
> the flexibility that SQL provides. If such an application uses a
> Relational Database it will come with some costs.
>
> - Query are slower - SQL Queries require complex parsing before
> data is retrieved
> - Results need to be transformed to objects (takes more code and
> processor time)
> - Refactoring the Application is harder and more error prone as
> changes need to be done in many places (object model, relational
> mapping, database, etc). Just like the good old procedural days
> when you had to remember to make changes scattered through out the
> code base.
> - Storage requirements may be higher if the tables become sparsely
> populated.
> - If tables are sparsely populated the code for the application
> will likely have many if/else conditions.
> - Good object oriented design is likely to be compromised to make
> working with a relational database easier.
> - Applications with high volumes of data may have to resort to back
> dooring the data into the database. If you every find yourself in
> this situation you definitely choose the wrong type of database.
>
> As I stated in previous posts, I'm not against Relational
> Databases. There is no one type of database that is a silver
> bullet. They all have their strengths and weaknesses and for the
> for-seeable future I will continue using the three types. In
> general I use Relational when I need an ad hoc query language,
> Embedded when I need to save complex state information, and object
> orient for the remaining. In some applications I may use 2 or even
> all 3 types. In some applications where it may be ideal to use 2
> or more types I some times make a compromise and use one type if
> one particular type meets the majority of the application needs
> well. I also make the compromise for applications that have very
> simple database needs.
MonetDB <http://monetdb.cwi.nl/> is worth looking at if you're
interested in a hybrid model that has the relational database API
when you want it, and something lower level and more efficient when
you don't. It also supports both the embedded and client/server
model, and has some pretty impressive technology behind the scenes.
I haven't done more than play around with it, so I can't personally
vouch for it in a production environment, but I sure want to at some
point.
(They also support Python out of the box)
-bob
More information about the DB-SIG
mailing list