新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 内存数据库系统,NVDIMM和数据持久性

内存数据库系统,NVDIMM和数据持久性

作者:时间:2016-09-12来源:网络收藏

测试应用程序执行5次操作,每次循环构成一个事务,并包含至少两个操作实例(见图2)。基准应用程序记录在两种类型中的每一个(磁盘上的数据库管理系统和带事务日志的内存数据库系统,或“IMDS+TL”)和两种内存(和传统DRAM)情况下每毫秒完成的循环次数。测试应用程序使用了eXtremeDB自己的C/C++应用编程接口(API)。

图2:测试应用程序操作。

支持数据库恢复的测试应用程序代码可以充分利用eXtremeDB功能,而这种功能原本是增加来用于支持电池供电型RAM作为存储器。这种功能可以在系统重启后重新连接到NVRAM管理的eXtremeDB数据库,启动任何必需的清零工作,然后恢复正常工作。应用程序的恢复算法假设分配作为MCO_MEMORY_ASSIGN_DATABASE的数据库内存器件的内存块可以在应用程序崩溃或电源故障之后重新使用,方法是用另外的标志MCO_DB_OPEN_EXISTING重新打开它。

基准测试结果

从故障恢复是通过重启测试系统中间执行程序进行测试的。当系统恢复后,测试程序自动重新启动,访问前故障状态的eXtremeDB数据库(在恢复时,已经将数据库从闪存加载到DRAM),检查数据库的一致性并恢复操作,并从与系统重启之前使用的相同存储空间访问数据库。

在比较将NVDIMM用作主内存的“pure”内存数据库系统(没有事务日志)和使用传统DRAM的相同数据库配置下速度的测试中,两种存储类型之间的任何差距都是可以忽略的。待测所有数据库操作--插入、更新、删除、索引搜索和表格遍历--的性能差异都在所用测量技术的误差范围之内。有人可能将这种等效性归因于加载进CPU缓存的完整数据库,以及在那里发生而不是在DRAM或NVDIMM那里发生的数据访问。然而,接近12MB的测试数据库尺寸大大超过5MB的CPU缓存大小,测试应用程序则依靠随机密钥从数据库中寻找随机页。

剩余测试专注于事务日志对内存数据库系统性能的影响。内存数据库供应商提供事务日志来减轻“pure”内存数据存储的易失性。然而,事务日志要求永久存储(进行记录),这会影响到内存数据库系统的性能。正是出于这个理由,内存数据库系统供应商经常被问到,他们的产品性能在采用事务日志部署时是否仍然超过磁盘上的数据库管理系统。

上述测试力求回答这个问题。用于永久存储的“硬盘”实际上是一个将NVDIMM用作内存的RAM盘(基于内存的磁盘类存储器)。这种做法一方面是想进一步测试AgigA Tech公司的产品(也就是说,为了确认它是否能创建RAM盘,并有一个数据库系统能与它交互),另一方面也是想证明采用事务日志的内存数据库系统性能为何能够超过磁盘上的数据库管理系统。

除了它们使用的存储器件(磁盘上的数据库管理系统用的是硬盘或固态硬盘,内存数据库系统用的是DRAM)外,内存数据库系统与磁盘上的数据库管理系统还有很重要的区别。内存数据库系统取消了缓冲管理、文件I/O和传统数据库管理系统架构中固有的其它开销源。取消硬盘--代之以RAM盘--可以消除因存储器件的物理操作引起的开销,从而突出内存数据库系统的流线型设计的延时效应,它比磁盘上的数据库管理系统更为复杂的处理强得多。

测试表明,对于插入、更新和删除操作来说,采用事务日志的内存数据库系统性能明显超过传统磁盘上的数据库管理系统(同样,两者都使用RAM作为它们的“永久”存储)。图3显示了每种配置条件下单位为循环/毫秒的结果,以及通过IMDS+TL所表现出来的性能翻倍。举例来说,在数据库删除测试中,IMDS+TL要比磁盘上的数据库管理系统快12.77倍。图3还显示了关闭事务日志、让eXtremeDB作为将NVDIMM用作主存的“pure”IMDS进行操作的性能影响。

图3:结果。

数据库索引搜索和表格遍历表明,在从磁盘上的数据库管理系统转移到IMDS+TL时,几乎没有性能上的变化。这种结果是在预料之中的,因为与插入、更新和删除操作相比,这种数据库“读取”操作不会改变数据库内容,在性能方面的成本通常低得多。

讨论

NVDIMM在用作内存数据库系统存储器时可以匹配传统DRAM的速度,同时提供完整的内存数据库持久性。那么为什么还有人要用带延时诱导事务日志的内存数据库系统呢?这里有多种理由,包括成本,因为GB规模的NVDIMM成本要大于DRAM;想要使用非Intel Romley和Grantley的平台;要求的数据库大小(AgigA Tech公司的NVDIMM支持高达128GB的总内存容量)。如上述数字所示,增加事务日志实现数据持久性将降低内存数据库系统的性能,但IMDS+TL组合在插入、更新和删除操作时仍能超越传统磁盘型数据库管理系统的性能。

今后用户会遇到的另外一个问题是他们所选的内存数据库系统是否支持将NVDIMM用作主要内存。如前所述,McObject的eXtremeDB内存数据库系统包括许多功能--在产品开发早期就加入的,用于支持与电池供电型RAM的交互--这些功能可以用NVDIMM平顺地恢复数据库。使用没有这些功能的内存数据库系统可能导致更高的复杂性,并且在实现可工作的解决方案之前需要很大的开发和测试工作量。

另外值得注意的是,本文讨论的数据库持久性--也就是确保数据库和所有提交的事务能在发生系统故障事件时得到恢复--有别于高可用性,或不停工操作的能力。虽然两种技术都是想帮助数据库经受住故障,但如前所述,高可用性通常是通过复制实现的,故障转移时间单位是毫秒。相反,持久性--带事务日志的内存数据库系统或将NVDIMM用作主存所能达到的--不保证消除停工时间。使用NVDIMM或事务日志进行数据库恢复通常是自动的,但两者最有可能的使用场景是在意外的系统宕机之后,这意味着冷重启(如重新启动)这样的时长为分钟级的过程。开发人员在考虑用这些技术克服易失性问题时应该理解数据库高可用性和持久性之间的区别。



关键词: 数据库 NVDIMM

评论


相关推荐

技术专区

关闭