Object Middleware for CMS

(The original version of these Middleware Pages is also available.)

With increasing use of relational databases in the grid environment, a need has arisen to complement these databases with software layers between the database and its clients. 

These layers solve the following problems:

  • Native drivers (i.e. OCI for Oracle, TDS for SqlServer, etc.) were not designed to operate efficiently in a WAN environment due to high network latencies.

  • Client software frequently contains database vendor specific code (native driver access) which makes it difficult to switch database vendors once projects are in motion.

  • Code layers that run on the client machines frequently contain table and column information from the relational schema.  If the database schema is modified, client code must also be modified.

  • Results from database queries are presented in forms somewhat unnatural for our target language, C++. 

We solve these problems by adding layers between the database server and its clients.  The first layer provides database vendor abstraction, allowing any relational (SQL) database to be plugged into the system.  The next layer provides an encapsulation of the results of a SQL query in a form natural to C++, namely STL (standard template library) map and vector objects.