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

MySQL源码分析
yzs87

 

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

内容

“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/

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值