【问题标题】:Ideal Topology of Rete Tree for Rule Engine规则引擎Rete树的理想拓扑
【发布时间】:2015-11-26 09:51:34
【问题描述】:

如您所知,许多规则引擎在处理规则时使用 Rete 算法,该算法构造了一个树,即所谓的 Rete 树。

为了确保更好的规则处理性能,Rete 树的理想拓扑是什么?换句话说,我想知道规则集应该更好地对应的树拓扑以获得更好的性能。

【问题讨论】:

    标签: performance graph rule-engine rete


    【解决方案1】:

    简短的回答是,性能受规则和对象的数量、测试的数量、规则中测试的排序方式以及规则之间共享的测试/条件的数量影响。

    您应该通过以下方式重写规则以获得最佳性能:

    • 重新排序测试和条件,以便将最具区分性的条件移到规则的开头
    • 分享条件

    请参阅Adjusting conditionsIBM ODM 文档。

    您还应该减少需要通过规则评估的对象的数量,以及测试的数量。

    供您参考 Rete 和 IBM ODM:

    RetePlus 旨在优化对大量 跨大量对象的规则。 RetePlus 过滤测试,例如 不评估不相关的测试。测试可以在之间共享 使用类似测试的规则,因此它们不需要 重新评估所有规则。

    为了获得最佳效果:

    • 不同对象的通用测试是共享的。

    • 执行的测试次数已降至最低。

    • 当单个评估包含太多变量定义和条件时,性能会下降。

    • 测试使用较少的内存。

    【讨论】:

    • 我想指出,虽然这些参考是针对 IBM ODM,但同样的概念也适用于 Rete 算法的任何其他实现
    • z_blue 是对的,但您也应该记住,在 99% 的情况下,如果使用 ODM,您将使用 Sequential 或 Fastpath 执行模式。 RetePlus 仅在规则链接时才使用。事实上,从 ODM 8.7 开始,RetePlus 不再是规则任务的默认执行模式。快速路径现在是默认路径。
    【解决方案2】:

    简单地说,如果您想在编排中使用RetePlus 算法,请仅使用Decision Trees 业务规则。

    以这种方式使用会快得多。尽管您可以与其他算法以及Sequential(在本例中为Action Rules)结合使用。

    因此,您的解决方案可能是操作规则的一部分(与Sequential)并与Decision Tables(与RetePlus)部分。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-22
      • 1970-01-01
      • 2018-08-08
      • 1970-01-01
      相关资源
      最近更新 更多