

|
Open Database Connectivity (ODBC) is a standard software API specification for using database management systems (DBMS). ODBC is designed to be independent of programming language, database system and operating system.
Contents |
ODBC is a procedural API specification for using SQL queries to access data. An implementation of ODBC will contain one or more applications, a core ODBC library, and one or more "database drivers". The core library is independent of the applications and DBMSes, and acts as an "interpreter" between the applications and the database drivers. The DBMS-specific details are contained in the database drivers. Thus, it is possible to write applications that use standard types and features without concern for the specifics of each DBMS that might be used. Likewise, database driver implementors need only know how to attach to the core library. This makes ODBC modular.
To write ODBC code that exploits DBMS-specific features requires more advanced programming. An application must use introspection, calling ODBC metadata functions that return information about supported features, available types, syntax, limits, isolation levels, driver capabilities and other information.
ODBC is the foremost example of ubiquitous data access because there are hundreds of ODBC drivers for a large variety of data sources. ODBC is available for a variety of operating systems and there are drivers for non-relational data such as spreadsheets, text and XML files. Because ODBC dates back more than ten years, it offers connectivity to a wider variety of data sources than other data access APIs. There are more drivers for ODBC than drivers or providers for newer APIs such as OLE DB, JDBC and ADO.NET.
Despite the benefits of ubiquitous connectivity and platform independence, ODBC has certain drawbacks. Administering a large number of client machines can involve a diversity of drivers and DLLs. This complexity can increase system administration overhead. Large organizations with thousands of PCs have often turned to ODBC server technology to simplify the administration problem.
The layered architecture of ODBC can introduce a minor performance penalty. The overhead of executing an additional layer of code is generally insignificant compared to network latency and other factors that influence query performance. Driver architecture is also a consideration. Many first-generation ODBC drivers operated with database client libraries supplied by a DBMS vendor. An ODBC driver for Oracle, for example, would use Oracle's network library (SQL*Net, Oracle Net) and OCI client library. Similarly, a driver for Sybase or Microsoft SQL Server would use a vendor-supplied network library to emit Tabular Data Stream (TDS) packets. Those earlier drivers have been largely supplanted by wire protocol drivers that do not use database client libraries. The newer type of driver communicates using protocols such as TDS, TNS, and DRDA without needing database client libraries.
Differences between drivers and driver maturity are also important issues. Newer ODBC drivers are often less stable than drivers that have been in production for years. Years of testing and deployment mean a driver is less likely to contain bugs.
To use DBMS-specific features with ODBC, a developer must understand adaptive programming techniques such as introspection and writing interoperable SQL statements. Even when using adaptive techniques, however, some advanced DBMS features might not be available with ODBC. The ODBC 3.x API is well-suited to traditional SQL applications such as OLTP but it has not evolved to support richer types introduced by SQL:1999 and SQL:2003.
Developers needing features or types not accessible with ODBC can use other SQL APIs. When platform independence is not a goal, developers can use proprietary APIs. If creating portable, platform-independent code is a goal, developers can use the JDBC API.
ODBC is based on the Call Level Interface (CLI) specifications from SQL Access Group, X/Open (now part of The Open Group), and the ISO/IEC. Microsoft created ODBC by adapting the SQL Access Group CLI. It released ODBC 1.0 in September, 1992. After ODBC 2.0, Microsoft decided to align ODBC 3.0 with the CLI specification making its way through X/Open and ISO. In 1995, SQL/CLI became part of the international SQL standard.
ODBC implementations exist for many operating systems, including Microsoft Windows, Unix, Linux, OS/2, and Macintosh. There are hundreds of ODBC drivers, including drivers for Oracle, DB2, Microsoft SQL Server, Sybase, Pervasive SQL, MySQL, PostgreSQL and desktop database products, such as Filemaker and Microsoft Access.
Microsoft was the first to provide an ODBC product, as a set of DLLs for Microsoft Windows.
A JDBC-ODBC Bridge is a JDBC driver which employs the ODBC driver to connect to the database. This driver translates JDBC method calls into ODBC function calls. Such a bridge is usually used when there is no JDBC driver available for a particular database. Sun included one such bridge in the JVM, but this was intended as a stop-gap measure while JDBC Drivers were in short supply, was never meant for production use, and Sun generally recommends against its use. Independent data access vendors now deliver JDBC-ODBC Bridges which support current standards for both mechanisms, and far outperform the JVM built-in.
iODBC (http://www.iodbc.org/), or Independent Open DataBase Connectivity, is an open source, platform-independent implementation of both the ODBC and X/Open specifications, generally used on platforms other than Microsoft Windows. The iODBC project is distributed under the LGPL and/or BSD License, and is maintained and supported by OpenLink Software. Apple chose to bundle iODBC into Mac OS X and Darwin, starting with Darwin 6.0 and Mac OS X v10.2. iODBC has been ported to several other operating systems and hardware platforms, including Mac OS 9, Linux (x86, Itanium, Alpha, MIPS, and ARM), Solaris (SPARC & x86), AIX, HP-UX (PA-RISC & Itanium), Compaq Tru64, Digital UNIX, Dynix, Generic UNIX 5.4, FreeBSD, DG-UX, and OpenVMS.
UnixODBC is now the most common Driver Manager for non-MS-Windows platforms (and one MS platform Interix). It was the first to offer full ODBC3 support and UNICODE. It is included with most Linux distributions now, including (for example) RedHat, Mandrake and Gentoo. Its used by several commercial database vendors for their own drivers, including IBM(DB2, informix), Oracle and SAP (Ingres). It includes GUI support for both KDE and Gnome. Its also used by many Open Source projects including OpenOffice.org and Glade. It builds on any platform that supports the GNU autoconf tools (so thats about all of them). Its licensed under the LGPL and GPL