(This section was last modified on $Date: 1994/10/06 10:55:06 $ is currently at $Revision: 6.3 $ and is NOT stable.)
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.
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.
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.
It is hoped that DBI will:
<*> 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.
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.
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.
Because the specification is long it is divided into several parts:
1.1 Purpose of the DBI
1.2 Background
1.3 Current Work
1.4 Guiding Principles
1.5 Specification Originators And Contributors
- Kurt Andersen <*> Informix
- Kevin Stock <*> Oracle
- Buzz Moschetti
1.6 Intellectual Property and Copyright
1.7 For More Information Or To Contribute Constructive Feedback
1.8 Structure Of The Specification
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.
Alligator Descartes