嵌入式数据库管理系统的设计(修改稿)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

嵌入式数据库管理系统的设计敖磊1姜立秋2(1.大连理工大学城市学院计算机工程学院,辽宁大连,116600;2.大连理工大学城市学院计算机工程学院,辽宁大连,116600)摘要:本文设计了一种嵌入式数据库管理系统。它以目前成熟的数据库技术为基础,针对嵌入式设备的具体特点,实现了对嵌入式数据库中数据的存储、组织和管理。在论文的阐述当中,对嵌入式数据库管理系统中几个关键技术的设计和实现进行了研究。这些研究对于应用于嵌入式数据库管理系统的研究具有很好的参考价值。关键词:嵌入式;数据库管理系统;存储管理;并发控制;事务处理0引言嵌入式数据库管理系统,也称为EDBMS,是由众多模块组成微型数据库管理系统。在设计EDBMS的时,可以依据各个模块主要功能、功能间的依赖关系以及在EDBMS总体层次结构中所处的位置,将其核心划分为三个部分:存储管理、并发控制以及事务处理[1]。1存储功能的设计思路数据库系统一般存在三种模式,即内模式、外模式以及概念模式。EDBMS核心模块中的存储功能为这三种模式建立了很好的映射关系。主流的嵌入式操作系统如VxWorks,由于具有很强的文件系统功能,因此可以利用这个特点完成系统文件和数据文件在内外存之间的读写操作。另外,在分布式环境下还需要在EDBMS上实现有关网络通信功能的模块,可以称之为网络通信模块。当系统运行时,存储管理模块可能要判断某个数据是来自于某个通信端口还是来自于本系统中的FLASH。而网络通信模块可以通过建立一个统一的文件视图,在通信端口和内存间实现有效的映射,使存储模块不必关心某个数据文件的来源。存储管理功能的设计需要注意三个问题[2]:其一,无论用户还是某个应用进程,对数据库系统的操作一般包括数据的增、删、改、查、并归和排序等。在操作过程中,可能出现在内存中多次复制同样的记录的情况,这样会影响到系统的运行效率。因此可以完成一个能够在操作结果和文件之间建立映射关系的结构体——结果集。这个结构体的内容包括记录编号和文件FD。当应用程序需要访问数据时,该结构体会根据其中的内容从打开的文件中取出。其二,为了防止由于频繁的写FLASH造成EDBMS性能的下降,可以将页面中变动的内容暂存在内存中。该页就被内核标记为脏页,内核将会在合适的时间如系统空闲或退出时把脏页的数据写到FLASH中去。这样不仅可以提高系统的工作效率,还可以保持内存中的数据和FLASH中的数据是一致的。其三,EDBMS是通过逻辑/物理地址转换功能实现数据库的外模式。在系统中,用户数据文件是保存在内存中一片连续存储空间的二进制数值,而应用程序的操作对象是二维表,访问该数据记录时需使用表名、属性名和记录号。因此存储管理功能的逻辑/物理地址转换功能要根据数据文件中的头结构等参数完成结构体的字段。存储管理功能的工作流程如图1。VxWorks文件系统FLASH文件存储区数据文件1数据文件2…………数据文件N通信端口缓冲区通信端口1通信端口2…………通信端口3网络通信处理模块监视模块定位到文件逻辑地址-内存地址转换EDBMS对表项操作(表名、偏移)(文件描述符偏移)RAM空间文件视图1文件视图2…………文件视图N存储消息接收模块EDBMS系统文件表名-文件描述符映射结果集……查询修改图12并发控制功能的设计思路进行并发事务处理的主要目的是为了保证事务处理的一致性和冲突解决的高效性。引起冲突的主要原因有两方面:第一是多个进程对同一个表项中的数据进行修改;第二是事务对数据先读后写造成的冲突。在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.TheDesignoftheEmbeddedDatabaseManagementSystemAOLei1,JIANGLiqiu2Abstract:Thisarticlehasdesignedonekindofembeddeddatabasemanagementsystem.Itbasedonthematuredatabasetechnologythespecificcharacteristicsforembeddeddevices,andachievedthedatastorage,organizationandmanagementonembeddeddatabase.Severalkeytechnologiesdesignsandrealizedtotheembeddeddatabasemanagementsysteminhasconductedtheresearch.Alltheseareofgoodreferencevaluefortheembeddeddatabasemanagementsystem.KeyWords:Embedded;DatabaseManagementSystem;StorageManagement;ControlConcurrent;TransactionProcessing;作者简介:敖磊(1979—),男,辽宁省沈阳市人,硕士学位,大连理工大学城市学院讲师,主要研究方向----计算机网络、嵌入式技术;姜立秋(1964—),女,辽宁省本溪市人,硕士学位,大连理工大学城市学院副教授,主要研究方向----计算机技术、嵌入式技术;

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功