什么是和什么不是硬实时数据库系统?
硬实时并不意味着真正的快。 多年来,数据库和软件供应商一直将实时一词作为即时或实时的同义词,但对于任务和安全关键型系统来说,它的含义完全不同。
令人惊讶的是,这并不像听起来那么简单,但也许我们可以先为我们的目的定义几个术语。 硬实时软件是指如果没有达到时间期限就会失效的软件。 任务关键型软件是指其故障可能导致灾难性后果的软件(如有人死亡、财产损失、严重的经济损失等)。 一个先进的驾驶辅助系统是任务关键型的,而且是硬实时的。 一个电子交易系统是关键任务,但不是硬实时。 一台喷墨打印机是硬实时的,但不是关键任务。
| 换句话说,在硬实时系统中,有一条具有重大影响的沙线。在实时数据库系统的背景下,沙中线是交易的最后期限。越过这条界线意味着交易晚了,所以实时系统无法在预定的时间约束内对一个事件做出反应。在一个先进的驾驶辅助系统中,系统故障可能意味着一场车祸。 | ![]() |
外部一致性
因此,硬实时数据库系统的一个关键原则是最后期限管理,或外部一致性。 外部一致性意味着数据库的内容在某种时间限制内反映了真实世界。为了实现这一点,事务必须在预先设定的最后期限内完成。 在硬实时数据库系统中,"完成 "意味着通过在截止日期前成功提交或成功中止来满足截止日期。 事务永远不能迟到;它们必须满足最后期限,以反映现实世界的状态,或者通知有关系统,该事务错过了最后期限(被中止,但在最后期限内)。 为了保证可靠性,硬实时数据库管理系统应该(但不需要)像其他ACID数据库一样执行内部一致性。
实时数据库系统的性能指标
硬实时并不意味着真正的快。 多年来,数据库和软件供应商一直在使用实时这个术语,与即时或实时同义。 一个关键任务的硬实时数据管理系统可能需要速度,但必须是确定性的。 换句话说,它必须与实时操作系统一起工作,以设置和执行交易的最后期限。 性能是由满足其最后期限的事务(成功提交)与错过其最后期限的事务(在最后期限前成功中止)的比率来衡量的。速度不是用来评价一个实时数据库系统的指标。
交易时间线
如你所知,一个数据库事务不一定是一个单一的操作,尽管它可能是。它可能是一连串的操作,比如查找一条记录,删除五条相关的记录,以及更新原始记录中的一个字段,这些操作必须一起成功或失败。同样地,一个影响到1条或100条记录的单一更新或删除命令必须全部成功或不成功。
当应用程序代码调用它时,一个事务就开始了。如果数据库系统正忙于处理一个或多个相互冲突的事务,新创建的事务将被放在一个等待队列中,但其最后期限的时钟已经开始。理论上,一个事务有可能在没有被安排执行的情况下超时,但在一个设计良好的实时系统中不会。下图说明了一个实时事务的时间线。

一旦排定,事务就开始执行工作负荷间隔。数据库运行时间不能是一个黑洞,从中出现是不确定的。换句话说,当系统对数据库运行时进行调用时,任务不能在数据库运行时内部消失不确定的时间,可能会在数据库运行时将控制权返回给应用程序之前超过最后期限。数据库运行时需要意识到最后期限,并不断地查看时钟,能够在太晚之前将控制权返回给应用程序,以中止事务,让它在最后期限之前最终完成。这就是最后期限控制点。

确定性地建立最后期限控制点的能力取决于能够确定地知道中止一个事务所需的时间。通过实施新的实时数据库事务调度器,我们可以断言,在一个事务中回滚变化所需的时间不超过应用这些相同变化所需的时间。所以,如果交易的最后期限是T,最后期限控制点是T/2。在现实中,中止交易的速度可能大大超过应用交易到某一时间点的时间。所以,实际截止时间的一半是最坏的情况,可以根据测试和模拟期间收集的经验数据进行调整。见图4。

逆转事务对数据库所做的任何修改的时间,直到事务的任何一点,都不会超过应用 这些修改的时间。
实时交易调度
事务调度策略对完成的事务与中止的事务的比例有影响。首先,一个事务调度器必须执行事务的最后期限,然后试图使成功提交事务的任务数量相对于事务中止的任务数量最大化。
其中一个政策是高优先级最早截止日期优先(EDF),第二个是优先级继承(PI)。在EDF中,事务根据优先级被安排,并在同一优先级内按最早的截止日期安排。一个事务的优先级是通过事务开始命令传递给事务调度器的另一个参数,同时还有最后期限。
优先级继承法以先入先出的顺序调度具有相同优先级的事务,而不考虑它们的最后期限。
EDF和PI TM的主要区别在于,在EDF管理器的情况下,数据库内核组织队列并决定事务执行顺序。在PI的情况下,执行顺序是先入先出(FIFO),不考虑最后期限。然而,当一个较高优先级的任务开始一个数据库事务时,PI将较低优先级的任务的优先级提高到较高优先级的任务,允许较低优先级的任务也抢占比新的高优先级任务更低的优先级的任务。这反过来又允许低优先级的事务迅速完成,并摆脱高优先级任务的影响。不同的应用模式可以利用不同的事务调度器。
结论
综上所述,实时数据库系统可能是快速的,但必须是确定性的,并保证外部一致性。 在讨论数据管理时,速度总是一个性能指标,但在硬实时数据库中,最重要的性能指标是成功提交而不是成功按时回滚的事务数量,这样系统就能始终对关键任务的事件做出即时反应。 如果一个数据库系统不能保证外部一致性,那么它就不是硬实时的,并可能导致关键任务系统的失败。
