Object Middleware for
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.