嵌入式数据库管理系统的设计敖磊1 姜立秋2(1.大连理工大学城市学院计算机工程学院,辽宁大连,116600;2.大连理工大学城市学院计算机工程学院,辽宁大连,116600)摘要:本文设计了一种嵌入式数据库管理系统它以目前成熟的数据库技术为基础,针对嵌入式设备的具体特点,实现了对嵌入式数据库中数据的存储、组织和管理在论文的阐述当中,对嵌入式数据库管理系统中几个关键技术的设计和实现进行了研究这些研究对于应用于嵌入式数据库管理系统的研究具有很好的参考价值关键词:嵌入式;数据库管理系统;存储管理;并发控制;事务处理0 引言嵌入式数据库管理系统,也称为EDBMS,是由众多模块组成微型数据库管理系统在设计EDBMS的时,可以依据各个模块主要功能、功能间的依赖关系以及在EDBMS总体层次结构中所处的位置,将其核心划分为三个部分:存储管理、并发控制以及事务处理 [1]1 存储功能的设计思路数据库系统一般存在三种模式,即内模式、外模式以及概念模式EDBMS核心模块中的存储功能为这三种模式建立了很好的映射关系主流的嵌入式操作系统如VxWorks,由于具有很强的文件系统功能,因此可以利用这个特点完成系统文件和数据文件在内外存之间的读写操作。
另外,在分布式环境下还需要在EDBMS上实现有关网络通信功能的模块,可以称之为网络通信模块当系统运行时,存储管理模块可能要判断某个数据是来自于某个通信端口还是来自于本系统中的FLASH而网络通信模块可以通过建立一个统一的文件视图,在通信端口和内存间实现有效的映射,使存储模块不必关心某个数据文件的来源存储管理功能的设计需要注意三个问题[2]:其一,无论用户还是某个应用进程,对数据库系统的操作一般包括数据的增、删、改、查、并归和排序等在操作过程中,可能出现在内存中多次复制同样的记录的情况,这样会影响到系统的运行效率因此可以完成一个能够在操作结果和文件之间建立映射关系的结构体——结果集这个结构体的内容包括记录编号和文件FD当应用程序需要访问数据时,该结构体会根据其中的内容从打开的文件中取出其二,为了防止由于频繁的写FLASH造成EDBMS性能的下降,可以将页面中变动的内容暂存在内存中该页就被内核标记为脏页,内核将会在合适的时间如系统空闲或退出时把脏页的数据写到FLASH中去这样不仅可以提高系统的工作效率,还可以保持内存中的数据和FLASH中的数据是一致的其三,EDBMS是通过逻辑/物理地址转换功能实现数据库的外模式。
在系统中,用户数据文件是保存在内存中一片连续存储空间的二进制数值,而应用程序的操作对象是二维表,访问该数据记录时需使用表名、属性名和记录号因此存储管理功能的逻辑/物理地址转换功能要根据数据文件中的头结构等参数完成结构体的字段存储管理功能的工作流程如图1图1 2 并发控制功能的设计思路进行并发事务处理的主要目的是为了保证事务处理的一致性和冲突解决的高效性引起冲突的主要原因有两方面:第一是多个进程对同一个表项中的数据进行修改;第二是事务对数据先读后写造成的冲突在EDBMS中,为了使进程间能够很好地通信,可以运用“锁策略”实现多个并行的事务并发读取同一个数据资源即通过加锁的方法实现多个并行事务对同一个表进行读操作,但只能有一个事务对该表执行写操作的过程这两个方面分别通过“共享锁”和“排他锁”完成各个事务必须严格遵照“锁策略”的规则锁的操作分为上升阶段和释放阶段当一个事务运用“锁策略”向数据库提出操作请求时,EDBMS会产生,SubTransaction进程完成该操作这个时候为上升阶段;在整个操作执行结束后,将释放该进程,这个时候为释放阶段在并发处理功能中,如何解决死锁是十分重要的问题因此在EDBMS中可以引入死锁检测机制。
即首先认为所有事务的调度是串行的,不会产生死锁每个等待死锁的事务上都给定一个时间戳一旦有两个以上的锁节点上绝大部分的时戳超过了预设定的门限,既认为有死锁产生,即可通知监视模块,进行相关的处理3 事务处理功能的设计思路事务处理功能是嵌入式数据库管理系统十分重要的组成部分它的主要任务是调度、管理分布式数据库上运行的事务,负责子事务的初启与结束,并监督执行事务的状态有四种,分别是开始事务、提交事务、回滚事务和事务恢复[3]当用户的应用进程需要对数据库进行访问的时候,这样的操作必须在一个任务中进行每个任务中必然会有一个事务管理的操作,其主要作用是保证对数据的安全访问在事务开始时,必须申请事务将要用到的所有锁,当事务结束时,释放所有的锁 EDBMS事务处理功能要完成两个非常重要的工作首先,它要接受通过函数调用或通过消息机制的事务请求,根据操作类型产生相应的事务管理进程另外它还要按照可串行化调度的方法,依据系统表或用户数据表的不同,将每个具体的事务划分为若干“写”和“读”的序列同时,对于写事务产生相应的日志机制并协调日志管理模块的动作EDBMS产生的所有可并发的读事务和写事务,构成一个子事务空间,这些子事务访问文件视图(数据空间)完成整个事务的阶段性操作。
这个过程同时受到并发控制模块的管理事务处理功能的实现以及与其他功能模块的关系如下图所示:图24 模块间的交互在嵌入式数据库管理系统中常见的功能模块包括初始化模块、异常处理模块、日志管理模块、备份还原模块、监视模块、网络通信模块以及上面提到的系统核心中的三个功能模块模块之间的交互主要采用以下两种方式:借助消息队列发送控制消息和函数调用借助消息队列发送控制信息主要应用在进程级模块间的交互,比如初始化模块和其他各模块间均采用这种方法进行控制信息转发,这是因为消息队列只在进程级的模块中使用例如当系统启动的时候,初始化模块会通过消息队列发送INIT_ACK信号来同步各个模块的创建,并通知存储管理模块对系统和用户数据区进行初始化此外异常处理模块也是通过消息队列接收各个模块的告警信息在EDBMS内部,各个非进程级模块之间的交互一般采用函数调用的方法比如说对于用户表的操作模块往往会调用其他的四个模块,因为对于用户表的操作可能需要其他数据的支持,诸如数据字典、索引文件等此外,事务管理模块接受到用户请求后,也会调用操作支持单元的函数,创建相应的事务进程、子事务进程还有,就是子事务在执行的过程中,如果出现文件尚未打开的情况,这时会调用存储功能模块的全局函数,实现对用户文件的I/O。
[4]5 结束语 本文主要针对嵌入式数据库管理系统的核心功能以及各功能模块间的交互进行了论述嵌入式数据库管理系统作为一类系统软件,在设计时应严格遵循通用数据库管理系统软件一般应遵循的实用性、可靠性、先进性和易用性原则在设计嵌入式数据库管理系统时应该把握好专用性的度,以便于在实际应用时能根据具体的情况进行裁剪;而专用性是实现轻量型的基础参考文献[1] 龚崇超.嵌入式系统开发与应用.科技资讯.2006,2(18):122-123.[2] 王金刚,宫霄霖,杨锡劢.基于VxWorks的嵌入式实时系统设计.北京:清华大学出版社,2004.[3] 刘伟群.嵌入式系统及其应用技术特点.湖南人文科技学院学报.2004,21(02):69-71.[4] 苗雪兰,刘瑞新,宋会群.数据库系统原理及应用教程.北京:机械工业出版社,2004.The Design of the Embedded Database Management SystemAO Lei1, JIANG Liqiu2Abstract: This article has designed one kind of embedded database management system. It based on the mature database technology the specific characteristics for embedded devices, and achieved the data storage, organization and management on embedded database. Several key technologies designs and realized to the embedded database management system in has conducted the research. All these are of good reference value for the embedded database management system.Key Words: Embedded; Database Management System; Storage Management; Control Concurrent; Transaction Processing;作者简介:敖磊(1979—),男,辽宁省沈阳市人,硕士学位,大连理工大学城市学院讲师,主要研究方向----计算机网络、嵌入式技术;姜立秋(1964—),女,辽宁省本溪市人,硕士学位,大连理工大学城市学院副教授,主要研究方向----计算机技术、嵌入式技术;。