DB2 UDB: Just Say No
I've decided to resurrect an article I wrote two years ago about databases for data warehousing, after encountering a series of flaws in DB2 UDB that are simply inexcusable. For those not in the know, UDB is the non-mainframe version of DB2. Everything I say from here on out refers only to UDB, and not to the mainframe product which is actually different (and superior) code.
For a long time I didn't think there was a huge difference between using any of the major vendors' databases unless you were at the extreme high end of data volumes or users. Then I started using DB2 in earnest for a data warehouse three years ago. I kept stumbling over lackings between DB2 and everyone else.
The biggest gaps at first had to do with basic functionality that DB2 lacked (and in some cases still lacks). In the past two releases they have managed to close that gap a little, although the problem now is one of technological maturity. The features they added are not as robust as those same features in Oracle or even SQLServer because IBM has not had the time to work through the kinks that Oracle and Microsoft and Teradata worked out. The sad thing is that these features were available in 1996-97 in the other databases, and UDB has only added them in the past two years.
Then I started noticing how poor IBM's development and client tools are for UDB. Then picking up on the fact that the database is harder to manage, harder to tune, in general much harder to support than any of the other products. It wasn't just me. DBAs who have gone from UDB to Oracle or SQLServer (or in one case Teradata) have all said the same thing: UDB is not comparable to these other products, particularly when looking at data warehouse features.
I thought I was finished griping until recently, when IBM released version 8 of UDB. I term this the "apoplectic release" because I've been that way since it came out. Among other things, they took some shortcuts in their SQLJ (embedded SQL in Java) implementation. The SQLJ translator and bind utilities, compiler if you will, was broken. It would not properly handle syntactically correct SQL statements. A few workarounds and several weeks of technical support and things are straightened out. Until the latest bug affecting code that worked perfectly for the past three years.
It turns out that their software converts the != operator to an = operator when creating a package in the database! What moron could let something so obviously wrong creep through QA and be released into production code? How many customers have code out there using a not equals and therefore generating bogus results? How could IBM get something so simple and basic so incredibly wrong?
My official position has shifted from one of neutrality to outright disdain. Until IBM gets their act together with UDB, they are on the bottom of my list and I am actively discouraging people from using it on any platform other than the mainframe. Go to any other database, but stay away from this product. Even if you already have it in-house and have experieinced staff. The other products are more reliable, easier to manage, and more developer friendly.
I'll be posting the old "why not db2?" article after I clean it up and make it more current.
Posted by Mark Tuesday, November 23, 2004 6:12:00 PM |