One of the core modules that I couldn't live without. Excellent feature set for relational database access. All viable relational databases on earth are supported. I've been using DBI with Oracle, Postgres and SQLite with no major issues. The user community is so huge that so far I haven't come to a question that a Google search couldn't answer.
The standard indispensable core of all things database.
The only minor issue I have is with the DBI distribution packaging, which does seem to be bloating out a little in recent times with some features and packages that might be better in a seperate distributions.
I use this module whenever I need to talk to a database. It has excellent documentation, clear examples, and provides a logical interface which makes using it in everyday coding rather easy. I can say that time invested in learning this module is rewarded with an excellent tool and better code.
Strong points of DBI:
* it's the de facto standard in Perl, focusing database development.
* a unified interface for connectivity, basic activities (and somewhat for capabilities), making it almost-not-a-nightmare to switch between database backends (but then there's always the specific syntax, semantics and concepts of different databases for anything non-trivial... *sigh*)
* it's stable and mature with countless hours in production.
* nice API.
* huge amounts of additions and utilities in the DBIx namespace, built on top of DBI. Not to mention Class::DBI.
Although it is one of the best developed perl-modules around (IMHO) I think it could use a bit nicer API - the length of the function names makes it error-prone. One solution would be returning (browsable) recordsets instead of a handler. (just daydreaming here)
Overall DBI is a great tool. it has brought a consistency to dealing with a whole variety of different databases and the APIs that go with them.
Tried using Proxy 1.30 but gave it away in the end. It was on Digital Unix 4.0f and kept stopping responding after a couple of days. Restarting would work but this was frustrating. Not sure whether the fault was DBD::Ingres or the server but don't really care now as we have moved on.
I have one ongonig problem in that the DBI:Proxy on HPUX crashes which is probably due to Net::Daemon not handling client side disconnects gracefully enough. I have to run a cron job every 5 minutes to restart DBI::Proxy if it dies. Installation was difficult (since I am not the DBA) for Oracle, but once it was figured out, the coding was straight forward.
My DBA and SysAdmin both think I have implemented a "BLACK BOX" which they fear, don't trust, and can't seem to get their arms around. But after 1 1/2 successful years of a small production program that works, and with implementations added on for Microsoft SQL on W2K, Linux MySQL and Oracle on HPUX, it is being more widely accepted.
Thanks to the DBI team. I have been very happy with this one and only version I have installed and used thus far.
A fantastic module with very thorough documentation and a nice API. As a matter of fact we wouldn't be using Perl for a lot of our projects at work if it wasn't for DBI. Best module on the CPAN? Hmm, top 5 for sure.