Interesting suggestions. Couple of questions:

Is drools not internally able to multithread a single execution of
fireallrules?

Does CEP offer performance benefits, or is it just a different way of
structuring the problem?


Cheers,
Tim

2010/10/12 Michael Anstis <michael.ans...@gmail.com>

> Can the aggregation or timestamp range be used to partion your data?
>
> e.g. if you're looking for a data pattern where a fact matches X and Y and
> Z can the most course constraint, say X, not be used to partion?
>
> So you may have pre-processing (to partion the data) before hitting other
> finer grained rules?
>
> Would CEP in stream mode provide an opportunity either?
>
> 2010/10/12 Wolfgang Laun <wolfgang.l...@gmail.com>
>
>  If you have to use a stateful session, with new objects being generated
>> in RHS code and triggering more rules, then you've had it (since there is no
>> way to split the 100k facts).
>>
>> If you don't create new facts in RHS code, you should investigate
>> stateless sessions. It should be more efficient.
>>
>> Also, think about what you RHS code does. Can this processing be delegated
>> to another thread? After a rule has fired, the "fate" of this activation is
>> firmly established; rather than executing (timeconsuming i/o?) operations
>> inline, queue the collected date to a processor thread and let this one
>> crunch it.
>>
>> (I've only thought about this for a few minutes, so there may be other
>> options.)
>>
>> -W
>>
>> 2010/10/12 Tim Jones <jones.ti...@gmail.com>
>>
>>>   Hello,
>>>
>>>
>>>
>>> I’m working on a project that needs a high performance rules system for
>>> processing batches of objects. Typically I’ll have a dozen or so rules, the
>>> most complex of which will aggregate several objects based on timestamps and
>>> specified data patterns. The objects will come in batches of a few 100ks.
>>> The system is reset back to the starting point after each batch is
>>> processed.
>>>
>>>
>>>
>>> My guess at doing this with Drools is that you load up all the rules and
>>> enter all the objects as “facts”. You then hit fireallrules and sit back and
>>> wait. Doing this, I only get so much performance and I can see that its only
>>> using a single thread. Is there a way to process the whole lot in a
>>> parallel, or multithreaded way? Unfortunately there's no natural way to
>>> partition the objects that would make things easier.
>>>
>>>
>>>
>>> Cheers,
>>>
>>> Tim
>>>
>>> _______________________________________________
>>> 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

Reply via email to