Please choose your delivery country and your customer group
The main challenge facing the design of reliable distributed computing systems is maintaining data integrity in the presence of concurrency and failures. Atomic transactions, or actions, are a widely accepted solution to these two problems; they are serializable and recoverable, thus hiding concurrency and failures. Nested transactions are a generalization of the model of atomic transactions. Nested transactions, or subactions, provide a uniform mechanism for coping with failures and obtaining concurrency within an action. Execution of a nested action is synchronized with its creating action by halting the creator until the execution of its nested action terminates. This thesis proposes a new kind of nested action called a Disconnected Action (DA) that runs asynchronously with its creating action. Disconnected actions allow additional work to be done in parallel with the rest of the work in a nested atomic action system. Work done by a DA improves the performance of its creating action, but is not needed for the correctness of this action. This thesis shows how DAs semantics are achieved; existing mechanisms, such as the two-phase commit, are modified, and serial behavior of DA is ensured by a mechanism that uses timestamps to enforce static creation order, and tables to monitor and control dynamic serialization order of concurrent DAs. The thesis also proposes a technique that allows an action using DAs to commit in spite of some failures. Keywords: Distributed data processing; Disconnected nested transactions; Concurrency control.