可能会对存储在关系数据库中的数据产生影响(例如使用HIbernate)

fen*_*nou 8 hibernate rule-engine drools relational-database

我必须用drools来实现一个应用程序,但看起来DROOLS不能同时推理大量的对象.我想知道它是否可以推理存储在关系数据库中而不是存储在workingMemory中的数据.

谢谢你的帮助 :)

Eds*_*lli 5

你的问题很广泛.答案是为了推理数据,除非您正在使用存储过程,否则任何应用程序(drools与否)都需要将数据加载到JVM中.然后,可以在Drools应用程序中将数据插入到工作内存中(请注意,这不会导致任何复制操作,因为drools与标准应用程序POJO一起作为事实)或者可以使用"从"条件元素.Hibernate也使用POJO,Drools使用它们没有任何问题.

"DROOLS不能同时推理大量物品"

不确定你是什么意思?多少是多少?我个人使用了一些drools应用程序,这些应用程序在工作内存的每个实例中同时使用了超过一百万个事实,并且以100s ms的顺序执行规则的平均响应时间.在这里,您可以看到一位顾问的演示文稿,该顾问致力于一个项目,其中规则必须实时查询和推理超过3000万条记录的历史数据:http://vimeo.com/27209589.他使用了noSQL数据库.

当然,大型应用程序在设计架构时需要更多的关注,但对于Drools以及任何技术都是如此.如果您详细说明您的用例,我们可以为您提供更具体的建议.还建议查看Drools邮件列表,因为那里有很多关于应用程序设计的好建议.

希望有助于澄清.

  • 这个用例与我上面链接的视频演示中的用例非常相似.通常,历史数据不应该急切地加载到工作记忆中,因为它很少作为一个整体使用.可以使用规则中的"from"CE按需提取历史数据,以便仅获取所需的数据.使用缓存或noSQL数据库有助于缩短响应时间. (2认同)