Skip to Main Content
Distributed applications that access persistent objects must maintain object state consistency even when failures are encountered during the manipulation of such objects. The basic transaction model, which has been implemented by several systems to ensure consistent executions of distributed applications, is not flexible enough to meet the requirements of many complex distributed applications. This has also been recognized for advanced database applications and, as a result, extended transaction models have been developed. We argue that distributed applications that manipulate long-lived data can benefit from such transaction models. We take an approach which views the various transaction models as policies for building robust applications. Thus, we advocate that the system implement several transaction models. A robust application can be programmed in such a system using a combination of several transaction models to meet its consistency requirements. We use applications from the domain of computer-supported cooperative work to motivate such an approach. We also develop a set of system-level mechanisms which can be used to implement multiple transaction models in a uniform manner. These mechanisms are used to implement nested, split, and cooperating transaction models. A prototype system that has been implemented is described to demonstrate the feasibility of this approach.