Strict Histories in Object-Based Database

In order to ensure the simplicity of recovery in an object-based database system environment, the notion of a strict history containing operations that are semantically richer than read and write operations is of vital importance. A strict history is one in which recovery for aborted operations can be performed by simply executing their inverse operations. In this paper, we develop concurrency control schemes based on commutativity between operations and inverses of operations for efficiently ensuring that histories are strict. We show that in schemes based on commutativity, the time complexity for scheduling an operation for execution is linear in the number of operations that have neither committed nor aborted in the history. We also utilize the weakest precondition of operations in order to state necessary and sufficient conditions for ensuring that scheduling an operation for execution preserves the strictness of histories. The schemes based on weakest precondition exploit state information of objects and thus, provide a higher degree of concurrency than commutativity-based schemes. Since strict histories ensure the simplicity of recovery, Our schemes for ensuring histories are strict can be used in conjunction with concurrency control schemes that ensure serializability, such as two-phase locking and serialization graph testing, in object-based systems.