嵌入式数据库管理系统的设计

点赞:5940 浏览:21024 近期更新时间:2024-02-24 作者:网友分享原创网站原创

摘 要:设计了一种嵌入式数据库管理系统,它以目前成熟的数据库技术为基础,针对嵌入式设备的具体特点,实现了对嵌入式数据库中数据的存储、组织和管理.对嵌入式数据库管理系统中几个关键技术的设计和实现进行了研究,对于应用于嵌入式数据库管理系统的研究具有很好的参考价值.

关 键 词 :嵌入式数据库;数据库管理系统;存储管理;并发控制;事务处理

中图分类号:TP391 文献标识码:A 文章编号:1672-7800(2012)003-0169-02

作者简介:敖磊(1979-),男,辽宁沈阳人,硕士,大连理工大学城市学院讲师,研究方向为计算机网络、嵌入式技术;姜立秋(1964-),女,辽宁本溪人,硕士,大连理工大学城市学院副教授,研究方向为计算机技术、嵌入式技术.

0 引言

嵌入式数据库管理系统,也称为EDBMS,是由众多模块组成微型数据库管理系统.在设计EDBMS时,可以依据各个模块主要功能、功能间的依赖关系以及在EDBMS总体层次结构中所处的位置,将其核心划分为3个部分:存储管理、并发控制以及事务处理.1 存储功能的设计思路

数据库系统一般存在3种模式,即内模式、外模式以及概念模式.EDBMS核心模块中的存储功能为这3种模式建立了很好的映射关系.主流的嵌入式操作系统如VxWorks,由于具有很强的文件系统功能,因此可以利用这个特点完成系统文件和数据文件在内外存之间的读写操作.另外,在分布式环境下还需要在EDBMS上实现有关网络通信功能的模块,可以称之为网络通信模块.当系统运行时,存储管理模块可能要判断某个数据是来自于某个通信端口还是来自于本系统中的FLASH.而网络通信模块可以通过建立一个统一的文件视图,在通信端口和内存间实现有效的映射,使存储模块不必关心某个数据文件的来源.

存储管理功能的设计需要注意3个问题,其工作流程见图1.

(1)无论用户还是某个应用进程,对数据库系统的操作一般包括数据的增、删、改、查、并归和排序等.在操作过程中,可能出现在内存中多次复制同样的记录的情况,这样会影响到系统的运行效率.因此可以完成一个能够在操作结果和文件之间建立映射关系的结构体――结果集.这个结构体的内容包括记录编号和文件FD.当应用程序需要访问数据时,该结构体会根据其中的内容从打开的文件中取出.

图1 存储管理功能的工作流程

(2)为了防止由于频繁的写FLASH造成EDBMS性能的下降,可以将页面动的内容暂存在内存中.该页就被内核标记为脏页,内核将会在合适的时间如系统空闲或退出时把脏页的数据写到FLASH中去.这样不仅可以提高系统的工作效率,还可以保持内存中的数据和FLASH中的数据是一致的.

(3)EDBMS是通过逻辑/物理地址转换功能实现数据库的外模式.在系统中,用户数据文件是保存在内存中一片连续存储空间的二进制数值,而应用程序的操作对象是二维表,访问该数据记录时需使用表名、属性名和记录号.因此存储管理功能的逻辑/物理地址转换功能要根据数据文件中的头结构等参数完成结构体的字段.

2.并发控制功能的设计思路

进行并发事务处理的主要目的是为了保证事务处理的一致性和冲突解决的高效性.引起冲突的主要原因有两方面:①多个进程对同一个表项中的数据进行修改;②事务对数据先读后写造成的冲突.

在EDBMS中,为了使进程间能够很好地通信,可以运用“锁策略”实现多个并行的事务并发读取同一个数据资源.即通过加锁的方法实现多个并行事务对同一个表进行读操作,但只能有一个事务对该表执行写操作的过程.这两个方面分别通过“共享锁”和“排他锁”完成.各个事务必须严格遵照“锁策略”的规则.


