基于嵌入式内存数据库引擎的研究与设计
发布时间:2009/2/18 0:00:00 访问次数:1301
摘要: 磁盘数据的存取和传输到内存的速度一直是计算机系统的性能瓶颈。虽然现在磁盘转速和总线速度已经有了很大提高,但磁盘容量的大幅度增大又减缓了对其上数据的存取速度。本文介绍了嵌入式内存数据库技术发展的现状、定义、特点及面向3g平台嵌入式内存数据库引擎的具体设计方法实现。
1 嵌入式内存数据库技术发展的现状
数据库理论与技术的发展极其迅速,其应用日益广泛,在当今的信息社会中,它几乎无所不在。以关系型为代表的三大经典(层次、网状、关系)型数据库在传统的(商务和管理的事务型)应用领域获得了极大成功,然而它们在现代的(非传统)工程和时间关键型应用面前却显得软弱无力,面临着新的严峻的挑战,由此而导致了嵌入式实时数据库的产生和发展。在实时应用中,事务在运行前的操作逻辑(操作类型、顺序等)、数据集及其结构、行为以及时间的相关性等都是可预分析的。然而,对磁盘数据库而言,数据的i/o 是造成事务执行时间不确定、预报不准确的关键因素。为此,要求以大内存作为实时数据库的主要存储介质,使一个事务在活动期间没有i/o, 以达到较准确的预报,从而满足实时事务的定时限制。但这要解决两个问题,就是适当的数据安置和适时的内外存交换。随着内存技术的高速发展,内存数据库技术日益成熟,在非实时系统中也得到了广泛的应用。
内存数据库(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 事务处理
当内存数
摘要: 磁盘数据的存取和传输到内存的速度一直是计算机系统的性能瓶颈。虽然现在磁盘转速和总线速度已经有了很大提高,但磁盘容量的大幅度增大又减缓了对其上数据的存取速度。本文介绍了嵌入式内存数据库技术发展的现状、定义、特点及面向3g平台嵌入式内存数据库引擎的具体设计方法实现。
1 嵌入式内存数据库技术发展的现状
数据库理论与技术的发展极其迅速,其应用日益广泛,在当今的信息社会中,它几乎无所不在。以关系型为代表的三大经典(层次、网状、关系)型数据库在传统的(商务和管理的事务型)应用领域获得了极大成功,然而它们在现代的(非传统)工程和时间关键型应用面前却显得软弱无力,面临着新的严峻的挑战,由此而导致了嵌入式实时数据库的产生和发展。在实时应用中,事务在运行前的操作逻辑(操作类型、顺序等)、数据集及其结构、行为以及时间的相关性等都是可预分析的。然而,对磁盘数据库而言,数据的i/o 是造成事务执行时间不确定、预报不准确的关键因素。为此,要求以大内存作为实时数据库的主要存储介质,使一个事务在活动期间没有i/o, 以达到较准确的预报,从而满足实时事务的定时限制。但这要解决两个问题,就是适当的数据安置和适时的内外存交换。随着内存技术的高速发展,内存数据库技术日益成熟,在非实时系统中也得到了广泛的应用。
内存数据库(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 事务处理
当内存数
热门点击
- Linux设备驱动程序的函数跳转表
- PIE中断向量的映射方式
- Linux系统调用例程system_call
- PIE模块级中断
- 什么是Linux内核模块
- Linux系统调用接口、系统调用例程和内核服
- ARM复位原理
- Linux系统调用接口、系统调用例程和内核服
- Linux字符设备驱动程序的注册
- Linux外部设备的基本概念
推荐技术资料
- DFRobot—玩的就是
- 如果说新车间的特点是“灵动”,FQPF12N60C那么... [详细]