嵌入式内存数据库引擎的设计

嵌入式内存数据库引擎的设计,第1张

  1 嵌入式内存数据库技术发展的现状

  内存数据库(MMDB)把数据库的主拷贝(即“工作版本”)常驻在内存,使系统性能得到了极大的提高。但是,由于所有 *** 作直接作用于内存中的数据库主拷贝上,数据库极易受到 *** 作系统和应用软件错误造成的破坏,而且,数据库恢复所包含的I/O *** 作(如做日志、备份等)在事务运行不需要I/O *** 作的内存数据库系统中也显得极为突出。因此,内存数据库的恢复机制对系统性能有重要的影响作用,内存数据库的恢复较之传统的磁盘数据库的恢复要复杂得多,也关键得多。数据恢复是内存数据库可靠、实用的关键,恢复技术的研究已成为MMDB 研究领域最热门的课题。

  2 内存数据库的定义

  内存数据库的定义不应涉及内存的大小、存取数据所需I/O 的多少、数据何时进入及怎样才能留驻内存等这些具体的实现技术,而只包含数据库常驻内存(而不是磁盘)、事务(不是系统)的数据存取只涉及内存的意思。其本质特征是其“主拷贝”或“工作版本”常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。显然,它要求较大的内存量,但并不要求任何时刻整个数据库都能存放在内存,即内存数据库系统还是要处理I/O。传统的磁盘数据库即使缓冲区足够大,以致可以容纳所有数据也不能算是一个MMDB。因为它是针对磁盘特性、在数据库常驻磁盘的假定下设计的。例如,索引结构还是针对磁盘存取的,数据的存取仍必须经过缓冲区管理等。内存数据库的组织与管理要求新的适于内存特点的数据结构和算法,对于数据的组织与安置、数据库存取、内外存数据交换、查询处理及优化、并发控制及数据库恢复都需要研究新的策略与机制。

  内存数据库是一个较新的研究领域,结合各方面参考,现给出如下定义:

  定义:设有数据库DB,DBM(t)是t 时刻DB 在内存中的数据集,DBM(t)真包含于DB; T S 为所有事务的集合,A T(t)是t 时刻的活动事务集,A T(t)真包含于T S;D t(T)为T 在t 时刻的 *** 作数据集,D t(T)真包含于DB;若在任一时刻t,均有:

  对任一事务有T∈A T(t),D t(T)真包含于DBM(t)成立,则称DB 为一个内存数据库,简记为MMDB 。

  按此定义,MMDB 的“工作版本”(当然也可以是整个数据库)常驻内存,任何一个事务在执行过程中没有内外存间的数据I/O。显然,它需要一定的内存容量,但并不要求整个数据库都必须常驻在内存。

  3 内存数据库的特点

  3.1 内存数据库数据存储的组织和管理一个MMDB的逻辑整体主要由两个部分构成,即内存版本与外存版本。主存储器是易失内存,它存放MMDB的“工作版本”。它在逻辑上被划分为若干分区,一

  个分区用来存放一个关系的数据。每个分区又物理地由若干相互链接的块组成。一块是一个固定长度的连续区域,它是内外存I/O的单位,也是内存分配、回收以及对MMDB进行恢复的单位。索引与数据记录分离存放。

  NV-RAM(NO Vola TIle RAM)兼有内存读写速度快和在后备电池维护的情况下非易失的特点,但价格昂贵,不便插拔,广泛用于嵌入式系统,并可与Flash-RAM配合使用,充当Flash-RAM 写缓冲区。NV-RAM是主存储器的拓延,目前可用UPS、固态磁盘或磁盘Cache等实现。主存数据与NV-RAM数据一起统称为MMDB的“内存版本”。

  磁盘存储器用来存放未在内存的那一部分数据库数据,同时也用作数据库恢复的备份,我们称之为“外存版本”。为便于实现内外存间的数据交换,可将磁盘数据在逻辑上划分为与内存块同样长度的定长块,建立相同类型的索引。

  3.2 事务处理

  当内存数据库用于非实时系统时,除了日志和系统恢复的具体方式跟传统数据库差异比较大以外,事务处理过程与传统数据库的事务处理相似;然而,当内存数据库用于实时系统时,既实时内存数据库中,事务处理由于受到了时间上的限制,传统数据库的事务处理已经不再适用。传统的“ACID” 的事务概念及模型对实时事务不适合。实时事务表现出了许多不同的特征,如实时性和相关性。虽然实时事务的正确性与传统事务一样,也包括数据库状态正确性和事务执行正确性两个方面,但其含义与内容有很大的不同。在实时事务中,数据库状态正确性包含内部一致性和时间一致性,事务执行正确性则包含其结果正确性、行为正确性、结构正确性和时间正确性等。事务调度也要采取相关的实时调度算法。本文中讨论的内存数据库引擎针对非实时系统。

  3. 3 系统恢复

  数据库的备份是数据库的副本以及一些控制信息,在出现故障的情况下,可以随时用它进行恢复。数据库备份最小化了数据丢失,能够让您使用恢复过程,从备份副本中重新构造失败的数据库。有多种类型的失败导致需要恢复数据库。其中包括语句失败、用户错误、进程失败、数据库实例失败、媒介失败等。但不是所有类型的失败都需要进行人工交互。但是,在内存数据库系统中,由于所有 *** 作都直接作用于内存中的数据库主拷贝上,数据库极易受到 *** 作系统和应用软件错误造成的破坏,因此MMDB的恢复技术如备份、检验点(Checkpoint)和重启动(restart)等都较常规的磁盘数据库(DRDB)复杂。人们从体系结构、事务提交、日志系统到备份、检验点算法等各个方面进行了大量的研究和探索。日志管理是内存数据库恢复机制中至关重要的一环。由于内存有易失性,日志最好保存于另一稳妥的介质上(如磁盘、非易失内存等),而对日志的I/O *** 作又将在某种程度上影响MMDB的性能,可能成为瓶颈影响系统的事务吞吐量。为此,人们研究了各种各样的解决办法,比如构造非易失内存用于保存部分日志;采用“成组提交”的技术,使用影子内存技术等来解决日志瓶颈问题。在检验点方面,为了提高系统效率,通常力图使检验点 *** 作和事务处理同时进行。为了提高速度指标和综合性能,MMDB系统往往利用附加的硬件设备如非易失内存、专用的日志处理器、检验点处理器等来支持高效、快速的数据恢复。

  

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2713041.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存