Reconciling instead of aborting unsuccessful transactions in multiversion objectbases



This paper describes an architectural model to facilitate multiversion objects that are explicitly designed to enhance concurrency. The reader should be aware that version management has been used in the object literature in several ways, most commonly dealing with design issues. Our goal here is related to concurrency control and reliability, so care must be taken to ensure the reader is not misled by this overloading of terminology found in the literature. Within the context of concurrency the key aspects addressed by this paper are: 1) An architectural model is developed to support multiversioning that provides the well-known ACID transaction properties; 2) An optimistic concurrency control algorithm that functions on this architecture is described and demonstrated to be correct with respect to a correctness criterion; 3) The algorithm is enhanced to examine the history of past versions with the goal of inserting a committing transaction at a time earlier in the sequence when it would have been valid if other, later transactions had not been completed before this one attempted to commit; and 4) Based on static analysis information, other algorithms are developed to optimize the compiler in order to generate reconciliation procedures automatically from the initial transaction specification