Oops... This e-mail went out too quickly.

There are 8M BINNING_INPUT facts that will eventually be reasoned upon... But only 10k at a time.

In other words, the matrix of BINNING_INPUT x LU_DEVICE_TYPE should be about 10k x 10k 

Dave

From: David Martin <david.martin@mercedsystems.com>
Reply-To: Rules Users List <rules-users@lists.jboss.org>
Date: Mon, 19 Dec 2011 16:23:21 +0000
To: "rules-users@lists.jboss.org" <rules-users@lists.jboss.org>
Subject: [rules-users] Poor performance from a simple join

Folks:

My co-workers and I have been using Drools to great success, but we ran smack into a performance brick wall recently.

In the example below, both BINNING_INPUT and LU_DEVICE_TYPE have large numbers of associated facts in working memory (BINNING_INPUT has more than 8 million facts in working memory, LU_DEVICE_TYPE about 10k.)

LU_DEVICE_TYPE models a lookup table.

rule "Binning for Attribute: Device_type_desc"
  when
    $call :
      BINNING_INPUT()
    $device_typeLookup :
      LU_DEVICE_TYPE(
        $call.device_type == device_type
      )

  then
    $call.setDevice_type_desc($device_typeLookup.getDevice_type_desc());
end

It's a simple enough rule: join on the device_type field.  Unfortunately, this rule and a few others like it are taking FOREVER to insert.  Even when I cut the number of BINNING_INPUT facts in working memory down from 8M to 10k.

This feels like a basic Drools question.  But I can't seem to find any help from google.

Please advise!

Thanks in advance,

Dave Martin

_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users