Stasis: Flexible Transactional Storage
📜 Abstract
An increasing range of applications requires robust support for atomic, durable and concurrent transactions. Databases provide the default solution, but force applications to interact via SQL and to forfeit control over data layout and access mechanisms. We argue there is a gap between DBMSs and file systems that limits designers of data-oriented applications. Stasis is a storage framework that incorporates ideas from traditional write-ahead logging algorithms and file systems. It provides applications with flexible control over data structures, data layout, robustness, and performance. Stasis enables the development of unforeseen variants on transactional storage by generalizing write-ahead logging algorithms. Our partial implementation of these ideas already provides specialized (and cleaner) semantics to applications. We evaluate the performance of a traditional transactional storage system based on Stasis, and show that it performs favorably relative to existing systems. We present examples that make use of custom access methods, modified buffer manager semantics, direct log file manipulation, and LSN-free pages. These examples facilitate sophisticated performance optimizations such as zero-copy I/O. These extensions are composable, easy to implement and significantly improve performance.
✨ Summary
Stasis proposes a bottom-up transactional storage framework intended to bridge the gap between monolithic DBMSs and application-specific storage systems. Its central contributions are user-defined redo/undo operations, composable transactional data structures, nested top actions for concurrent updates, customizable locking and buffer-management policies, and LSN-free pages based on deterministic blind updates. The evaluation reports competitive performance with Berkeley DB, more than 6,000 transactions per second in the reported high-concurrency hash-table experiment, up to a fourfold speedup over an in-process MySQL implementation for an object-persistence workload, and nearly doubled performance from object-persistence optimizations.
The paper’s documented research influence includes the bLSM project: the bLSM implementation was built on Stasis and reused its region allocator, buffer manager, and write-ahead logging support for metadata and space allocation. (awoc.wolski.fi) A separate line of work on “unbundled” database kernels cited Stasis as an example of placing access methods above a transactional layer and developed a related architecture that separates transactional coordination from data components. (microsoft.com) These references show concrete influence on subsequent research prototypes and database-architecture proposals. The sources reviewed do not establish broad commercial adoption of the Stasis implementation itself.