嵌入式数据库系统在ACR中的应用研究
2008-07-24
作者:朱 玉, 贺 磊, 张 研, 明
摘 要: 研究了嵌入式数据库" title="嵌入式数据库">嵌入式数据库系统的体系结构、数据结构及存储机制,并提出了嵌入式数据库实现的关键技术。
关键词: 嵌入式数据库 数据模型 存储机制 关键技术
随着嵌入式应用向分散化、小型化的方向延伸,智能的网络设备(如交换机、路由器)、PDA、SmartPhone、信息家电等越来越多地走进了人们的生活。类似这些对信息量要求不大,可以方便存取数据的环境都需要一个小的数据库管理系统管理信息,这就有了嵌入式数据库的需求。在大规模汇聚路由器系统性能与关键技术研究(ACR)中对分布式用户参数表的管理采用嵌入式数据库系统" title="数据库系统">数据库系统对用户信息进行管理。
嵌入式数据库以高可靠性、高实时性和高信息吞吐量为目标,其数据的正确性不仅依赖于逻辑结果,而且依赖于逻辑结果产生的时间。图1是一个嵌入式数据库应用的基本框架,整个嵌入式数据库构建于嵌入式操作系统之上。由于嵌入式数据库在运行环境和方式上与常见的企业级数据库管理系统有很大差别,因此,传统的企业数据库如Oracle、Sybase等在实时嵌入式环境下很难发挥作用,尤其在一些实时性要求很高的控制系统中,传统数据库更显得无能为力。
1嵌入式数据库系统的内涵及其体系结构
目前嵌入式系统" title="嵌入式系统">嵌入式系统开发中,对嵌入式数据库问题的多数看法是,嵌入式数据库从本质上说是一个“内存数据库”,是一个由应用程序管理的内存缓冲池,它在系统中的作用就是一个供多个实时任务共同使用的共享数据区。这种数据库实际上是一个嵌入在用户应用软件" title="应用软件">应用软件中的与应用程序不可分割的部分,其功能主要是数据的存和取,不具有独立性,不是一个真正意义上的数据库系统。一个完整的嵌入式" title="的嵌入式">的嵌入式数据库系统除了包括内存数据库外,还应当含有历史数据库和数据库管理系统DBMS及提供给用户的接口函数,整个数据库可由DBMS完成对数据库的具体配置及各种操作,例如系统运行前根据实际需要对内存数据库中的记录节点进行增减等配置操作。目前的嵌入式数据库系统可分为两大类,一类是商用级的嵌入式数据库系统,它独立于具体的应用软件,如美国McObject公司提供的eXtremeDB内存式实时数据库,这是一种专门为嵌入式系统数据库管理而编写的实时数据库,它将数据库直接建立在内存之中,并根据应用特征产生数据库API,用户可方便地调用这些接口函数管理整个数据库系统;另一类是用户针对具体的应用对象而自行设计开发的嵌入式实时数据库系统,这种数据库一般嵌入到应用软件中作为应用程序的一部分,不具有独立性。
一个嵌入式数据库系统的体系结构如图2所示。与传统的数据库一样,它仍然是一种三级模式的结构体系,即用户模式、逻辑模式和存储模式。在嵌入式环境下构建数据库系统应该完成以下功能:高效的数据存取机制、数据安全性控制、实时事务管理机制、数据库的恢复机制等。本设计中更关心系统的实时性、开销大小、系统性能、可靠性、可预知性和底层控制能力,即如何针对选用的实时OS和嵌入式硬件平台设计合理的数据模型和物理结构,重点放在如何高效地利用嵌入式系统的有限资源、提高数据的存取速度、进行数据保护、数据交换、查询/事务处理算法的优化、事务的优先级分派、事务调度和并发控制等。
2 嵌入式数据库系统的数据模型
嵌入式数据库系统的关键是数据模型的确定,它决定了数据的被访问和操作的方式,应用程序的性能和可靠性也主要取决于此。目前嵌入式数据库系统多数采用关系模型结构。该模型用二维关系表实现数据存储,利用索引访问和查询数据。这种模型结构建立在严格的数学基础上,结构简单灵活,独立性好,但在嵌入式环境下的内存开销和数据冗余较大,因此必须对其进行优化,增加了开发数据库系统的难度。有些嵌入式数据库采用了网状模型结构,该模型通过指针确定数据间的显式连接关系,比关系模型中利用冗余数据和索引文件要节约大量的存储空间,具有一定的数据独立性和共享特性,运行效率较高。而且由于它避免了索引操作,比关系型数据库模式要节省存储空间,数据操作速度也更快。但是这种模型结构比较复杂,尤其当嵌入式系统规模增大时,其数据库的结构变得非常庞大,可能会影响到系统的实时性能。图3所示是在相同数目的记录下,关系模型与网状模型的系统开销比较。从图3可以看出,网状模型因为避免了索引操作使得其开销要小于关系模型。但是在实际应用中,应当根据实时系统的综合性能选取数据库模型。通常可采用网状加关系或层次加关系的混合模型结构以弥补两种结构之间的缺陷,如将网状和关系模型的优点结合,可以避免不必要的索引开销,显著地减少系统存储空间、I/O操作和CPU周期,数据操作快速而且可靠性高。
3 嵌入式数据库系统的存取机制
嵌入式数据库系统所处理的事务通常是实时事务,事务调度的正确性依赖于高效的处理和预测能力。由于I/O速度比较慢,磁盘延迟时间难以预测,因此嵌入式数据库系统通常采用主存数据库技术,存取机制的主要目的是提高CPU的利用率和节约主存空间。
经典的存取机制主要分三大类[1]:一类是基于HASH函数的存取机制,如可扩展HASH(EH)、线性HASH、受控查询多方向HASH(CSMH)等;另一类是基于查询树的机制,如B树、B*树、AVL树、T树、T*树等;此外,ChanhoRyu等提出了一种综合了HASH表和查询树特点的查询机制Hybrid—TH,已经证明它显著提高了查询效率。
Hybrid—TH将树索引和HASH索引有机地结合,大大降低了查询的时间复杂度。HASH表的每个元素有三个域:①数据对象的关键字;②指向对应树结点的指针(该数据对象保留在该结点中);③指向溢出链的指针。T树是在一个结点中有多个数据对象的二叉树,它遵循AVL的特性,在每个结点中,数据对象按升序排序,指针par、lsub和rsub分别指向该结点的父结点、左子树和右子树。
数据的存取机制关系到系统的效率。在嵌入式数据库系统中,由于内存非常宝贵,同时没有费时的I/O操作,存取机制的设计目标是节约存储空间,同时尽可能提高处理速度,这一点在嵌入式数据库设计中要特别注意。
4 嵌入式数据库系统的关键技术
4.1大量更短、更快的处理过程
嵌入式系统应该具备非常高的数据处理速率,而单一处理过程的持续时间应该十分短暂(单一处理过程是指对数据进行的一次基本操作,包括只读、写入或读写)。例如,机顶盒以10MB/s的速率从卫星上接收电子信息;IP路由器每秒可进行10万次路由处理等。
因此,嵌入式数据库系统必须满足应用软件的“实时”需要。这要求有极其轻便、灵敏的数据传送管理。由于系统架构间的各种通信延迟都将对速度产生巨大的影响,因此应用进程必须能与数据管理软件直接交互作用。
此外,由于嵌入式系统的不同任务有着不同的优先权,而且它们可以动态改变,因此嵌入式数据库系统可以根据操作环境的变化,对数据管理过程的优先权进行排列。例如,为了适应输入速率的提高,数据输入系统必须对它的数据处理进程进行调节,以便释放输入缓存,避免数据丢失。在理想情况下,应用软件可以提高写入数据相关处理过程的优先权,从而迅速清空输入缓存,但同时要牺牲其它处理过程的优先权,例如数据查询、数据读取等。当高峰过后,所有优先权排列情况便又恢复到正常的状态。
4.2 可分享数据和事件处理
嵌入式实时运算是一种典型的由事件推动的操作过程,它会对外界资源的中断做出相应的反应。新数据或发生变化的数据都会引发系统对它进行处理,例如,一个IP路由器向其它路由器发送一个路径选择表等。为了避免定期对数据库数据查询过程中出现不必要的处理过程,嵌入式数据库系统采用将事件传播到其它关联软件模块的方法共享事件处理。例如,一个由传感器产生的中断会导致数据库中的某个数值发生变化。这一变化最终将导致一个数据库事件,而这一事件将通知其它的相关软件模块所发生的变化。
4.3 对复杂数据的管理及设计灵活性
嵌入式系统经常需要对高度复杂的数据进行管理。一个理想的嵌入式数据库系统应能够在一特殊的结构中对数据库中的数据进行读写。对于C语言程序员来说,这意味着嵌入式结构、嵌套结构、原子类型中固定或不固定长度的各类阵列、白底或隐式数据,以及可选择数据单元。数据库的真正价值在于可以根据不同的标准进行检索。嵌入式数据库则需要支持单一或复合索引。理想情况下,数据库可以提供可由程序激活或关闭的索引。
4.4 数据定义与源代码分离
嵌入式数据库系统还应具备将数据定义从应用软件源代码中分离出来的能力,从而可以使用户更灵活、更简单地对数据结构进行修改。这一点需要通过数据库管理系统的数据库主义语言(DDL)实现。DDL主要用来表达数据组、数据属性(大小和类型)、获取方法及数据的其它特征。编译程序可以对DDL进行编译,验证其正确性,以供数据库管理系统软件使用。
4.5 数据的高有效性
诸如通信和网络基础架构之类的嵌入式系统必须十分健壮,即使在硬件或软件发生故障时也必须能正常工作。对于嵌入式数据库系统来说,这就意味着即使在所依附的硬件发生故障的条件下,仍然确保数据安全。当然,数据库必须备份到其它的硬盘上,简单地映射或复制是不够的。嵌入式数据库必须保证主数据库的所有备份数据库无论何时都是同步的。
4.6 与其它系统共享数据
判断一个企业运营情况,通常要对企业的数据进行收集、整理和分析。事实上,企业或组织的所有嵌入式系统和设备都要随着用户数据收集能力、传输和获取需求的增加而不断升级。因此,嵌入式数据库系统必须要能与企业中的其它系统进行数据共享。XML正在成为受欢迎的解决方案。嵌入式数据库应该能兼容XML技术。XML是一种开放式标准,它拥有大量的技术信息及开放系统软件的支持。软件开发人员都希望可以将XML的兼容性集成到自行开发的数据库管理解决方案中。
目前,嵌入式数据库系统开发还存在许多问题需要解决,在实际应用中的性能也有待进一步提高。其关键在于系统的存储结构、数据的存取速度、实时事务的优先级调度、故障恢复问题,这是提高嵌入式数据库系统性能的关键,也是数据库系统理论的研究重点。
参考文献
1 夏家莉. H-T:一种适用于嵌入式数据库系统的存取机制[J].计算机应用与软件,2002;(12)