DBI Specification - Section 1


Introduction to the DBI

  1. Purpose of the DBI
  2. Background
  3. Current Work
  4. Guiding Principles
  5. Specification Originators And Contributors
  6. Intellectual Property and Copyright
  7. For More Information Or To Contribute Constructive Feedback
  8. Structure Of The Specification


(This section was last modified on $Date: 1994/10/06 10:55:06 $ is currently at $Revision: 6.3 $ and is NOT stable.)


1.1 Purpose of the DBI

The purpose of the DBI API (Application Programming Interface) is to define and implement a common interface to enable interaction between applications and various database engines. The DBI will allow the creation of database-manipulation scripts without regard for the engine being used to service the requests.

It is important to remember that the DBI is just an interface. A thin layer of 'glue' between an application and one or more Database Drivers. It is the drivers which do the real work. The DBI provides a standard interface and framework for the drivers to operate within.

1.2 Background

A number of independent efforts have been made to connect database engines to perl. Interfaces currently exist for Oracle, Sybase, Ingres, Interbase, Informix, Unify, Postgres and perhaps others.

All of these interfaces have APIs that are atuned to the peculiarities of their engine back-end and thus a perl script must be changed to work with different engines.

Since September 29th 1992, a group of interested parties, including the authors of some of the interfaces named above, have been working on (thrashing out) an engine-independent interface specification. This was known as DBperl for almost two years before being renamed (after much debate) to 'The Database Interface' or DBI for short.

After approximately 18 months the specification was quite stable and implementation was about to start. However, at this time Larry was starting to release Perl 5 alpha versions. It soon became apparent that the object-oriented features of Perl 5 could be used to implement a dramatically improved database interface.

1.3 Current Work

The last formally released version of the specification was at the 0.5 revision level. This was frozen at the end of the Perl 4 based design work. It's around 3000 lines and over 100Kb long. Details of the DBI mailing list and ftp archive are given in Section 1.7.

We are now working on the next draft (0.6). This will take the functionality of the 0.5 draft and rework it to make best use of the new features in Perl 5.

1.4 Guiding Principles

It is hoped that DBI will:

1.5 Specification Originators And Contributors

 -  Kurt Andersen   <*>                       Informix
 -  Kevin Stock     <*>                       Oracle
 -  Buzz Moschetti             Interbase
 -  Michael Peppler          Sybase
 -  Tim Bunce                DBI Switch
 -  Ted Lemon         Ingres

<*> Unfortunately Kevin (a major contributor) and Kurt (the original specification editor upto and including v0.4) have both lost their access to the net.

List of Top Contributors (automatically generated):

Tim Bunce, Kevin Stock, Buzz Moschetti, Kurt Andersen, Ted Lemon, William Hails, Garth Kennedy, Michael Peppler, Neil S. Briscoe, David J. Hughes, Jeff Stander, Forrest D Whitcher, Larry Wall, Jeff Fried, Roy Johnson, Paul Hudson, Georg Rehfeld, Steve Sizemore, Ron Pool, Jon Meek, Tom Christiansen, Steve Baumgarten, Randal L. Schwartz, ... and a whole lot more people (100+) who have put up with the discussions and contributed from time to time on the mailing list (see below).

We always need more active contributors. Please join in this effort.

1.6 Intellectual Property and Copyright

Our collective intention is that all of the DBI materials (DBI API specifications, switch and drivers) will be distributed under the same terms and mechanisms as perl itself (e.g., can be used under the GNU _or_ Artistic License at the users choice).

Thus individual Driver implementors and DBI application developers are free to exploit their work commercially. They are not required to release their work or source code, but we hope that they will.

This DBI API Specification is Copyright (c) Tim Bunce 1994 England.

Permission is hereby granted to make and distribute verbatim (complete and unedited) copies of this document. Permission is also granted to translate this document into other languages and formats provided that all text is included.

1.7 For More Information Or To Contribute Constructive Feedback

Very little of this specification has been arbitrarily chosen. If you are interested in the reasoning behind any particular portion of the API, please send your queries to the address below and you will probably get one (or more) versions of the discussions that have led up to this current formulation. Be warned that more than 24 months and over 600 messages totaling more than 2Mb have transpired, so the succinct version you receive will not preserve the nuances of the give-and-take that has happened.

Please send feedback on this specification to the DBI mailing list from whence it will be echoed to the interested parties: perldb-interest@vix.com

If you would like to be added to (or removed from) the list of interested parties, please send your request to: perldb-interest-REQUEST@vix.com

Archives of the perldb-interest mail and copies of the DBI API specification are kept at ftp.demon.co.uk:/pub/perl/db by kind permission of demon.net (Demon Internet Services Limited, UK). This archive also holds other database/perl related software (oraperl, sybperl, sqlperl, uniperl, rdb, shql etc).

Please contact one of the people listed above if you have specific questions about the handling of database engine peculiarities.

1.8 Structure Of The Specification

Because the specification is long it is divided into several parts:

  1. Introduction to the DBI (this section)
  2. Structure, Conventions and Open Issues
  3. Database Interaction Functions
  4. Error and Event Handling
  5. The Switch and Drivers
  6. Attribute Names and Values
  7. Data Type Conversion Functions
  8. Data Dictionary Functions
  9. Examples
  10. Appendices
Eventually this specification will become a Perl pod file for the DBI. Each Driver implementor will also supply a man page for their driver in a standard format and style.


© 1995-1997 Hermetica
Alligator Descartes