Microsoft's Open Database Connectivity (ODBC) is an interface which allows the application to access the data via SQL. With this interface the application does not need to know wich DBMS it is working with. In order to access the data, some drivers implemented as DLL (dynamic link libraries) are used, which permits to choose a DBMS in particular (in runtime).
The ODBC architecture has 4 basic components:
This figure shows how these components interact with each other:
ODBC defines 2 kinds of drivers:
We now exemplify these concepts with the implementation over ODBC made by InterSoft S.A. to both kinds of Drivers.
In the Single-Tier configuration, as shown in the figure, we can find the application (for example, a spreadsheet working under Windows), the Driver Manager, the Driver and the data, over the same machine.
The spreadsheet will make a request to data access by the ODBC interface; the Driver Manager will select the adequate driver, in this case the one which accesses to the Ideafix database files, which will resolve the SQL statements as well as the data access. As it can be seen, the Driver is completely autonomous. It is designed to resolve the SQL statements and to access the data stored by Ideafix in the same environment. The Multiple-Tier configuration is more complex but adequate when one wants to handle big volumes of data. In this case, each one of the components can be held in the same machine; nevertheless a more frequent configuration puts the application, the Driver Manager and the driver in a machine (called client), and the database and its access software in another called server.
Under our implementation and in the client machine (working under Windows), there is a .DLL file (the driver) which builds the messages for the execution of the SQL statements. The driver sends them to the server and waits for its aswer to return them back to the application.
In the server (running under Unix), the data access software is divided in 2 components: the SQL server, which processes the SQL statements received from the driver (parsing, optimization, execution, etc.), and the Essentia database server, which resolves the requirements for the low level data access executed by the SQL server.
The following figure shows how each one of these components interact and how they are distributed in both machines:
As we can see, ODBC gives a simple mechanism which allows different configurations and interconections across platforms, and allowing the adoption of a Client-Server architecture (with one or more DBMSs) when handling big volumes of data.