当前位置:网站首页>什么是硬实时数据库系统?

什么是硬实时数据库系统?

2022-06-09 11:43:00 PostgreSQLChina

硬实时并不意味着真正的快速。多年来,数据库和软件供应商一直将“实时”一词用作即时或实时的同义词,但对于任务和安全关键系统而言,它的含义完全不同。

令人惊讶的是,它并不像听起来那么简单,但也许我们可以从为我们的目的定义一些术语开始。硬实时软件是指如果没有达到时间期限就会失败的软件。任务关键型软件是其故障可能导致灾难性后果(例如有人死亡、财产损失、严重经济损失等)的软件。先进的驾驶员辅助系统是关键任务和硬实时;电子交易系统是关键任务,但不是硬实时的;喷墨打印机是硬实时的,但不是关键任务。

换句话说,在硬实时系统中,有一条线会产生重大后果。在实时数据库系统的上下文中,沙线是事务的最后期限。越线意味着事务延迟,因此实时系统无法在预定义的时间限制内响应事件。在高级驾驶辅助系统中,系统故障可能意味着车祸。    


外部一致性

因此,硬实时数据库系统的一个关键原则是期限管理或外部一致性。外部一致性意味着数据库的内容在一定的时间限制内反映了现实世界。为此,交易必须在预先设定的期限内完成。在硬实时数据库系统中,“完成”意味着通过在截止日期之前成功提交或成功中止来满足截止日期。交易永远不会迟到;他们必须在最后期限内反映现实世界的状态,或者通知感兴趣的系统交易错过了最后期限(但在最后期限内被中止)。为了可靠性,硬实时数据库管理系统应该(但不是必须)像任何其他 ACID 数据库一样强制执行内部一致性。


实时数据库系统性能指标

硬实时并不意味着真正的快速。多年来,数据库和软件供应商一直将实时一词用作即时同义词。关键任务硬实时数据管理系统可能需要速度,但必须具有确定性。换句话说,它必须与 RTOS(实时操作系统)一起工作以设置和执行交易截止日期。性能是通过满足其截止日期成功提交的事务与错过截止日期(在截止日期之前成功中止)的事务数量的比率来衡量的。速度不是用于评估实时数据库系统的指标。


交易时间表

如您所知,数据库事务不一定是单个操作,尽管它可能是。它可能是一系列操作,例如查找一条记录、删除五条相关记录以及更新原始记录中的一个字段,这些操作必须同时成功或失败。同样,影响 1 或 100 条记录的单个更新或删除命令必须全部成功或不成功。

事务在应用程序代码调用它时开始。如果数据库系统正忙于一个或多个其他冲突事务,则新创建的事务将被放入等待队列,但其截止日期的时钟已经开始。从理论上讲,事务可能会在没有被安排执行的情况下超时,但在设计良好的实时系统中则不会。下图说明了实时交易的时间线。

一旦安排好,事务就开始执行工作负载间隔。数据库运行时不能是一个无法确定出现的黑洞。换句话说,当系统调用数据库运行时,任务不能在数据库运行时内消失一段不确定的时间,可能会超过数据库运行时将控制权返回给应用程序之前的最后期限。数据库运行时需要知道截止日期,并不断查看时钟,并能够在为时已晚之前将控制返回给应用程序,从而中止事务并允许它在截止日期之前完成。这是最后期限控制点。

确定性地建立最后期限控制点的能力取决于能够确定地知道中止事务所需的时间。通过实施新的实时数据库事务调度程序,我们可以断言在事务中回滚更改所需的时间不会超过应用这些相同更改所需的时间。因此,如果事务截止日期为 T,则截止日期控制点为 T / 2。实际上,中止事务可能比将事务应用到某个时间点所花费的时间要快得多。因此,实际截止日期的一半是最坏的情况,可以根据测试和模拟期间收集的经验数据进行调整。参见图 4。

撤销事务对数据库所做的任何修改,不超过应用这些修改所需的时间。


实时事务调度

事务调度策略对已完成事务与已中止事务的比率有影响。首先,事务调度程序必须强制执行事务截止日期,然后尝试使成功提交其事务的任务数量相对于其事务中止的任务数量最大化。

一个这样的策略是高优先级最早截止日期优先 (EDF),第二个是优先级继承 (PI)

1、使用 EDF,事务是根据优先级安排的,并且在最早的截止日期之前在相同的优先级内。事务的优先级是通过事务启动命令传递给事务调度器的另一个参数,以及截止日期。
2、优先级继承(PI)以先进先出的顺序安排具有相同优先级的事务,而不考虑它们的截止日期。
EDF 和 PI之间的主要区别在于:在 EDF 管理器的情况下,数据库内核组织队列并确定事务执行顺序。在 PI 案例中,执行顺序是先进先出 (FIFO),不考虑截止日期。但是,当较高优先级任务开始数据库事务时,PI 将较低优先级任务的优先级提高到较高优先级,从而允许较低优先级任务也抢占优先级高的任务。反过来,这允许较低优先级的事务快速完成并避开高优先级任务。不同的应用程序模式可以利用不同的事务调度程序。


结论

综上所述,实时数据库系统可能很快,但必须具有确定性并保证外部一致性。在讨论数据管理时,速度始终是一个性能指标,但在硬实时数据库中,最重要的性能指标是成功提交的事务数,而不是按时成功回滚的事务数,以便系统始终能够即时做出反应到关键任务事件。如果一个数据库系统不能保证外部一致性,它就不是硬实时的,并且可能导致关键任务系统的故障。


点击此处阅读原文

本文分享自微信公众号 - 开源软件联盟PostgreSQL分会(kaiyuanlianmeng)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

原网站

版权声明
本文为[PostgreSQLChina]所创,转载请带上原文链接,感谢
https://my.oschina.net/postgresqlchina/blog/5536101