What is ODBC, and why is it important?
Open Database Connectivity, ODBC for short, is an Application Programming Interface (API) for developing and deploying Database Management System (DBMS) independent applications and services i.e., applications and services that a loosely-coupled (rather than tightly-coupled) to a DBMS backend.
Although originally created by Microsoft for the Windows Platform, this API is now available across macOS, Linux, and many other Unix variants — courtesy of open source projects such as iODBC and unixODBC.
Conceptual Framework
ODBC has a development and runtime component to is conceptual workings.
Development
Development components comprises the following:
- Libraries
- Header Files
ODBC development occurs on two fronts across two distinct developer profiles:
- Application Developer — who uses the components above to bind an application to ODBC
- ODBC Driver Developer — who uses the components above to bind a specific backend DBMS to ODBC.
Runtime
At runtime, as part of user experience, ODBC provides a middleware layer for loosely-binding an application to a chosen backend DBMS via the following components:
- ODBC Administrator
- ODBC Driver Manager
- ODBC Driver
ODBC Administrator
This is the component responsible for managing Data Source Names (DSNs) in relation to target Drivers associated with a specific DBMS backend.
It is also responsible for adding and removing Drivers while also providing a conduit to a call tracer and logger for troubleshooting interactions between Applications and Drivers.
ODBC Driver Manager
Based on a Printer Manager UI/UX pattern, an ODBC Driver Manager provides an interface at runtime for associating an Application with a target Driver and backend DBMS combination via a DSN — no different to selecting a Printer Name for a Printing job from a Spreadsheet, Word-processing tool, or Desktop DBMS tool.
This UI/UX functionality is provided visually on Windows and macOS (via iODBC), Qt or GTK UI-framework implementations on Linux (via iODBC), or HTML (via OpenLink ODBC Drivers).
ODBC Driver
An ODBC Driver is a piece of runtime software that implements ODBC calls by via lower-level APIs (a/k/a call level interfaces) associated with a specific DBMS.
It’s important to note that an Application can be bound directly to an ODBC Driver from an application, but at the expense of the loose-coupling facilitated by Driver Manager — with regards to mixing and matching different combinations of application and target DBMS backends at runtime.
Related
- Microsoft ODBC Specification in Github
- OpenLink ODBC Drivers Blog
- OpenLink ODBC related posts from Universal Data Access (UDA) Drivers Web Site
- OpenLink Universal Data Access (UDA) Drivers Web Site Homepage
- OpenLink ODBC Related Posts
- Installation and Configuration of the Lite Edition (Single-Tier) ODBC Driver for Oracle Data Sources, for Windows
- Lite Edition ODBC-JDBC Bridge Installation Guide (macOS)
- ODBC-JDBC Bridge Installation Guide (Lite, Windows)
- Lite Edition ODBC-JDBC Bridge Installation Guide (Unix/Linux)
- Installing the Multi-Tier “Enterprise” Edition Generic Client ODBC Drivers (Windows)
- Installing the Multi-Tier “Enterprise” Edition Generic Client ODBC Drivers (Mac)
- Using ODBC from Node.js via OpenLink ODBC Drivers
- Using the Oracle Data Integrator (ODI) 12.2.1 with Microsoft Excel Data, via the OpenLink JDBC-to-ODBC Bridge Drivers
- New 32- and 64-Bit ODBC SDK & Runtime for macOS
- Windows Client-side ODBC Traces and Driver Debug Logs Creation
- macOS Client-side ODBC Traces and Driver Debug Logs Creation
- Using a Semantic Web of Linked Data to Enhance ODBC, JDBC, ADO.NET, & OLE DB Data Sources
- Getting Started with the OpenLink Single-Tier (Express or Lite Edition) ODBC Drivers for MySQL
- ODBC Connection from macOS to Microsoft SQL Server on Azure
- ODBC Connection from macOS to MySQL on Azure
- ODBC Connection from macOS to PostgreSQL on Azure
- OpenLink 64-Bit ODBC Connection from Windows to Microsoft SQL Server on Azure
- Virtuoso ODBC, JDBC, and ADO.NET Drivers for the LOD Cloud Knowledge Graph
- Accessing Virtuoso using PyODBC on macOS or Linux