外存规则引擎

8 投票
2 回答
844 浏览
提问于 2025-04-16 19:21

有没有什么实现了生产规则系统的方案,可以在内存之外运行的?

我查看了一些开源的实现,比如CLIPSJess,但这些系统只能在内存中工作,所以当处理大量的数据和规则时(比如数十亿或数万亿条),它们容易崩溃或者需要频繁地从硬盘交换数据。

我在考虑把一个简单的规则引擎,比如Pychinko,移植到SQL数据库上,使用Django的ORM。不过,要实现CLIPS那样的功能会非常复杂,我不想重新发明轮子。

有没有什么其他的办法可以扩展生产规则系统的规模?

2 个回答

1

这不是直接回答你问题的内容,但可能会给你一些思路来解决问题。

在80年代和90年代,我们有一个信息检索系统,可以处理非常多的固定查询。具体来说,我们的系统当时有64MB的内存(在那个时候这可是个巨大的数字),每天能处理超过一百万条消息,并且对这些消息应用1万到10万多个固定查询。

如果我们只是简单地把每个固定查询逐个应用到最新的文档上,那我们肯定会失败。我们做的是对查询进行一种反转,特别是识别出查询中的必须有可以有的词。然后,我们利用文档中的词汇列表来找到那些有可能成功的查询。客户学会了创建有明显区分度的查询,因此,有时候只需要完全评估10到20个查询。

我不知道你的数据集是什么样的,也不知道你的规则是什么样的,但你可以尝试一些类似的方法。

1

你可以看看 JENA 以及其他类似的RDF规则引擎,它们是专门用来处理非常大的事实数据库的。

撰写回答