首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我应该使用多个知识库吗?

我应该使用多个知识库吗?
EN

Stack Overflow用户
提问于 2012-07-25 23:25:11
回答 1查看 1.9K关注 0票数 5

我们有一个系统,将有数万个单位。每个单位将有5-10米,每一米将有一个相关的价值。这些仪表的值会发生变化,我们需要我们的规则引擎能够实时地响应这些变化。

我们将有这样的规则“如果第一单元的第一米大于10,第二米从第一单元小于30,那么.”,尽管规则可能要长得多。每个单元的规则将是完全独立的,因此没有规则对两个不同的单位的两个不同的米的值施加条件。

我们将有大约30个规则,每个单位是相同的,然后每个单位将有大约5-15自定义规则。在规则引擎运行时,需要动态添加这些规则。这很可能是一个单位会增加5-10的规则,当它注册,然后添加或删除一个规则,大约每周一次,从那时起。

我们决定使用Drools来实现这个功能,我正在试图找出实现它的最佳方法。我对口水很陌生所以我有点困惑。每个单位都有自己的知识库有意义吗?如果是这样的话,是否有任何方法来分享每个单元相同的规则?

我担心我们可能没有足够的内存来存储所有这些规则,所以我在想,如果我们每个单元都有一个知识库,我们就可以序列化所有的知识库,把它们放到数据库中,并在需要的时候检索它们。这是否合理?

我考虑为每个单元使用一个单独的知识库的另一个原因是,因为每个单元的规则完全独立于其他单元的规则,将它们都放入同一个知识库可能会影响性能。这是正确的,还是Rete算法足够聪明来解决这个问题?

此外,在引擎运行时是否可以动态添加规则?所有的规则都要重新编译吗?如果发动机仍然需要实时响应仪表的变化,这需要多长时间,这是否可行?

谢谢你们。

EN

回答 1

Stack Overflow用户

发布于 2012-09-11 08:29:09

每个单元都有自己的知识库有意义吗?如果是这样的话,有没有任何方法来共享每个单元相同的规则呢?

请看下面每一个单位都有自己的知识库。为了组织目的,您可以考虑将它们放在单独的包中。要在包之间共享规则,可以在全局区域创建规则并导入它们。虽然这将有助于分享共同的规则,但它也有一些缺陷:

  • 当您有大量的包时,您将需要第一次手动导入它们。
  • 当您修改特定包中的导入规则时,它将更改全局规则,因此更改会影响导入规则的所有其他包。在guvnor中,无法明显地判断规则是导入的还是特定于包的。

我担心我们可能没有足够的内存来存储所有这些规则,所以我在想,如果我们为每个单元都有一个知识库,我们就可以序列化所有的知识库,把它们放到数据库中,并在需要的时候检索它们。这合理吗?

这是一个选项,但如果规则发生变化,您将需要重新创建知识库。

我考虑为每个单元使用一个单独的知识库的另一个原因是,因为每个单元的规则完全独立于其他单元的规则,将它们都放入同一个知识库可能会影响性能。这是正确的,还是Rete算法足够聪明来解决这个问题?

Drools JBoss Rules 5.0 Developer's Guide”( Michal巴厘)一书

Rete算法的性能在理论上与知识库中的规则数无关。

此外,

如果你很好奇,想看一些基准测试,你可以在Drools -示例模块中找到它们,这个模块可以从Drools网站下载。也有一些网站定期发布各种规则引擎的基准,以解决著名的数学问题(通常是“Manners小姐”测试和“Waltz”),例如http://illation.com.au/基准测试/。Drools的性能可以与其他开源甚至商业引擎媲美。

还可以在引擎运行时动态添加规则吗?所有的规则都要重新编译吗?如果发动机仍然需要实时响应仪表的变化,这需要多长时间,这是否可行?

这里没有具体的想法,但我相信这些规则需要重新编译才能使用。在重新编译新包时,仍然可以使用先前创建的kbase。他们是独立的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11660183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档