锁的操作分为上升阶段和释放阶段.当一个事务运用“锁策略”向数据库提出操作请求时,EDBMS会产生,SubTransaction进程完成该操作.这个时候为上升阶段;在整个操作执行结束后,将释放该进程,这个时候为释放阶段.

嵌入式数据库管理系统的设计参考属性评定
有关论文范文主题研究: 关于嵌入式的论文范文数据库 大学生适用: 在职研究生论文、学院论文
相关参考文献下载数量: 25 写作解决问题: 写作技巧
毕业论文开题报告: 文献综述、论文总结 职称论文适用: 技师论文、职称评副高
所属大学生专业类别: 写作技巧 论文题目推荐度: 免费选题

在并发处理功能中,如何解决死锁是十分重要的问题.因此在EDBMS中可以引入死锁检测机制.即首先认为所有事务的调度是串行的,不会产生死锁.每个等待死锁的事务上都给定一个时间戳.一旦有两个以上的锁节点上绝大部分的时戳超过了预设定的门限,即认为有死锁产生,就可通知监视模块,进行相关的处理.

3.事务处理功能的设计思路

事务处理功能是嵌入式数据库管理系统十分重要的组成部分.它的主要任务是调度、管理分布式数据库上运行的事务,负责子事务的初启与结束,并监督执行.事务的状态有四种,分别是开始事务、提交事务、回滚事务和事务恢复.

当用户的应用进程需要对数据库进行访问时,这样的操作必须在一个任务中进行.每个任务中必然会有一个事务管理的操作,其主要作用是保证对数据的安全访问.在事务开始时,必须申请事务将要用到的所有锁,当事务结束时,释放所有的锁.

EDBMS事务处理功能要完成两个非常重要的工作.首先,它要接受通过函数调用或通过消息机制的事务请求,根据操作类型产生相应的事务管理进程.另外它还要按照可串行化调度的方法,依据系统表或用户数据表的不同,将每个具体的事务划分为若干“写”和“读”的序列.同时,对于写事务产生相应的日志机制并协调日志管理模块的动作.EDBMS产生的所有可并发的读事务和写事务,构成一个子事务空间,这些子事务访问文件视图(数据空间)完成整个事务的阶段性操作,这个过程同时受到并发控制模块的管理.事务处理功能的实现以及与其他功能模块的关系见图2.

4.模块间的交互

在嵌入式数据库管理系统中常见的功能模块包括初始化模块、异常处理模块、日志管理模块、备份还原模块、监视模块、网络通信模块以及上面提到的系统核心中的3个功能模块.模块之间的交互主要采用以下两种方式:借助消息队列发送控制消息和函数调用.

图2

借助消息队列发送控制信息主要应用在进程级模块间的交互,比如初始化模块和其他各模块间均采用这种方法进行控制信息转发,这是因为消息队列只在进程级的模块中使用.例如,当系统启动的时候,初始化模块会通过消息队列发送INIT_ACK信号来同步各个模块的创建,并通知存储管理模块对系统和用户数据区进行初始化.此外异常处理模块也是通过消息队列接收各个模块的告警信息.

在EDBMS内部,各个非进程级模块之间的交互一般采用函数调用的方法.比如说对于用户表的操作模块往往会调用其他的四个模块,因为对于用户表的操作可能需要其他数据的支持,诸如数据字典、索引文件等.此外,事务管理模块接受到用户请求后,也会调用操作支持单元的函数,创建相应的事务进程、子事务进程.而且子事务在执行的过程中,如果出现文件尚未打开的情况,这时会调用存储功能模块的全局函数,实现对用户文件的I/O.

5.结束语

针对嵌入式数据库管理系统的核心功能以及各功能模块间的交互进行了论述.嵌入式数据库管理系统作为一类系统软件,在设计时应严格遵循实用性、可靠性、先进性和易用性原则.在设计嵌入式数据库管理系统时应该把握好专用性的度,以便于在实际应用时能根据具体情况进行裁剪,而专用性是实现轻量型的基础.