核外规则引擎

8

有没有实现离线操作的产生规则系统?

我已经查看了像CLIPSJess这样的开源实现,但这些只在内存中运行,因此当处理大量事实和规则(例如在数十亿/万亿级别)时,它们往往会崩溃或强制进行大量磁盘交换。

我正在尝试将一个简单的规则引擎(如Pychinko)移植到SQL后端,并使用Django的ORM。然而,支持CLIPS中找到的功能水平非常不容易,我不想重新发明轮子。

有没有其他方法来扩展产生规则系统的规模?


7
有没有其他方法来扩大生产规则系统的规模?是的,增加更多的内存! - Sven Marnach
1
给算法多分配一些RAM,让它在一天内运行正常。将算法更改为不使用RAM,并永久修复它。 - Cerin
1
我的评论当然是开玩笑的。我只是不知道你的问题的答案。 - Sven Marnach
愚蠢的问题,但是你到底如何管理/定义数十亿或数万亿条规则呢? - Matthew Flynn
2个回答

1

这并不是对你问题的直接回答,但它可能会给你解决问题的思路。

在80年代和90年代,我们推出了一种信息检索系统,允许非常大量的静态查询。具体来说,我们的系统拥有64MB的内存(那时候是一个巨大的负载),每天摄入超过一百万条消息,并对该流应用10,000到100,00+个静态查询。

如果我们只是迭代地将每个静态查询应用于最新的文档,我们就会失败。我们所做的是对查询进行一种反转,具体来说是识别查询中的必须拥有可能拥有术语。然后,我们使用文档中的术语列表来查找那些有任何成功机会的查询。客户学会了创建具有强烈区分度的查询,因此有时只需要完全评估10或20个查询。

我不知道你的数据集是什么样子,也不知道你的规则是什么样子的,但可能有类似的东西可以尝试。


1

您可以查看 JENA 和类似的RDF规则引擎,这些引擎旨在处理非常大的事实数据库。


Jena将其规则存储在内存中。据我所知,所有 RDF规则引擎都是这样的。大型事实数据库!=核心规则。 - Cerin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接