Integrating the ArsDigita Community System with Mainframe Data
part of the ArsDigita Community System
by Philip Greenspun
At most large companies, the most useful information is held by
transaction systems running on an IBM mainframe of some sort, e.g., an
S/390. The ACS-backed Web service per se isn't as interesting to
an end-user as the access to data or transaction opportunities. For
example, consider www.fedex.com.
What users value is the ability to find out the current location of
their package, not interaction with other users or any pure Web service.
Approach 1: have AOLserver talk to the mainframe
AOLserver comes with drivers for a bunch of RDBMSes, including a driver
for the Solid RDBMS, whose C library is basically the same as ODBC (and
therefore libraries from companies like
http://www.openlinksw.com/
and
http://www.merant.com/ (used to be
InterSolv)
will work). AOL publishes a document entitled "Developing Database
Drivers for AOLserver" at
http://www.aolserver.com/server/docs/3.0/html/dr-app.htm#3527.
It takes a good C programmer only a few days to write a database driver
for AOLserver and the result is typically 500-1000 lines of code.
Remarkably, there is nothing in the AOLserver database pooling system
that says the database has to be relational or interpret SQL.
The database management system to which you're talking ought to return a
cursor and then you page through row-by-row and/or just grab one row at
a time. It ought to have some kind of ASCII query language. It ought
to be running on the same machine as AOLserver or have some facility to
be queried over TCP/IP.
Making AOLserver talk directly to an RDBMS or other DBMS on the
mainframe works great if all you want to do is display pages of
information from the mainframe or send user data back to the mainframe.
However, if you want to combine queries or transactions with a local
Oracle RDBMS and some kind of DBMS on the mainframe, it might be better
to take the next approach.
Approach 2: have Oracle talk to the mainframe
AOLserver knows how to talk to Oracle. Oracle knows how to talk to
virtually any database management system in the world, via the Oracle
Procedural Gateways (see http://www.oracle.com/gateways/html/procedural).
If you need to query from your local Oracle and include or exclude rows
depending on what's in the mainframe, an Oracle Procedural Gateway is a
convenience. If you want to do an atomic transaction where you
are guaranteed that a local operation and a mainframe operation will
either both commit or both rollback, the Procedural Gateway is
essential.
Note: AOLserver is free and open-source. It runs on any computer with a C
compiler. Oracle runs on most mainframes. So you could just move
everything to the mainframe and serve all the Web pages from there.
Not too many companies would choose to do this, however.
philg@mit.edu