All very interesting.
Sadly, without spending time I don't have, this is beyond my level of
understanding.
Sometimes you have to be honest and admit you're out of your depth, so
I'll leave this with the experts...
Relative to this observer you're moving at one heck of a pace!
Thanks for the reply though.
Mike
________________________________
From: rules-dev-bounces(a)lists.jboss.org
[mailto:rules-dev-bounces@lists.jboss.org] On Behalf Of Mark Proctor
Sent: 01 August 2008 18:28
To: Rules Dev List
Subject: [rules-dev] [Fwd: Re: [rules-users] determinism with
rulebasepartitioning]
Forwarding the email to the dev mailing list, I meant the
conversation to be on this list anyway - sorry.
mark
-------- Original Message --------
I think that even with rulebase partitions, we should
continue to support current execution mode. So, we should keep a
rulebase configuration that basically allow the user to defines: either
single-thread (as it is today) or multi-thread (as we are trying to
achieve) execution.
Having that in mind, in the multi-thread mode:
(A) What does "parallel evaluation of a rulebase" mean? Is it
designed
to optimise, for example, two threads processing a stateless and
stateful session?
Means that rules that do not share nodes, being independent
of each other (from an evaluation perspective), will be evaluated in
parallel. This is very common scenario and a desidered feature in CEP
engines.
(B) Are there only two partitions, both of which are invisible
to the
user? Is there any value in allowing user-defined partitions?
There will be as many partitions as the compiler can create
for the given set of rules. Rules that share more nodes, are more
difficult to partition, while rules that are independent from an LHS
point of view, are easier to parallelize. In my opinion, the only thing
that may be helpful to expose and allow the user to control is the
maximum size of the thread pool that is used to propagate facts. Even
that I'm not sure is so helpful, because it is complex to fine tune such
things, since the partitioning is completely dependent on the rules
added to the rulebase.
(C) Does the partition used depend upon what type of session is
used
(i.e. stateless always uses the partition without an agenda
whereas
stateful always uses the partition with an agenda)?
The partitioning of the rulebase is dependent upon the rules
in the rulebase and nothing more. But that is different from the agenda.
The agenda issue is much more complex, because even with partitions we
can keep a single deterministic agenda (as long as it is not in active
mode - runUntilHalt). Now, if the agenda is in active mode, or if we
have multiple agendas (1 per partition, for instance), then the engine
behavior becomes indeterministic. This is a common scenario in CEP
systems that have multiple different "queries" running over the same set
of streams, trying to detect and act upon them as soon as they are
detected, and event streams are indeterministic by their own nature. In
common rules engines scenarios, I'm not sure we can run in this
indeterministic mode.
(D) Can a rule sometimes be deterministic and sometimes not
(i.e.
depends upon the type of session)?
It will always depend on the set of rules (the rulebase),
not the type of session. One rule is always deterministic when
considered in isolation, but two or more rules may or may not be
deterministic in relation to each other. Just remember Eisten's
Relativity Theory... ;)
[]s
Edson
2008/8/1 Anstis, Michael (M.) <manstis1(a)ford.com>
Hi Mark,
A few questions:-
(A) What does "parallel evaluation of a rulebase" mean?
Is it designed
to optimise, for example, two threads processing a
stateless and
stateful session?
(B) Are there only two partitions, both of which are
invisible to the
user? Is there any value in allowing user-defined
partitions?
(C) Does the partition used depend upon what type of
session is used
(i.e. stateless always uses the partition without an
agenda whereas
stateful always uses the partition with an agenda)?
(D) Can a rule sometimes be deterministic and sometimes
not (i.e.
depends upon the type of session)?
Cheers,
Mike
-----Original Message-----
From: rules-users-bounces(a)lists.jboss.org
[mailto:rules-users-bounces@lists.jboss.org] On Behalf
Of Mark Proctor
Sent: 01 August 2008 07:05
To: Rules Users List
Subject: [rules-users] determinism with rulebase
partitioning
We have rulebase partitioning almost working, this
allows parallel
evaluation of a rulebase. For stateless lessions with no
agenda this
will allow for much faster executions, where you don't
care about
deterministic execution. However for deterministic
execution its more
complicated. The current plan is to have an agenda per
parition, which
means that we no longer have rulebase wide deterministic
execution
order, only with the partition itself. The user is
unlikely to be aware
of the created partitions, so won't be aware of the
unditermistic
behavour of their rulebase. Anyone have any input on
mechanisms users
can do to help the rulebase know what needs to be
executed
deterministically and what doesn't?
Mark
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
JBoss Drools Core Development
JBoss, a division of Red Hat @
www.jboss.com