执行模型(数据库)
时间:2022-12-07 00:30:01 | 来源:信息时代
时间:2022-12-07 00:30:01 来源:信息时代
执行模型 : 确定系统执行规则的时间及规则执行所具有的属性的一种模型。执行模型处理和执行规则的方式与底层的数据库管理系统所支持的数据模型、事务处理等方面密切相关,不同的系统对规则的处理不尽相同。但是除了具体的软件环境因素外,一般的规则处理都可以分为发信号、触发、调度、评估和执行等阶段。各阶段的关系如图1所示。
图1 规则处理的主要阶段
(1)发信号阶段是指事件源引起具体事件出现的过程。
(2)触发阶段根据所产生的事件触发相应的规则。规则与事件具体值的关联形成规则实例。
(3)评估阶段对已触发规则的条件进行评估。所有满足条件的规则实例形成规则冲突集。
(4)调度阶段指出如何处理规则冲突集。
(5)执行阶段执行选中规则的动作。规则动作的执行也被称为“点火”。在动作执行期间可能生成新的事件,从而产生嵌套(或级联的)规则点火,如图1中的虚线所示。
在主动数据库系统中,对于执行模型的描述,通常包含以下几个方面:
(1)规则的处理粒度:规则的处理粒度也称为规则的执行粒度,是指系统响应事件信号触发规则的频度。最细的粒度可在数据库系统执行的任意点上处理规则,即任何事件只要一发生,相应的规则就立即被处理。较细的处理粒度是,规则处理发生在每个“最小”的数据库操作之后。例如,关系数据库中单个元组的插入、删除、修改或查询;面向对象数据库中单个属性值的修改或者是单个方法的调用。较粗的处理粒度是数据操作语句执行后处理规则,如可以在每个SQL语句的结束处处理规则。此外,事务也可以作为规则的处理粒度,即只在事务结束时才处理规则。
(2)规则的耦合模式:规则的耦合模式描述规则处理与数据库事务之间的关系,有关规则耦合模式及其语义参见主动规则。
(3)规则的转变粒度:规则的转变粒度也称为规则粒度,主要描述事件与所触发规则间的关系,如指出事件具体值与规则实例间的关系是1:1或者是n:1。如果规则触发是面向实例的,则一个事件信号触发一条规则; 如果是面向集合的,则由事件的多次发生触发一条规则。转变粒度只适用于包含数据更新的事件和条件,粒度的大小取决于更新的目标是单一数据库实体,还是数据库实体的集合。
(4)规则的调度策略:规则调度策略也称为冲突解决策略,主要处理多条规则被触发时,如何确定规则执行顺序。常用的调度策略有: ①任意选择一条规则。②根据规则定义中指定的优先级进行选择。③根据规则的静态属性进行选择,例如,按照规则的创建时间确定执行顺序。④根据规则的动态属性来确定,例如,按照规则触发的先后,先触发的规则先处理。另一种解决方法是并发执行多条被触发的规则,即同时处理多条被触发规则的条件评估或动作执行。
(5)规则的循环策略:规则的条件评估或动作执行有可能引发事件,所引发的事件又会触发规则,从而形成规则的循环执行。对这种情况的处理一般有两种不同的选择: 迭代策略和递归策略。迭代策略将由条件评估或动作执行引发的事件与原始事件源引发的事件同等对待。这意味着系统不会挂起当前的条件评估或执行动作以响应由条件评估或动作执行所引发的事件。递归策略则与迭代策略相反。当条件评估或动作执行而引发事件时,系统将立即响应该事件,从而使得任何监视该事件的立即型规则获得尽可能早的处理机会。
(6)规则的终止策略:在规则处理算法中,不管是迭代策略还是递归策略、顺序执行还是并发执行,由于规则间的相互触发或自触发,使得规则可能无限触发下去。一般的终止策略有: ①允许规则是非终止的,但规则的设计者应确保不会出现不终止的情况。②限定规则处理过程中允许执行的最大规则数。③在规则集上施加句法限制以确保规则处理总能够终止。如限制规则之间不能相互触发,或规则可以相互触发但是不会出现触发“环”; 更复杂一些的限制是,允许“环”出现,但必须保证环中某些规则的条件会变得不成立而使规则终止。
(7)规则的净效果:是否考虑净效果的区别源于同一数据项上的多个修改可以被看成是一个单一的修改。如果修改某个实例后再将其删除,那么净效果就相当于删除原来的实例。如果插入一个实例后再对其修改,则实际效果等同于插入修改后的实例。
(8)规则的错误处理:在规则处理过程中,对可能出现的各种错误,大多数系统只是简单的终止事务,但是也可以采取一些更合适的处理方式。例如,忽略产生错误的规则而继续处理其他规则; 或者是返回到起始状态,重新启动规则处理或者是继续执行事务; 也可以利用底层数据库系统专门的错误恢复机制来进行处理。
执行模型的各个方面,也被称为规则处理的维度。每个方面都有多种不同的选择,但是并非所有选择的组合都能产生有意义的执行模型。例如,可中断的动作和条件,只有与递归循环策略以及最细的规则处理粒度相结合才有意义。实际系统中往往需要有效的工具来支持规则库的分析和调试。