摘要
该论文解决了两个问题:
- 如何将记录迁移到冷存储以及从冷存储迁出。
- 如何以事务一致的方式读取和更新冷存储中的记录。
论文提出了三个新颖的想法,并详细阐述了每个想法的实现方法:
- 统一的接口,向高层隐藏记录的物理位置:通过冷存储、访问过滤器、私有缓存和更新备忘录之间的协作实现。
- 最小化访问二级存储带来的开销:每个事务拥有自己的私有缓存。
- 热存储与冷存储之间的无缝迁移:系统在事务中使用插入和删除操作执行迁移。
分析与实验结果:论文在 YCSB 基准测试和多步骤读/更新工作负载上评估了 Siberia 的性能,得出以下结论。在现实的客户端延迟下,吞吐量损失仅为 3%。即使在极高的冷数据访问率下,内存中的 Siberia 机制也仅带来较低的性能损失。当实时迁移激活时,系统性能保持稳定。访问备忘录的开销较大,这意味着备忘录清理对于提高性能很重要。在冷数据访问率为 5% 和 10% 的现实场景下,只读事务的性能损失分别为 7% 和 14%,这是可接受的。对于纯更新事务,5% 的冷数据更新导致 8% 的吞吐量损失,10% 的冷数据更新率导致 13% 的吞吐量损失,同样可接受。在 YCSB 工作负载下,随着访问偏斜度降低以及内存与数据库大小比例增加,性能会下降;与写密集型工作负载相比,读密集型工作负载在更高的偏斜率下表现出更低的事务中止率。
论文优势
- 论文提供了全面的文献综述。在 HEKATON 存储与索引 部分,论文简要概述了 HEKATON 的索引和数据存储结构及其基于 MVCC(多版本并发控制)的读写操作。在 RELATED WORK 部分,论文分析了现有数据库系统如何处理冷数据,解释了 Hyper 使用虚拟页管理冷数据,Stoica 等人提出将热冷数据分离到不同的内存位置。最后,论文描述了反缓存(anti-caching)的工作原理,并指出了其两个缺点:节省空间有限和重复执行。
- 论文详细描述了将 SIBERIA 集成到 HEKATON 后的工作原理。它展示了数据迁移到冷存储期间使用的两种事务的工作流程。插入和更新操作确保数据被放入热存储,以避免检查冷存储的开销。删除和读取操作利用更新备忘录中的通知执行并发控制和冲突检测。冷存储清理也由更新备忘录驱动,这使得可以及时从冷存储中移除对任何活跃事务都不可见的记录。此外,验证阶段也利用更新备忘录中的通知,并计算
TsBoundSer
以确保可串行化事务的正确性,从而增强了幻读检测。 - 论文呈现了相对全面的实验。实验基于 YCSB 基准测试和多步骤读/更新工作负载,这可以测试 Siberia 在不同工作负载下的性能。此外,论文评估了 Siberia 的纯内存开销、运行实时迁移的开销以及访问冷记录路径上更新备忘录的开销。并且,在 YCSB 工作负载下,展示了工作负载偏斜度、内存与数据库大小比率与工作负载性能之间的关系。
论文不足
- 论文未在代码层面描述 Siberia 集成到 HEKATON 的过程,仅提到了在数据处理和存储机制层面进行集成。它详细描述了冷数据迁移过程,并解释了插入、删除、读取和更新操作中的更新备忘录通知如何与 HEKATON 的版本控制和并发控制协作。然而,论文未涉及 Siberia 如何在代码层面(如识别核心函数、代码段及相应修改)集成到 HEKATON。这一缺失使得读者难以轻松复现 Siberia。因此,论文至少应提供代码修改的概要说明。
- 在 Synthetic End-to-End Workload 部分,论文未讨论中等至高冷数据访问率下的吞吐量损失。论文仅展示了在 5% 和 10% 冷数据访问率下的吞吐量损失,并声称这些是现实的冷数据访问率。首先,在 Read-Only Transactions 部分,论文未能说明是哪个报告或文献支持 5% 和 10% 是“真实的冷数据访问率”。其次,即使假设上述数据是准确的,论文也未描述当冷数据访问率超过 10% 时,吞吐量损失如何变化。这一缺失使读者无法全面了解 Siberia 处理工作负载的性能。因此,论文应解释“现实的冷数据访问率”是如何确定的,并描述在中等至高冷数据访问率下吞吐量损失的变化情况。
- 论文未讨论 Siberia 的性能限制或其性能可能下降的条件,尽管实验部分展示了令人印象深刻的性能。这种优异的性能可能是以高硬件利用率(如高 CPU 使用率)为代价获得的。或者,将 Siberia 集成到 HEKATON 中虽然增强了热冷数据处理能力,但可能损害了 HEKATON 原有的某些特性。因此,论文应阐明 Siberia 性能可能下降的情形。