Object Middleware for
CMS
The first layer is implemented using an industry standard
technology called ODBC. This
software usually takes the form of a driver manager on each client, into
which are plugged driver modules for specific databases. The client
software makes API function calls against the driver manager libraries,
which translates these vendor independent calls into appropriate database
vendor specific calls.
The second layer is comprised of two packages, namely OTL and
libodbc++. These
packages are used interchangeably depending on the client platform.
They both accomplish the same function, which is to provide templates or
libraries allowing easy encapsulation of SQL result sets into STL
objects.
Our first implementation of these tools are in a specific
CMS project, the Grid Enabled Analysis Environment (GAE). As part of
this project, we convert large amounts of SQL data into ROOT trees. We would like to provide
the isolation layers mentioned above for this project, and we target our
client code into a heterogeneous environment (Redhat 6.2, 7.1, Solaris,
Win32, etc.).
The pieces of middleware layers, as mentioned above are:
-
1. Driver Manager: On Linux, Sun we use software
from either unixODBC, or iODBC. On Win32, the
driver manager comes pre-installed.
-
2. ODBC Drivers: We target initially Oracle and
SqlServer. On Win32, both these driver are supplied by the
respective database vendors. On *nix, these packages are supplied
for SqlServer by FreeTDS and for
Oracle by an open
source project archived at Fermilab.
Sample source code for the GAE SQL to ROOT converter can be
found here.
Next>