



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式数据库管理系统的设计与功能模块间关系的探究敖 磊 1,任怀志2(1 大连理工大学城市学院网络工程教研室,辽宁大连 116600;2、沈阳职业技术学院计算机学院,辽宁沈阳 110021)摘要:嵌入式数据库管理系统是最近几年才兴起的一项新的数据管理技术。它以目前成熟的数据库技术为基础,实现了对嵌入式数据库中数据的存储、组织和管理。 本文详细分析了嵌入式数据库管理系统中实现的重点和难点。在实现的过程中,充分利用VxWorks 提供的各种接口,以提高嵌入式数据库管理系统的效率。关键词: EDBMS ;模块;接口The Design of the network module in the Emb
2、edded DatabaseManagement System1.AO LEI2.REN Huai-zhi( 1 City Institute,Dalian University of Technology,dalian liaoning116600)(2 shenyang Aeronautical Voation technical lnstiute,shenyang liaoning110021)Abstract: Embedded database system is an emerging data management technology in recent years. It b
3、ased on the mature database technologythe specific characteristics for embedded devices; and achieved the data storage, organization and management on embedded database. The thesis analyzed the priorities and difficulties of the design in the Embedded Database Management System. In order to improve
4、the efficiency of the system, the implementation utilized various interface provided by VxWorks.Key Words: EDBMS; Module; Interface一、 EDBMS 总体结构嵌入式数据库管理系统,也称为EDBMS 。它是由众多模块组成微型数据库管理系统。依据各个模块主要功能、功能间的依赖关系以及在EDBMS总体层次结构中所处的位置,可以从逻辑层面上将EDBMS划分为三个功能单元:EDBMS管理单元、EDBMS操作执行单元、 EDBMS操作执行单元1 。 EDBMS的总体模块划分如图
5、1 所示。用户应用SQL接口API接口SMBDE操作执行单元数属据EDBMS初始化模块性表索字表引列典排SMBDE操管操管序作理作理模模EDBMS异常处理模模模块监视模块块管理单元模块块块块EDBMS日志管理数据恢复 / 备份模块模块事务管理模块模块操作支持单元并发控制模块模块存储管理模块网络通信模块VxWorks 操作系统图 1EDBMS 总体模块设计一) EDBMS 管理单元管理单元充当了传统数据库系统管理员的角色。具体分为以下功能模块:1、初始化模块:完成EDBMS 的初始化工作。依据用户的定制,创建各个功能模块的对应任务;依据用户的参数配置,初始化公共数据结构,包括系统表、用户数据表等
6、;通过与日志管理模块的交互,决定是否有必要进行数据库状态的恢复(事务回滚 ) ;如果是在分布式环境下, 同时要求操作系统初始化通信设备,并依据同步策略的设定,初始化网络通信设备驱动。2、异常处理模块:负责对EDBMS 所有异常处理策略的选择。依据各个模块所报告异常情况的严重程度,可以将异常处理方式分为以下几种:1)系统级异常处理:此类异常属于特别严重的嵌入式数据库管理系统事件,诸如系统内存区不足、核心模块创建失败、用户指定配置无法实现等,多发生在系统初始化的阶段。一旦此类异常被触发,就会导致 EDBMS 释放整个系统的资源,再次尝试重新启动或是放弃启动。2)功能级异常处理:此类异常也大多发生在
7、系统启动期间,如数据字典文件丢失、日志文件丢失, 一些非核心模块的创建失败,会导致所要求的功能无法实现,在 EDBMS 运行期间, 由于用户数据文件的创建失败, 数据操作临时文件无法生成事务回滚失败、文件写错误等也会导致功能级异常的发生, 默认处理方式是保持系统的正常运行,联机日志但要求此功能的各项操作均返回失败。3)事务级异常处理:在 EDBMS 的运行期间, 要求对数据库的各种操作以事务来标识,由于种种原因导致的事务的夭折都被提交至异常处理模块,默认的处理方式是通知恢复模块进行事务回滚。3、日志管理模块:负责EDBMS 日志文件的增加,删除和归档等维护性操作。同时作为系统的联机日志,在系统
8、初启动时,要依据当前的状态决定是否需要进行恢复。调用EDBMS 存储管理模块进行实时的I/O 操作,记录本地日志文件,以维护系统的可靠性。如果在 EDBMS 中并没有配置恢复功能,那么日志文件作为一个机制将被自动裁减;4、监视模块:监视系统中各个模块的运行情况,选择在适当的时机进行I/O 操作。如果配置有网络通信模块,要求实时监控网络状况。综合各方信息, 判定系统是否已经处于死锁状态。 同时,监视模块也作为一个窗口,向用户提供当前嵌入式数据库管理系统的运行状态、配置情况。如果功能要求的更为复杂,那么一些统计信息、报表等也可以由它提供。二) EDBMS 操作执行单元操作执行单元对用户给出的各种数
9、据库操作请求的响应。相对于其他模块来说,处于较高层次,通过API 或是 SQL 接口直接面向应用。主要是进行表和索引的操作。具体有以下的模块:1、表操作模块:该模块负责接受针对用户数据表的增、删、改、查的基本功能。并且通过查找数据字典、系统表等的信息,验证该操作的可行性。如果可行,则向下层的事务模块提交请求。2、表排序模块:在用户表增加和删除记录后,都必须保证表中记录按照某个键值的有序性, 以利于提高查询效率。对表中记录进行了修改操作之后,往往会引起重新排序。把排序操作作为一个独立的优先级较低的事务予以提交,并由表排序模块控制。作为用户数据操作的一种附属动作,之所以将它单独提出一个模块予以实现
10、是考虑到其功能的独立性,以及对 I/O 的频繁操作。3、属性列操作模块:用户针对元数据的操作由该模块负责处理,如对字段的属性更改、增加、删除。4、索引管理模块:对应每一个用户数据表,都可以创立多个索引文件,以利于实现快速高效的数据查询。该模块可以根据需求为用户数据文件创建索引,并对所建立的索引文件进行维护。5、数据字典管理模块:用于维护整个数据库系统的核心数据结构数据字典。在数据库字典中记录了数据库基本的必备信息以及用户表之间的联系。三) EDBMS 操作支持单元操作执行单元是真正体现数据库特性的关键之所在。除了向操作执行单元提供服务,保证用户对数据库的访问,更重要的责任在于维护整个嵌入式数据
11、库系统的可靠性、数据一致性、安全性以及实现多个用户的并发访问。1)恢复 /备份模块:当事务进行回滚时,此模块按照进程日志的记录恢复数据到初始状态,以保证数据库回复的一致状态。备份的功能可以由监视机制按照指定原则适时进行或是由应用程序调用执行,作为提高嵌入式数据库系统可靠性的方法之一。2)事务处理模块:用户的每一种操作,都以一个或多个事务的形式提交。事务是保持数据库系统一致性的有效手段;3)并发控制模块:并发控制模型可采用“锁机制”和“时间戳”,以保证多个用户对数据的有效操作,保证数据的完整性;4)存储管理模块: 存储管理是实现数据库三种模式之间映射的基础。借助于文件系统,将物理存储上无组织、无
12、联系的二进制文本,在内存中映射到相应的数据结构中,以利于其他操作模块的访问;5)网络通信模块:为实现分布式计算环境下,用户访问数据的透明性,由网络通信模块对所访问的数据表进行定位,并以临时文件的形式提交存储管理模块,同时按照指定的策略进行数据同步2 。二、 EDBMS 对外接口EDBMS 作为一个有机整体,在嵌入式系统中充当应用软件中间件的角色,借助底层嵌入式操作系统所提供的服务,向上层的数据库应用程序提供有效的、标准的数据操作接口。所以,依据面向的对象不同,EDBMS 的对外接口可以分为以下两种:一)面向用户应用的接口用户应用程序对于数据库的操作不外乎两种:使用DML对数据、索引的操作和使用
13、DDL对元数据的操作3 。可以用一个简单的树型结构来描述这些操作,如图2 所示。用户 / 应用应用程序开发者DMLDDL数据元数据索引数据索引系统目系统表属性列文件文件录文件文件文件增加删除查找修改归并排序新建修改删除查找增加修改删除查找记录记录记录记录索引索引索引索引图 2EDBMS 面向应用的接口EDBMS以 API 的形式提供了进行数据库操作的一般功能,包括用户数据表的创建和删除,索引表的创建和删除,向用户数据表增加记录,打开、关闭用户表等。其中,需要注意的就是排序操作,它不但提供给用户,由应用程序决定对记录进行排序的时机, 也可以作为一个内部接口提供给系统管理单元的监视模块使用,由监视
14、模块控制在系统空闲时对已经发生更新的用户数据表进行排序。此外,在用户数据表更新到FLASH 中时,必须保证其有序性,所以在调用存储功能的时候,也有可能调用排序操作,这也是将排序功能单独作为一个模块设计的原因。二)面向操作系统的接口EDBMS 面向操作系统的接口,或者更确切的说,应该说是操作系统提供给EDBMS 的接口可以分为两类:1、宏定义EDBMS 提供给外部使用的宏定义包括调用API 函数所有可能的返回值和可配置的宏定义参数。 如 EDBMS 可同时打开的用户数据表,输出缓冲区的大小,结果集缓冲区的大小等等都是可配置的宏定义参数。当然, 如果用户需要修改这些默认的定义,必须对 EDBMS
15、进行重新编译。 根据具体的操作系统对这些宏定义参数的修改,可以获得更好的运行效率。若结果集缓冲区较大,那么查找在系统内存命中的概率就会上升,减小 I/O 操作的频率对提升EDBMS 效率至关重要。以下列出了一些重要的宏定义。#ifdef INCLUDE_EDBMS_MODULE#define EDBMS_COLUMN_NAME_MAX_LEN/* 属性列名称的最大值 */#define EDBMS_USERNAME_MAX_LEN/*用户名最大值 */#define EDBMS_USER_PASSWORD_MAX_LEN /*密码最大值*/#define EDBMS_USRTBNAME_MAX
16、_LEN /*用户表名字最大值*/#define EDBMS_USRTB_ID_MAX_VALUE /*用户表 ID 最大值 */#define EDBMS_USRTB_PATH_LEN /*用户表文件路径最大值*/#define EDBMS_MAX_COLUMN_NUM/* 用户表中属性的最大个数*/#define EDBMS_MAX_REC_NUM /*用户表中记录的最大个数*/#define EDBMS_USRTB_MAX_FD /*可同时打开最大的文件数*/#define EDBMS_USRTB_MAX_INDEXFILE_NUM/* 一个用户表可建立的索引表最大个数*/#define
17、 EDBMS_DATA_DICTIONARY_MAX_ITEM/* 数据字典表项数的最大值*/#define EDBMS_TRANSACTION_IDLE_STA TUS /* 事务空闲状态 */ #define EDBMS_TRANSACTION_COMMIT_STATUS /* 事务提交状态 */#define EDBMS_TRANSACTION_ABORT_SATATUS/* 事务夭折状态*/#define EDBMS_TRANSACTION_ROLL_STATUS /*事务回滚状态*/#define EDBMS_ERRORCODE_OPERATION_FAIL /*操作失败*/#def
18、ine EDBMS_ERRORCODE_BUFFER_OVERFLOW/* 数据缓冲区溢出*/#endif INCLUDE_EDBMS_MODULE2、 APIEDBMS基本功能的实现离不开嵌入式操作系统的有力支持。在设计的过程中,凡是VxWorks能够实现的功能都尽量交给操作系统完成,而不再提供其他的实现方式。这样做的好处在于提高EDBMS的执行效率,同时简化了设计开发的过程,但是,同时也增加了EDBMS与 VxWorks之间的耦合性,这样不利于EDBMS的移植。借鉴面向对象的思想,对一些常用的系统操作进行封装,在EDBMS的实现过程中, 调用这些被封装过的函数,相当于在操作系统与EDBMS
19、之间创建了一层“EDBMS虚拟机”,那么将来移植到其他类型的操作系统上,只要重新编制一个“EDBMS虚拟机”,嵌入式数据库管理系统就可以在新的环境中运行。EDBMS在实现的过程中主要使用了VxWorks的进程调度和进程间通信机制、内存管理、文件管理功能,那么对于操作系统功能的封装也主要集中在这些功能模块。EDBMS中事务管理模块根据用户的请求创建相应的事务进程,在事务结束后释放相应的资源。三、 EDBMS 模块间接口在讨论EDBMS模块间的接口之前,必须清楚地了解模块之间的依赖关系。4.1 节中给出了EDBMS的总体设计以及模块划分,图 3 主要展示各个模块之间的联系、消息交互以及功能调用4
20、。各个功能模块之间的交互可以采用以下两种方式:一)借助消息队列发送控制消息消息队列的方式只能用于进程级模块之间的通信,因为只有进程级模块采用消息队列。使用消息队列发送的大多数是控制消息。如在系统初启时, 初始化任务创建各个进程级模块,通过接收INIT_ACK同步各个模块的创建,并通知存储管理模块对系统和用户数据区进行初始化; 异常处理模块也是通过消息队列接收各个模块的告警信息;网络通信模块发送消息到事务控制模块,通知有分布式事务请求等等。消息格式的定义如下:初始化模块日日志文件系统文件并发控用户文件志制模块管理模块恢复/ 备份模块子事子事子事务1务2务N监视模块事务管理模块异常处数据字典管理模
21、块属性列操作模块理索引操作模块表操作模块表排序模块模块分布式事务存储管理模块网络通信模块进程级模块消息通信函数级模块函数调用数据区共享数据区图 3EDBMS 各功能模块的联系typedef structUINT8mType; /* 消息类型标识*/UINT8mLenTag;/*长、短消息标识*/UINT8mSendID; /*发送消息的进程号*/UINT8mRecvID; /*接受消息的进程号*/UINT16 mCode; /* 消息类型号*/UINT16 mCTRL; /*消息控制字段*/UINT16 mParaDByte; /*预留参数 */UINT8mParaByte1; /*预留参数*
22、/UINT8mParaByte2; /*预留参数*/UINT32 mLen;/*消息长度 */void*pktptr; /*长消息数据区*/EDBMS_MESSAGE;二)共享数据EDBMS 中,共享的数据缓冲区在系统初启时,由初始化模块申请并配置至一个可用状态,比如打开数据字典表、联机日志表、系统表、属性列表和一些指定的用户数据表等。这些文件存储在嵌入式设备的永久存储器当中,文件的组织格式也是各不相同。但是,一旦被调度至RAM中,就必须是各个功能模块可以识别的有用数据。数据定义就是用来刻画数据库的框架,是EDBMS管理和存取数据的基本依据。在EDBMS中数据结构的定义非常多,为了清晰起见,只
23、对其中比较重要的数据结构进行介绍。数据字典、属性列结构、用户表控制结构以及用户表记录结构将在5.1 节中详细介绍。下面主要介绍一下结果集结构。结果集是 EDBMS 中一个重要的数据结构,对EDBMS 的操作结果都是放在结果集中,用户获取操作结果的记录数据信息都必须通过结果集。若干结果集构成一个双向链表,称为结果集缓冲链表,具体定义如下。typedef structUINT32 EDBMS_Result_RecNO; /*结果集中的记录序号*/BOOL EDBMS_Result_V alid; /*该记录的有效标记*/UINT32 EDBMS_RecID; /*该记录在用户表中的记录号*/EDBMS_RESULT_RECITEM;/*结果集中每条记录的结构*/typedef struct _ EDBMS_RESULT_SET_UINT32 EDBMS_Result_ID; /*结果集ID */BOOL EDBMS_Result_Flag;/* 标记是中间集还是用户表的结果集*/UINT16
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 聚合纤维的防火性能考核试卷
- 煤炭矿区生态农业发展考核试卷
- 电力仪表的防护等级提升考核试卷
- 洗涤机械物联网平台建设与应用考核试卷
- 船舶改装施工安全与环境保护考核试卷
- 海洋油气钻采工程安全管理策略考核试卷
- 船用发电机励磁系统考核试卷
- 电力生产中的清洁能源替代策略考核试卷
- 玻璃医疗植入物开发考核试卷
- 公司终止协议合同书二零二五年
- 实验室安全自查表样表
- 哈弗H5汽车说明书
- 《机械设计基础》复习备考题库(含答案)
- 安全生产责任书安全制度
- xk5036数控立式铣床总体及横向进给传动机构设计论文大学本科毕业论文
- 小学五六年级青春期女生健康心理讲座PPT
- 分包合法合规宣贯(2017年6月)
- 空冷岛空冷机组管束更换施工方案
- 2023年大学生数学竞赛天津市试题参考及答案
- 世界地理-俄罗斯
- GB/T 31838.3-2019固体绝缘材料介电和电阻特性第3部分:电阻特性(DC方法)表面电阻和表面电阻率
评论
0/150
提交评论