Answering this question in any meaningful way without more information is difficult. My
first instinct is to wonder if the database calls really need to be done directly from the
LHS of the rules, especially with this many of them. I hope you're able to cache the
database queries.
Anyway, in general, if you have that many rules it is usually best to keep them in a
fashion that's easily manageable, and that's what RBMSs are for. Apart from that
it's hard to address your question without more information. Are all of the 3500*0.9
rules evaluated for each input? Can the data from the database be prefetched into working
memory instead of fetched in each LHS? How often does this fetched data change? There are
many paths you could follow mattering on the answers to these questions and others.
--- On Fri, 8/14/09, Vijay K Pandey <VPandey(a)mdes.ms.gov> wrote:
From: Vijay K Pandey <VPandey(a)mdes.ms.gov>
Subject: [rules-users] Drrols 5 Expert --> Sequential vs Inference
To: "rules-users(a)lists.jboss.org" <rules-users(a)lists.jboss.org>
Date: Friday, August 14, 2009, 10:52 PM
Hi,
We have around 3500
business rules and
rules are mainly look up value based or based on the
associated data in the
RDBMS.
There are around 90%
processes where we
only need sequential rules check, the other 10% of
processes requires the
inference capability.
My
questions:
a)
Which is the best
way to go for this
– should we set up all the rules as inference through
stateful session or
segregate 90% as sequential and others as inference. Will
this segregation
going to give better performance in Drools 5 and
later?
b)
Lots of our LHS
depends on the data from
RDBMS – we insert 1 fact – then make use of
“from/collect” to get hold of various
associated data ---then do
some checks on the data fetched from RDBMS -- so is it
better to program them
in java directly or as sequential rules?
Any guidance will be
helpful?
Thanks
Vijay