Database systems are becoming increasingly multi-engine. In particular, a main-memory database engine may coexist with a traditional storage-centric engine in a system to support various applications. It is desirable to allow applications to access data in both engines using cross-engine transactions. But existing systems are either only designed for single-engine accesses, or impose many restrictions by limiting cross-engine transactions to certain isolation levels and table operations. The result is inadequate cross-engine support in terms of correctness, performance and programmability. This paper describes Skeena, a holistic approach to cross-engine transactions. We propose a lightweight snapshot tracking structure and an atomic commit protocol to efficiently ensure correctness and support various isolation levels. Evaluation results show that Skeena maintains high performance for single-engine transactions and enables cross-engine transactions which can improve throughput by up to 30x by judiciously placing tables in different engines.
翻译:特别是,主模数据库引擎可能与支持各种应用的系统中传统的以存储为中心的引擎同时存在。可取的做法是允许应用跨引擎交易访问两个引擎的数据。但现有系统要么只为单引擎接入设计,要么通过将跨引擎交易限制在某些孤立水平和表格操作上施加许多限制。结果是,在正确性、性能和可编程性方面,跨引擎支持不足。本文描述了Skeena,这是跨引擎交易的综合办法。我们提议了一个轻量级快照跟踪结构和原子承诺协议,以有效确保正确性并支持各种隔离水平。评价结果显示,Skeena保持了单引擎交易的高性能,并使得跨引擎交易能够通过在不同引擎中明智地放置表格来改进超过30x的吞吐量。