Forum OpenACS Q&A: Response to What makes a network efficient AND robust?

Collapse
Posted by Andrew Piskorski on
Jerry, first of all, I don't know. But I do have a few thoughts.

First of all, why do you consider this thing they want you to help build to be a "network layer"?

It sounds like what you need is some kind of ACID-compliant RPC interface. Maybe you can call that a "network layer", but it sounds more like an application protocol to me.

Gray and Reuter's book Transaction Processing (TP) talks a fair amount about distributed transactions and transaction monitors.

Unfortunatley, TP can be kind of hard to understand, because all its examples discuss really old mainframe software like IMS (a hierarchal database from IBM), CICS (a transaction processing monitor from IBM), and LU6.2 (an IBM de facto standard which "defines a protocol to invoke remote transactional servers"). I'd never even heard of most of those before reading the book. We are talking some truly ancient software here. For example:

IMS is the dominant database and data communications system in use today [1992] - it has most of the data. It began in the late 1960s as an inventory tracking system for the U.S. moon landing effort.   [...]   Today, the typical IMS system has thousands of terminals distributed around the world, driving a large multiprocessor system with a disk-based database in the 100 GB range. There are only about 10,000 such systems, but they form the core transactions processsing systems of virtually all large corporations.

Links in TP back to the familiar RDBMS-oriented world of Oracle and PostgreSQL are slim to nonexistant. For example, DB2 is mentioned only in the context of IMS ("DB2 is IBM's implementation of SQL on its mainframes. It acts as a resource manager for either IMS, CICS, or porgrams running without any transaction monitor.") And Oracle is mentioned only in a single sentence in, in the discussion of sequence numbers.

Interestingly, although this has nothing to do with the topic at hand, TP also notes that Optimistic Locking via Timestamps - which I think is what Oracle and PostgreSQL do - is merely a degenerate and inferior version of "Field Calls":

One of the intersting things about locking exotics is the vast literature. It is possible for experts to be completely ignorant of some major branch of the field. Optimistic schemes are an example. They were invented five years after field calls were being sold on the street and, in fact, are less general than field calls. Optimistic methods differ from field calls in only the following:   [...]   These are rather degenerate predicates and transforms.

Anyway, there must be other ways to fulfill your requirement, but I think what you probably want is a Transactional (ACID compliant) Remote Procedure Call interface. What all the (potentially scary) design implications of that are, or what the proper way to go about building such a thing is, I have no idea...