非易失性内存技术及数据库

 

非易失性内存技术及数据库

内容

2013 年开始这个项目的研究,当时不确定非易失性内存技术是否可商用。 2019 Intel 商用了 NVM 产品, NVM 对下一代数据库系统的影响吸引了广大研究者” --Joy Arulraj Andrew Pavlo

采访了《 非易失性内存数据库管理系统 》的作者:Joy Arulraj Andrew Pavlo 。谈论了非易失性内存 NVM 技术及 NVM 对下一代数据库系统的影响。

Q1 :非易失性内存技术是什么?

Arulraj,Pavlo :他是一种广泛的技术,包括相变内存和忆阻器。具有低延迟读、堪比 DRAM 的写速度,并具有持久特性和堪比 SSD 的大存储容量。市场上 Intel 基于 3D XPoint 技术 [1] 出产了傲腾 DC NVM 模块的产品。

Q2 :基于易失性内存和持久内存的数据库管理系统有哪些潜在的变化?

Arulraj,Pavlo :现有的数据库管理系统分为两大类: 1 )面向磁盘; 2 )面向内存。面向磁盘的数据库管理系统和 1970 年代的第一代关系数据库基于的假设相同,比如 IBM R 系统。基于两层存储,用易失性的内存比如 DRAM 作为缓存,使用慢速、非易失的块设备作为持久存储器,比如 SSD 。这些系统基于一个悲观的假设:事务可以访问不在内存中的数据,为了访问磁盘上数据需要很长延迟。采用传统技术,比如沉重的并发控制机制来客服这些限制。

     最近出现的商品化产品大大扩展了单机DRAM 内存。但是面向磁盘的数据库系统并不是针对数据全部驻留在内存场景而设计。针对 NVM ,面向磁盘数据库许多部件都显得冗余。

     相反,面向内存的数据库架构假设所有数据都在内存,因此不需要慢速、面向磁盘的部件。因此面向内存的数据库优于面向磁盘的数据库。但是由于DRAM 易失,系统崩溃后,为了恢复仍需要沉重的部件。随着 NVM 的出现,面向磁盘和面向内存的数据库架构都将发生颠覆性影响。

Q3 :现存的数据库管理系统为什么不能充分利用 NVM 技术优点?

Arulraj,Pavlo NVM 特性有:

1 )可字节寻址: NVM 和其他非易失性存储(仅支持以块为单位进行数据传输)不同,支持字节可寻址。

2 )高速写负载:相比 SSD NVM 写速度能高一个数量级。更重要的是随机写和顺序写差距很小。

3 )读写不对称。某些 NVM 技术,写会比读花费的时间长。另外,过度写单个内存单元会损坏它。

    NVM 优点显而易见,在数据库系统中充分利用他们非常重要。我们对面向磁盘和面向内存数据库在 NVM 上进行了评估,他们性能差不多。当前数据库管理系统假设内存是易失的,因此他们的架构需要将数据持久化到持久设备。这说明为充分利用 NVM 特性,需要重构数据库管理系统。

Q4 :利用 NVM ,哪些传统数据库系统部件不是必要的?

Arulraj,Pavlo :针对 NVM ,需要重新设计数据库系统的几个关键部件: 1 )日志和恢复协议; 2 )存储和 buffer 管理; 3 )索引数据结构

举例说明日志和恢复协议。一个数据库系统需要确保数据的完整性。更新操作的事务在返回应用成功前,需要将其数据持久化到持久设备如SSD 。这样的存储设备比 DRAM 慢,尤其在随机写上,只支持以 block 为单位的传输。

事务处理过程中,如果在提交前需要覆盖数据库内容,那么必须执行随机写到磁盘。通过将随机写转换成日志顺序写来提高数据库性能。

NVM 颠覆了 WAL 协议的设计,因为他支持快速的随机写。因此我们需要为 NVM 重新定制新协议。例如 write behind logging WBL )。 WBL 不仅能提高性能,也能使崩溃重启恢复时快速完成。 WBL 追踪数据库哪些部分发生更改,而不是如何更改。用这样的日志方法,数据库可以不将数据记录到日志,直接将其刷写。通过排序写到 NVM ,确保事务持久性和原子性,使每个事务写更少数据,提高 NVM 设备生命周期。

Q5 :你们已经设计开发了适配 NVM 的数据库系统存储引擎,关键模块是什么?

Arulraj,Pavlo :传统的数据库系统基于两层架构: DRAM+SSD 。这些设备具有各自的硬件特性和约束,传统数据库系统架构基于减少这些影响的设计。例如依赖于这些设备,维护两种元组布局。由于 DRAM 字节寻址并高效处理随机读写,所以内存中的元组可以报考 non-lined 字段。而存储在 SSD 上的元组只存在 inlined 字段以避免随机写。为分摊访问持久设备的开销,这些引擎通过批量写入和刷新的方法进行延迟操作。然而,在具有 NVM 的存储层次结构的系统中,许多这样的技术将不再是必要模块。我们采用传统引擎的存储和恢复机制以利用 NVM 的特性。

例如,采用in-place update NVM-aware 存储引擎。当一个事务插入一个元组的时候,不需将其拷贝到 WAL 中以备恢复等,这个存储引擎只需要在 WAL 中记录一个元组的非易失指针即可。这非常高效,因为指针和元组都存储在 NVM 上。因此系统重启后,可以通过指针访问元组,而不需要回放 WAL 。同样将索引作为非易失的 B+tree ,系统重启后无需重建可立即访问。因为事务提交时,修改立即持久化,所以系统重启后提交的事务也是持久的。因为内存控制器刷写对于的 cache lines 时机不确定,所以未提交事务进行的修改可能也持久化了。因此存储引擎需要通过 WAL 回滚这些事务。由于恢复协议不包含 redo 处理流程,和传统存储引擎相比 NVM-aware 引擎具有更小的恢复延迟。

Q6 :这边书的要点是什么?

Arulraj, Pavlo: 这本书介绍了适配NVM 的关键算法和数据结构,不仅提升性能和减小操作消耗,而且简化了开发和崩溃恢复时间。我们的项目从 2013 年开始。我们也不太确定 NVM 技术是否能落地,但是 2019 intel 基于 3D Xpoint 技术的傲腾系列使之商品化。我们对 NVM 对下一代数据库系统的影响感到兴奋。

原文

http://www.odbms.org/blog/2019/05/on-databases-and-non-volatile-memory-technologies-interview-with-joy-arulraj-and-andrew-pavlo/


请使用浏览器的分享功能分享到微信等