Supporting Seaside, OR Mapping vs. OODBMS

28 June, 2007


Cincom recently reiterated their support for Seaside. Not long ago Gemstone announced something similar. What will these two commercial companies lend to Seaside?

It is certainly true that Seaside will benefit from additional resources. Resources devoted to documentation, compatibility, and testing will help the community. Working on new solutions for persistence is a great idea, and having different options to solve your persistence requirements can only help developers.

Hopefully as these initiatives take shape we can get a better idea of how the offerings of these two companies will benefit the Seaside community. I’ve used Glorp (I also used Toplink) and I have to say that the OR Mapping tools are really powerful. Alan Knight’s work on Glorp is really terrific. Once you understand the benefits of Object – Relational database mapping issues of persistence really fall away.

I’ve also used Versant which is an Object Database. We built a huge application on top of Versant, so I know OODBMS pretty well. Unfortunately, other then a few days with the Gemstone Guys, I’ve never worked with Gemstone. There are huge benefits to working with a Object Database. The mapping goes away and persistence starts to feel like magic.

There benefits of OR-Mapping are the scalability and support that comes with SQL Databases. If you are looking for third party tools, need to build a huge application and wouldn’t trust anything but Oracle for your back end then you need to use OR-Mapping. With some work and understanding OR-Mapping deployed for your developers will make your application feel like it is connected to an OODBMS. Having made the transition once from OODBMS to OR-Mapping I can say that much of the functionality offered from OODBMS can be replicated within a well considered OR-Mapping Framework.

If your application can survive without the powerhouse of Oracle behind you, then you can really lower your development costs and simplify your application using an OODBMS. The concepts behind OODBMS really simplify your persistence model, they allow you to concentrate on your object model instead of optimizing for for RDBMS storage. The goal of OODBMS is commit and forget about it. Your Object model is your data model. This is really refreshing to work with, but it does come with it’s own problems. Spend a 10 minutes with a DBA arguing the benefits of an OODBMS and 3 months later when the argument is still going you may wish you never heard of OODBMS’s.

In both cases it is very important that you understand your data model. Performance of your application depends on your putting the data where it really belongs. Collections kill performance, something you will really understand when your well designed object model brings the entire database into memory when you touch some tiny object. Multi user issues come up no matter what system you use, and you will benefit more from understanding your applications data needs, and choosing a good locking model up front then from choosing OR Mapping over OODBMS.

I’m looking forward to seeing what Cincom and Gemstone have in mind. Both are worth looking at. So are other open source options. Look at Magma and Glorp for Squeak! Do you really need Oracle? How about PostgreSQL instead. Talk about lowering your cost of ownership!

I’m a big supporter of Open Source! (as if you couldn’t tell) I also support money to pay open source developers. The benefits of commercial organizations supporting Open source projects like Squeak and Seaside can not be ignored. I hope that these new projects will be beneficial to all. I’m glad they decided to lend a hand.

Ron Teitelbaum is a long time smalltalk programmer. He is currently President and Principal Software Engineer at US Medical Record Specialists.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: