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

网友投稿 463 2023-04-16

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

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

数据库理论与技术的发展极其迅速,其应用日益广泛,在当今的信息社会中,它几乎无所不在。以关系型为代表的三大经典(层次、网状、关系)型数据库在传统的(商务和管理的事务型)应用领域获得了极大成功,然而它们在现代的(非传统)工程和时间关键型应用面前却显得软弱无力,面临着新的严峻的挑战,由此而导致了嵌入式实时数据库的产生和发展。在实时应用中,事务在运行前的操作逻辑(操作类型、顺序等)、数据集及其结构、行为以及时间的相关性等都是可预分析的。然而,对磁盘数据库而言,数据的I/O 是造成事务执行时间不确定、预报不准确的关键因素。为此,要求以大内存作为实时数据库的主要存储介质,使一个事务在活动期间没有I/O,以达到较准确的预报,从而满足实时事务的定时限制。但这要解决两个问题,就是适当的数据安置和适时的内外存交换。随着内存技术的高速发展,内存数据库技术日益成熟,在非实时系统中也得到了广泛的应用。

2 内存数据库的定义

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

定义:设有数据库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进行恢复的单位。索引与数据记录分离存放。

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

3.2 事务处理

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

3. 3 系统恢复

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:区块链是ID数据库保护的最佳方案吗
下一篇:如何在Oracle数据库中找出损坏索引?
相关文章