内存数据库系统,NVDIMM和数据持久性
主要存储器。目前有多家供应商可以提供NVDIMM。我们使用AgigA Tech公司的产品对eXtremeDB进行了测试,因为我们非常熟悉AgigA公司的母公司--赛普拉斯半导体。同时我们把测试仅限于AgigA的NVDIMM(比如没有测试来自VikingTechnology和Smart Modular Technologies公司的NVDIMM),这主要是因为我们的时间和资源非常有限。因此本文中提到的测试只是从概念上证明,内存数据库系统可以与NVDIMM一起作为存储器,达到与使用传统DRAM相当的性能,并且能够利用NVDIMM的恢复功能恢复由于系统故障“丢失的”内存数据库。
测试还解决了在同时要求低延时和数据可恢复性的应用中使用内存数据库系统时经常出现的另外一个问题,即采用事务日志记录的内存数据库系统在多大程度上能保持其性能优于基于磁盘的数据库管理系统?对于后面这些涉及永久存储器 (内存数据库系统的事务日志存储,以及在采用磁盘上的数据库管理系统情况下的整个数据库)的测试,存储“设备”包含了用AGIGARAM NVDIMM配置的RAM盘。下面给出了使用RAM盘而不是传统硬盘或固态硬盘的理由。
测试中使用的AgigA Tech公司NVDIMM是设计用于Intel的Romley和Grantley平台(采用Sandy Brdige、Ivy Bridge、Haswell和Broadwell处理器架构)的。McObject在Intel Oak Creek Canyon参考主板中使用了4GB AGIGARAM DDR3-1600 NVDIMM,以及Intel奔腾双核CPU 1407 @ 2.8 GHz处理器和8GB的金士顿普通DDR3-1333 DRAM,运行的是Debian Linux 2.6.32.5操作系统。
测试应用程序执行5次数据库操作,每次循环构成一个数据库事务,并包含至少两个操作实例(见图2)。基准应用程序记录在两种数据库类型中的每一个(磁盘上的数据库管理系统和带事务日志的内存数据库系统,或“IMDS+TL”)和两种内存(NVDIMM和传统DRAM)情况下每毫秒完成的循环次数。测试应用程序使用了eXtremeDB自己的C/C++应用编程接口(API)。
图2:测试应用程序操作。
支持数据库恢复的测试应用程序代码可以充分利用eXtremeDB功能,而这种功能原本是增加来用于支持电池供电型RAM作为存储器。这种功能可以在系统重启后重新连接到NVRAM管理的eXtremeDB数据库,启动任何必需的清零工作,然后恢复正常工作。应用程序的恢复算法假设分配作为MCO_MEMORY_ASSIGN_DATABASE的数据库内存器件的内存块可以在应用程序崩溃或电源故障之后重新使用,方法是用另外的标志MCO_DB_OPEN_EXISTING重新打开它。
基准测试结果
从故障恢复是通过重启测试系统中间执行程序进行测试的。当系统恢复后,测试程序自动重新启动,访问前故障状态的eXtremeDB数据库(在恢复时,NVDIMM已经将数据库从闪存加载到DRAM),检查数据库的一致性并恢复操作,并从与系统重启之前使用的相同NVDIMM存储空间访问数据库。
在比较将NVDIMM用作主内存的“pure”内存数据库系统(没有事务日志)和使用传统DRAM的相同数据库配置下速度的测试中,两种存储类型之间的任何差距都是可以忽略的。待测所有数据库操作--插入、更新、删除、索引搜索和表格遍历--的性能差异都在所用测量技术的误差范围之内。有人可能将这种等效性归因于加载进CPU缓存的完整数据库,以及在那里发生而不是在DRAM或NVDIMM那里发生的数据访问。然而,接近12MB的测试数据库尺寸大大超过5MB的CPU缓存大小,测试应用程序则依靠随机密钥从数据库中寻找随机页。
剩余测试专注于事务日志对内存数据库系统性能的影响。内存数据库供应商提供事务日志来减轻“pure”内存数据存储的易失性。然而,事务日志要求永久存储(进行记录),这会影响到内存数据库系统的性能。正是出于这个理由,内存数据库系统供应商经常被问到,他们的产品性能在采用事务日志部署时是否仍然超过磁盘上的数据库管理系统。
上述测试力求回答这个问题。用于永久存储的“硬盘”实际上是一个将NVDIMM用作内存的RAM盘(基于内存的磁盘类存储器)。这种做法一方面是想进一步测试AgigA Tech公司的产品(也就是说,为了确认它是否能创建RAM盘,并有一个数据库系统能与它交互),另一方面也是想证明采用事务日志的内存数据库系统性能为何能够超过磁盘上的数据库管理系统。
除了它们使用的存储器件(磁盘上的数据库管理系统用的是硬盘或固态硬盘,内存数据库系统用的是DRAM)外,内存数据库系统与磁盘上的数据库管理系统还有很重要的区别。内存数据库系统取消了缓冲管理、文件I/O和传统数据库管理系统架构中固有的其它开销源。取消硬盘--代之以
- 基于虚拟仪器的特性测试参数数据库的设计(06-24)
- 嵌入式数据库在Java中的应用(03-03)
- SQLite嵌入式数据库系统的研究与实现(02-20)
- 嵌入式移动数据库系统中的数据查询(02-21)
- Linux EXT3下删除MySQL数据库的数据恢复(05-26)
- 嵌入式移动数据库与Agent技术(03-01)