Hi All,
Thanks to Leo and Mark for the help...
Please find my comments(blue) inline.
Crisp question:
Is there any functionality in drools where I can run the rules(stateless session) in parallel threads to increase the throughput ?
Note: The rules actions won't change the facts/data such that it would require running of the rules again. Hence I came to this conclusion that stateless sessions are required.
Hello Harshit / Mark,
My reasoning behind the yes, is that:
- If you have 10 rules that won't necessarily always match, it's better to use Rete, than sequentially match one-by-one. The tree structure with the sharing of nodes for different rules seems to always be a better approach for me, than sequentially testing one-by-one and, in some cases, retesting the same condition on different rules (if that happens);
- You can write if-then-elses in a imperative language and perform better than Rete, but if your rules are complicated and you have many of them, it's likely that rete can do a better job; Also, if you need to change your rules or add new ones, it will be easier to do that declaratively;
I first put the links, because you can use that to judge yourself whether or not you might gain in performance in your own scenarios, with that material.
@Mark:In general a stateless session is just a convenience api for stateful, it just wraps. So no performance gain at all.
I think here you're saying that there will be no performance gain compared to a stateful session, but I believe that the question was more on the lines of "I know that with a stateful it's efficient, how about stateless". I tried to say that, yes, it's also worth using Rete in stateless scenarios.
Cheers,
Leo.2010/9/24 Mark Proctor <mproctor@codehaus.org>On 24/09/2010 16:18, Leonardo Gomes wrote:It depends :)Have a look here: http://www.drdobbs.com/184405218
here: http://blog.athico.com/2007/07/sequential-rete.html
and here: http://herzberg.ca.sandia.gov/guidelines.shtml
The easy answer for your question is "Yes" ;-)
In general a stateless session is just a convenience api for stateful, it just wraps. So no performance gain at all.
There is a "sequential" mode, but in all honest you won't get any measurable perf gain. So I wouldn't use sequential mode for performance, the only reason to use it is if you want your rules to execute sequentially.
Mark
Cheers,
Leo.
2010/9/24 Harshit Bapna <hrbapna@gmail.com>
Hi All,
In a scenario where lets say 10 rule are to be fired (in any order) in a stateless session than will I get the benefits of RETE algorithm (i.e increased performance).
i.e Whether the engine will fire all the ten results in a parallel fashion or Whether the engine will file each rule one by one.
How RETE algorithm will improve the performance of the engine for rules fired in stateless session ?
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users