How to Build a Non-Volatile Memory Database Management System论文总结

本文基于Peloton(基于NVM支持HTAP的DBMS),介绍了基于NVM构建一个数据库系统所涉及的关键模块,如下图所示。
How to Build a Non-Volatile Memory Database Management System论文总结
同时总结了每个关键模块的一些经典论文(具体论文见原文)
How to Build a Non-Volatile Memory Database Management System论文总结
对于Access Interface: Allocator Interface(内存分配器)需要保证数据的持久性, non-volatile pointers(重启后指针需仍有效,称作naming机制), 原子性。对于File System Interface, 文件系统通过支持DAX,提供了高效访问NVM的接口。
对于Storage Manager: 首先Access Method介绍了 B+tree index和hash为适应NVM所做的一些改变,比如B+树中叶子节点不排序,只进行叶子节点的持久化(恢复时内部节点进行重构),等;Logging and recovery,着重强调了其自己的WBL(write-behind log)工作,其先进行实际的数据写操作,然后再记log,记log的数据因为不包含实际的用户数据,所以数据量很小;同时,恢复时间也可以做到很快。Data Placement,由于数据有冷热的特性,传统基于操作系统基于页的管理不能很好的对冷热进行区分,故更好的方式是DBMS自己进行数据的冷热分离;对于DRAM-NVM-SSD的架构,此问题同样重要,本文简单介绍了两种方法。WBL可以用于DRAM-NVM-SSD的架构中。Replication 使用NVMe over Fabrics技术以减少网络传输带来的开销。论文期待产生为NVM定制的log技术,能在replication的中因为更少的NVM写而获得比WAL更好的性能(WBL在replication时,仍构建WAL进行传输)。
对于Execution Engine:Plan Executor之前的查询计划的算法的目的是为了更低的计算复杂度以及利用CPU cache。在NVM上还需要考虑减少NVM的写次数以应对NVM的读写不对称性以及NVM的有限的写寿命。其简单介绍了改良的hash-join algorithm,排序算法,等。Query Optimizer 在做代价估算的时候一般考虑顺序读写和随机读写上的差别,而没有考虑NVM上的读写不对称性,如在materialize和两阶段join需要考虑写操作的代价,等。SQL Extensions 可以选择哪些数据存储在NVM中。