I saw a post today from Living Tao asking why anyone would buy a commercial JDBC driver.
From what I’ve seen the 3rd party drivers by companies like DataDirect (the same ones resold by many companies like BEA) and i-way have the advantage of:
- Quality – I know based on prior experience that DataDirect has a huge test matrix based on info from a vast number of customers across a bunch of DBs. Historically drivers from Microsoft, Oracle, and others can be quite buggy. The state of the world these days is not as bad as it used to be, but this used to be a common reason to use the 3rd party drivers. The old MS driver was a piece of crap although they have since gotten serious about it and produced a top-notch JDBC driver.
- Leveling – driver vendors typically build a common driver infrastructure and do some amount of SQL- and JDBC-leveling so that features work the same way across vendors. This is most important when a project or enterprise is using more than one DB.
- Performance – driver vendors have a big incentive to be faster than the db driver and its uncommon for them to do so. A key difference is their ability to hide all the db-specific tweaks (or expose them in a consistent way at least).
- Value-add – driver vendors often have some value-added features like standardized logging or monitoring, secure access via intermediate server, ODBC or other wrapper drivers, XQuery wrapper drivers, etc. These are features that you wouldn’t usually get from a particular vendor and certainly would not get in a way that works across multiple databases.
So, in summary there are a lot of good reasons to buy a commercial JDBC driver. But often people don’t need to because they are already getting one as part of a reseller agreement from their app server vendor. Also, the open-source databases have traditionally been better served by their communities than by the driver vendors, although that is changing now that MySQL and Postgres are becoming more and more popular.