基于嵌入式的数据库管理系统设计与实现

基于嵌入式的数据库管理系统设计与实现

ID:21992148

大小:54.00 KB

页数:6页

时间:2018-10-26

基于嵌入式的数据库管理系统设计与实现_第1页
基于嵌入式的数据库管理系统设计与实现_第2页
基于嵌入式的数据库管理系统设计与实现_第3页
基于嵌入式的数据库管理系统设计与实现_第4页
基于嵌入式的数据库管理系统设计与实现_第5页
资源描述:

《基于嵌入式的数据库管理系统设计与实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于嵌入式的数据库管理系统设计与实现1引言随着计算机技术的快速发展,嵌入式系统广泛的应用于办公自动化、消费、通信、工业控制和军事等领域中。本文设计一个嵌入式内存数据库管理系统。该数据库平台的目标为在公司级平台的层面上结合当前已经初具规模的嵌入式操作系统平台及统一X管平台,提供通信行业嵌入式内存数据库体系框架和规范的研制。2系统设计与现实2.1系统体系结构系统的体系结构如图1:图1嵌入式数据库系统体系结构图从图1我们可以将嵌入式数据库管理系统分为三大模块:(1)外壳用户可以直接调用内部的API接口函数和SQL接口函数,也可以通过接口函数来进行数据库管理。数据库应用程序位于DBMS

2、之外,它处理的是数据库应用,是DBMS与终端用户的中间层,数据管理应用开发人员在这一层工作,它使用EDB提供的API调用。数据库系统向上提供的API供数据库应用开发人员使用,它抽象出了对数据的统一操作,屏蔽了下层的实现细节;其具体实现由下层决定。其功能主要是对API输入进行有限处理,将需要处理的用户输入转化为数据库内部可处理的数据结构。(2)内核这部分是整个系统的核心,包含了嵌入式数据库的所有核心功能。主要有:系统管理、事务管理器等。2.2数据表示和存储功能设计与实现1、二维表结构数据结构根据嵌入式数据库基本功能的特点,设计时将系统中涉及的数据分为数据表,数据表索引,资源队列三

3、大类。并由此定义了系统的3大类核心数据对象:二维表对象(Tableobject)、表索引对象(Indexobject)和队列对象(Queueobject)。对于每一种核心对象,都有相应的对象特征描述来规定该对象的共有特性以及对象的基本方法。每一种基本对象的某个实例在系统中用唯一的一个16位整数标识,这个整数称为对象的句柄(Handle)。2、对系统中存储管理设计的改进与实现一个数据库包含有许多表,每个表在内存中采用虚拟文件来存储,所谓虚拟文件就是一块连续的存储空间,通过记录存储空间的开始地址、结束地址及维护空闲链表,可以对一个表的存储空间进行有效管理。但是,这样一来管理表空间会

4、带来一些问题。首先,在恢复机制实现的时候脏数据的粒度是表级的,undo时的开销很大。其次,在事务并发控制机制的实现中,加锁的粒度也是表级的,并发程度不理想。改进的虚拟文件:将虚拟文件的连续存储空间划分为多个页面,一条页面可以存储多个记录。页面大小的选择,可以根据记录的大小及记录数来取。这样,当修改一条记录时,只需要将这条记录所在的页面修改到虚拟文件中即可。3、接口提供的函数cache_init缓冲初始化:将为表分配全部页面,并加到该表Hash缓冲表中,同时初始化Hash节点。cachefree缓冲清空:释放Hash表的所有页面,然后释放Hash表的空间。cache_load装载

5、文件:从磁盘中将表对应的文件数据全部读到Hash表的相应页面(节点)。cacheflush写文件:将Hash表中的脏节点链表中数据写到磁盘对应的文件。cache_addpg扩展页面:Hash表空间管理算法,生成一个新的节点。cache_freepg删除页面:删除Hash表中对应的页面,并对脏节点链表处理。cache_getpg读一页:读取指定一页的内容cache_pgout写一页:将指定一页的数据写到文件中。2.3数据库系统的事务管理设计与实现1、事务处理的设计思路可以将系统中所有任务的事务状态分为三种:开始提交(向日志文件提交修改过的数据页面)、正在提交(向数据文件提交修改过

6、的数据页面)和事务空闲(没有开始事务)。事务处理包括开始事务、提交事务、回滚事务和事务恢复等功能。多任务的事务提交必须是互斥的,因为日志文件只有一个。当回滚事务时,必须将日志(任务日志)中所有修改过的数据页面从文件中重新刷新。当提交事务时,必须将日志(任务日志)中所有修改过的数据页面写入FLASH中及系统日志文件中。事务的恢复是指系统非正常关闭,并且有一个事务正在提交,当数据库重新启动时自动进行的。将日志文件中的所有数据修改到数据文件中,当成功后,清空日志文件。2、数据库系统中的日志设计思路系统采用了redo日志实现方式。在整个系统中存在两种概念的日志:FLASH上的系统日志文

7、件和RAM上的任务日志(记录本任务修改过的页面号),系统日志文件只有一个,多个任务共享互斥使用;任务日志每个任务一个,用于记录本任务的修改操作。对每一个任务,都有一个日志记录任务所修改过的文件和数据页面号,当提交事务时,依据任务日志记录的内容记录系统日志,当回滚事务时,应根据任务日志恢复所有修改过的数据页面。3、提供的接口函数(1)写系统日志文件:将任务日志写到数据库文件(2)写数据文件:将修改的页面写到对应的数据文件中(3)刷新任务日志:将内存中的任务日志刷新3结语实现一个高效的嵌入式数据

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。