嵌入式实时数据库系统

编辑
嵌入式实时数据库系统(RTDBS)是指可在嵌入式设备中独立运行的一种数据库系统,用以处理大量的、时效性强且有严格时序的数据,它以高可靠性、高实时性和高信息吞吐量为目标,其数据的正确性不仅依赖于逻辑结果,而且依赖于逻辑结果产生的时间。

嵌入式实时数据库系统的概述

  图1是一个嵌入式应用的基本构架,整个嵌入式RTDBS构建于实时操作系统之上。由于嵌入式实时数据库系统在运行环境和运行方式上与常见的企业级数据库管理系统有很大差别,因此,传统的企业数据库如Oracle、Sybase等在实时嵌入式环境下很难发挥作用,尤其在一些实时性要求很高的控制系统中,传统数据库更显得无能为力。因此,伴随着各种商用嵌入式实时操作系统的出现,研究嵌入式环境下的实时数据库系统成为嵌入式软件中的一项重要内容。

嵌入式实时数据库系统的概述

嵌入式实时数据库系统的内涵及体系结构

  目前嵌入式系统开发中,在实时数据库问题上的多数看法是,嵌入式RTDBS从本质上说是一个“内存数据库”,是一个由应用程序管理的内存缓冲池,它在系统中的作用就是一个供多个实时任务共同使用的共享数据区。这种数据库实际上是一个嵌入在用户应用软件中的与应用程序不可分割的部分,其功能主要是数据的存和取,不具有独立性,不是一个真正意义上的数据库系统。一个完整的嵌入式实时数据库系统除了包括内存数据库外,还应当含有历史数据库和数据库管理系统DBMS及提供给用户的接口函数,整个数据库可由DBMS完成对数据库的具体配置及各种操作,例如系统运行前根据实际需要对内存数据库中的记录节点进行增减等配置操作。目前的嵌入式实时数据库系统可分为两大类,一类是商用级的嵌入式实时数据库系统,它独立于具体的应用软件,如美国McObject公司提供的eXtremeDB内存式实时数据库,这是一种专门为嵌入式系统数据库管理而编写的实时数据库,它将数据库直接建立在内存之中,并根据应用特征产生数据库API,用户可方便的调用这些接口函数管理整个数据库系统;另一类是用户针对具体的应用对象而自行设计开发的嵌入式实时数据库系统,这种数据库一般是嵌入到应用软件中作为应用程序的一部分,不具有独立性,目前测控系统中用户开发的实时数据库大都属于这种情况。

嵌入式实时数据库系统的数据模型

  嵌入式实时数据库系统的关键是数据模型的确立,它决定了数据被访问和操作的方式,应用程序的性能和可靠性也大部分取决于此。目前嵌入式环境下的数据库系统多数采用了关系模型结构,这也是商用数据库系统的数据模型,该模型结构是利用二维关系表来实现数据存储,利用索引访问和查询数据,这种模型结构是建立在严格的数学基础上的,结构简单灵活,独立性好,但在嵌入式环境下的内存开销和数据冗余较大,用户必须对其进行优化,增加了开发数据库系统的难度;有些嵌入式数据库则采用了网状模型结构,该模型通过指针来确定数据间的显式连接关系,它比关系模型中利用冗余数据和索引文件要节约大量的存储空间,具有一定的数据独立性和共享特性,运行效率较高,而且由于它避免了索引操作,比关系型数据库模式要节省存储空间,数据操作速度也更快。但是这种模型结构比较复杂,尤其当嵌入式系统规模增大时,其数据库的结构变得非常庞大,可能会影响到系统的实时性能。图3所示的是在相同数目的记录下,关系模型和网状模型的系统开销比较,从图中可以看出,网状模型因为避免了索引操作使得其开销要小于关系模型。但是在实际应用中,应当根据实时系统的综合性能选取数据库模型,通常可采用网状加关系或层次加关系的混合模型结构以弥补两种结构之间的缺陷,如CENTURA公司的嵌入式实时数据库RDM(Raima Database Management),它将网状和关系模型的优点结合起来,避免了不必要的索引开销,显着地减少系统存储空间、I/O操作和CPU周期,由于其快速而且可靠性高的特点,广泛应用于许多嵌入式产品中。

关系和网状模型开销比较

嵌入式实时数据库系统的管理系统

  嵌入式RTDBS系统是介于用户和实时操作系统之间的一层软件,由众多程序模块组成,它的作用是对数据库中的共享数据进行有效的组织、管理和存取,其结构如图4所示。其中,存储空间管理模块、安全性和完整性控制模块、事务并发控制模块、实时数据转储模块、运行日志管理模块是在嵌入式环境下开发实时数据库系统需要特别解决的几个问题:

  (1)存储空间管理模块。嵌入式实时数据库系统由于采用了内存数据库技术,必然要涉及到嵌入式操作系统的内存管理,因此,用户必须了解系统对内存的分配机制,并设计自己的内存管理程序。系统运行时,由该模块通过实时OS向系统申请内存缓冲区,作为共享的内存数据区使用。之后,将历史数据库中的初始化数据调入内存区对这些空白内存进行初始化。对内存空间的申请,用户可采用静态分配方式,这种方式实现简单,无需复杂的索引结构,缺点是失去了灵活性,必须在设计阶段就预先知道所需内存并对之作出分配;或者采用动态分配方式,这种方式使用灵活,可以根据需要扩充数据节点,但是必须建立合适的索引结构,以加快数据的检索时间。该模块要根据具体的实时OS进行设计;

  (2)数据安全性、完整性控制模块。实时数据库设计中必须考虑数据的安全性,一方面指用户访问数据的合法性,另一方面是指系统的安全性。完整性是指用户对实时数据或历史数据的各种操作必须符合一定的语义,可通过完整性约束条件来实现;

  (3)事务并发控制模块。实时数据库是一个共享资源,允许多个任务共同使用,如果不对并发事务进行控制,可能会造成任务错误的读取或存储数据,破坏数据的一致性,因此实时数据库系统中,必须实现良好的并发控制机制。传统的数据库一般采用加锁的方式,类似于实时操作系统中的信号量,对于封锁粒度的大小要根据具体的应用系统确定,传统数据库获得锁的开销较小,因此通常选用小粒度封锁单位,以增加系统的并行性。但在实时数据库系统中,事务获得锁的开销与处理数据的开销相当,过小的封锁粒度反而会降低系统的性能,因此在实时数据库中的封锁粒度通常选择一张关系表为一个单位(如模拟量关系表为一个封锁单位),这样做减少了并发控制机制的复杂度,减小了系统的开销,提高了事务处理的整体性能;

  (4)实时数据转储模块。该模块实现的功能是将实时数据存储为历史数据,通常由该模块先将历史数据保存在内存缓冲区中,缓冲区满时才一次性的写入磁盘;读历史数据时,先从缓冲区内取数据,取不到数据时再进行文件的读写,这种方式可以降低磁盘I/O操作次数。并且只对变化数据进行存储,即节省了外存空间,又不会影响系统性能;

  (5)运行日志管理模块。日志文件在数据库恢复中起着非常重要的作用,可以用来进行事务故障恢复和系统故障恢复。日志缓冲区专门存放数据库操作的记录,传统的数据库日志记录包括记录名、更新前记录的旧值、更新后记录的新值、事务标识、操作类型等。在嵌入式实时数据库系统中,为了减少系统的开销,在日志记录中不包括新旧记录值,对日志记录的写操作只对缓冲区进行,当缓冲区满时,才由磁盘写操作写入日志文件当中。

嵌入式实时数据库系统的体系结构

 
0
本词条对我有帮助
 
 
词条标签