The linguistic primitives, defined in ASSET, are: delegate(trans1, trans2, obj_or_op), permit(trans1, trans2, obj, ops), and form_dependency(dep, trans1, trans2). Here dep is a commit or abort dependency, op, ops is an operation or operations, and obj is an object. Work on ACTA shows how to synthesize various advanced transaction models with these primitives.
Implementing permit and form_dependency is fairly straightforward. Delegate is harder because it affects recovery, by allowing the "rewriting of history." Delegating trans1's operation op to trans2 makes it appear as if op was originally executed by trans2. The fate of op is now tied to that of trans2, so that e.g. op's effects will not be undone if trans1 aborts. Realizing delegation entails allowing usually invisible transaction-management data to be seen by the transactions themselves.
We propose an algorithm (RH, for Rewrite History) that achieves the effect of rewriting history without rewriting the history, i.e., the log, resulting in implementations that realize the semantics of delegation at minimal additional overhead and incur no overhead when delegation is not used. RH shows it is feasible to support delegation efficiently, in an industrial-grade transaction management system, such as ARIES or EOS.
We have continued our research into supporting advanced transaction models by focusing on the issues surrounding recovery.
Back to the Database Systems Home Page
If you have any comments on this page or need further information, please
cris @ cs · umass · edu
Last Update: 1996