ACID transactions are a classical tool that makes it easier to develop applications that operate correctly in the presence of failures and concurrency. Implementing a high-performance data store that supports ACID transactions is challenging. A complex internal data store component, the storage manager, consisting of interacting recovery and concurrency subsystems has to be implemented and tuned to achieve good performance.
A known limitation of high-performance transaction systems has been the lack of flexibility. For example, there was no way to add a new concurrency control scheme to exploit the semantics of a new application, or to add useful storage manager functionality such as consistent snapshots, without invasive, potentially destabilizing modifications of the data store internals.
These lectures present techniques for extending high-performance transactional systems in a modular way, without invasive modifications to data store internals. After reviewing the basic recovery and concurrency schemes for implementing high-performance ACID transactions, we focus on two extension frameworks, 1) adding type-specific concurrency control, without modification to the storage manager, using a two-level transaction system, and 2) a generic method for implementing a snapshot system in a modular way by deriving the snapshot system protocols from the native concurrency control and recovery protocols.
For each extension framework, we explain the key performance challenge, describe the algorithms addressing the problem, present the correctness arguments, and the implementation and experimental evaluation, and discuss the remaining open problems in the area.