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>