嵌入式实时数据库管理系统
嵌入式实时数据库系统是介于用户和实时操作系统之间的一层软件,由许多程序模块组成。其功能是有效地组织、管理和访问数据库中的共享数据,其结构如图4所示。其中存储空间管理模块、安全完整性控制模块、事务并发控制模块、实时数据转储模块和运行日志管理模块是在嵌入式环境下开发实时数据库系统特别需要解决的几个问题:(1)存储空间管理模块。由于嵌入式实时数据库系统采用内存数据库技术,必然涉及到嵌入式操作系统的内存管理。因此,用户必须了解系统的内存分配机制,并设计自己的内存管理程序。当系统运行时,该模块通过实时操作系统向系统申请一个内存缓冲区作为共享内存数据区。之后,将历史数据库中的初始化数据转移到内存区域,以初始化这些空白内存。对于内存空间的应用,用户可以使用静态分配的方法,实现简单,不需要复杂的索引结构。缺点是失去了灵活性,必须提前知道需要的内存,并在设计阶段分配。或者采用动态分配,这种方式比较灵活,可以根据需要扩展数据节点,但必须建立合适的索引结构,以加快数据检索时间。模块应根据具体的实时操作系统进行设计;(2)数据安全性和完整性控制模块。实时数据库的设计必须考虑数据安全。一方面是指用户访问数据的合法性,另一方面是指系统的安全性。完整性是指用户对实时数据或历史数据的操作必须符合一定的语义,并且可以通过完整性约束来实现;(3)事务并发控制模块。实时数据库是一种共享资源,它允许多个任务一起使用。如果不控制并发事务,可能会导致任务错误地读取或存储数据,破坏数据的一致性。因此,在实时数据库系统中必须实现良好的并发控制机制。传统数据库一般采用加锁的方式,类似于实时操作系统中的信号量。锁粒度的大小要根据具体的应用系统来确定,传统数据库获取锁的成本较小,所以通常选择小粒度的锁单元来增加系统的并行性。但是在实时数据库系统中,事务获取锁的代价相当于处理数据的代价,过小的阻塞粒度会降低系统的性能。因此,实时数据库中的分块粒度通常选择一个关系表为单位(如模拟关系表作为分块单位),降低了并发控制机制的复杂度,减少了系统开销,提高了事务处理的整体性能。(4)实时数据转储模块。该模块的功能是将实时数据存储为历史数据。通常,该模块首先将历史数据保存在内存缓冲区中,然后一旦缓冲区满了,就将其写入磁盘。读取历史数据时,先从缓冲区获取数据,在数据不可用时再读写文件。这种方式可以减少磁盘I/O操作的数量。并且只存储发生变化的数据,节省了外部存储空间,不会影响系统性能;(5)运行日志管理模块。日志文件在数据库恢复中起着非常重要的作用,可以用于事务故障恢复和系统故障恢复。日志缓冲区专用于存储数据库操作的记录。传统的数据库日志记录包括记录名称、更新前记录的旧值、更新后记录的新值、事务标识、操作类型等。在嵌入式实时数据库系统中,为了减少系统开销,日志记录中不包含新旧记录值,日志记录的写操作只在缓冲区上进行,当缓冲区满时,通过磁盘写操作写入日志文件。