可能会对存储在关系数据库中的数据流口水(例如使用HIbernate)

可能会对存储在关系数据库中的数据流口水(例如使用HIbernate),hibernate,relational-database,drools,rule-engine,Hibernate,Relational Database,Drools,Rule Engine,我必须实现一个带有drools的应用程序,但是drools似乎不能同时对大量对象进行推理。 我想知道它是否能够对存储在关系数据库而不是工作内存中的数据进行推理 谢谢你的帮助:)你的问题很广泛。答案是为了对数据进行推理,除非您使用的是存储过程,否则任何应用程序(不管是不是drools)都需要将数据加载到JVM中。然后,在Drools应用程序中,可以将数据插入工作内存(请注意,这不会导致任何复制操作,因为Drools使用标准应用程序POJO作为事实),或者可以使用“from”条件元素按需获取数据。H

我必须实现一个带有drools的应用程序,但是drools似乎不能同时对大量对象进行推理。 我想知道它是否能够对存储在关系数据库而不是工作内存中的数据进行推理


谢谢你的帮助:)

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

“口水不能同时在大量对象上推理”

不知道你说的是什么意思?一个大数字是多少?我个人使用过几个drools应用程序,它们在工作内存的每个实例中同时使用了超过一百万个事实,规则执行的平均响应时间为100毫秒。在这里,您可以看到一位顾问的演示,他在一个项目中工作,在该项目中,规则必须实时查询和推理超过3000万条记录的历史数据:。为此,他使用了noSQL数据库

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


希望这有助于澄清。

有点相关:感谢您提供有用的链接您希望Drools保留数据,而不是完全存储在内存中吗?为了透明地在持久层上进行推理并将结果保存回持久层?是的,这正是我真正想要的,因为WM似乎不支持中的大量数据。请原谅我的错误英语:)谢谢你的回复。以下是一些细节。我正在开发一个银行欺诈检测应用程序,正如你所知,对于一家给定的银行,每天都有数十万笔交易(可能是数百万笔)。我想做的是,在每天结束时,把这些对象(交易)交给drools(放在工作记忆中)和一些有关银行客户的历史数据(几十万或百万),然后等待drools的响应。但我得到的是:-响应时间非常慢-outofmemoryerror java堆空间。谢谢你的帮助:):)请原谅我的蹩脚英语:)这个用例与我上面链接的视频演示中的用例非常相似。通常,历史数据不应该被急切地加载到工作记忆中,因为它很少作为一个整体使用。通过使用规则中的“from”CE,可以根据需要获取历史数据,以便只获取所需的数据。为此使用缓存或noSQL数据库将有助于缩短响应时间。非常感谢您提供的这一非常有用的响应,我将尝试按照这些步骤进行操作,如果我遇到问题,我会来找您帮助我解决问题。:)请原谅我的蹩脚英语:)中的“复制操作”是什么“请注意,这不会导致任何复制操作,因为drools使用标准应用程序POJO作为事实?”当您将对象插入会话时,它所做的只是使对象引用对引擎可用,而不是将任何数据从原始对象复制或映射到不同的数据结构。