 <?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>
<channel>
	<title>Comments on: Event-driven / event-handling rule engine performance&#8230;</title>
	<atom:link href="http://tibcoblogs.com/cep/index.php/2009/09/25/event-driven-event-handling-rule-engine-performance/feed/" rel="self" type="application/rss+xml" />
	<link>http://tibcoblogs.com/cep/2009/09/25/event-driven-event-handling-rule-engine-performance/</link>
	<description>Complex Event Processing (CEP)</description>
	<pubDate>Sat, 11 Feb 2012 22:05:57 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Peter Lin</title>
		<link>http://tibcoblogs.com/cep/2009/09/25/event-driven-event-handling-rule-engine-performance/comment-page-1/#comment-907</link>
		<dc:creator>Peter Lin</dc:creator>
		<pubDate>Wed, 30 Sep 2009 23:15:28 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/?p=822#comment-907</guid>
		<description>Agree 100% more work is needed to reach that point. I'm hoping another decade or two of dedication by many people will make significant progress.</description>
		<content:encoded><![CDATA[<p>Agree 100% more work is needed to reach that point. I&#8217;m hoping another decade or two of dedication by many people will make significant progress.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Vincent</title>
		<link>http://tibcoblogs.com/cep/2009/09/25/event-driven-event-handling-rule-engine-performance/comment-page-1/#comment-906</link>
		<dc:creator>Paul Vincent</dc:creator>
		<pubDate>Wed, 30 Sep 2009 21:22:40 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/?p=822#comment-906</guid>
		<description>Hi Peter: correct: state model is not an inference model, and yes we do need an interesting way of modeling inference. 

[By the way this was a goal of OMG PRR, but we failed to come up with any decent visual models so didn't fulfil that requirement. No vendor has AFAIK either...]

Also you will note that in TIBCO BE we don't claim that / target the BE rule language as being suitable for "business managers" or even "business analysts". It's a developer language (analysts are targeted by the BRMS, which tellingly does not map to the Rete production rules...).

In any case, I'm sure we can agree there is more work to be done on exploiting Rete rules. It will be interesting to see what Dr Forgy has to say on CEP and rules at ORF in a few weeks...

Cheers</description>
		<content:encoded><![CDATA[<p>Hi Peter: correct: state model is not an inference model, and yes we do need an interesting way of modeling inference. </p>
<p>[By the way this was a goal of OMG PRR, but we failed to come up with any decent visual models so didn't fulfil that requirement. No vendor has AFAIK either...]</p>
<p>Also you will note that in TIBCO BE we don&#8217;t claim that / target the BE rule language as being suitable for &#8220;business managers&#8221; or even &#8220;business analysts&#8221;. It&#8217;s a developer language (analysts are targeted by the BRMS, which tellingly does not map to the Rete production rules&#8230;).</p>
<p>In any case, I&#8217;m sure we can agree there is more work to be done on exploiting Rete rules. It will be interesting to see what Dr Forgy has to say on CEP and rules at ORF in a few weeks&#8230;</p>
<p>Cheers</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Lin</title>
		<link>http://tibcoblogs.com/cep/2009/09/25/event-driven-event-handling-rule-engine-performance/comment-page-1/#comment-903</link>
		<dc:creator>Peter Lin</dc:creator>
		<pubDate>Wed, 30 Sep 2009 13:03:18 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/?p=822#comment-903</guid>
		<description>I couldn't see the anti-RETE thread on CEP website. For the record, I'm not anti-RETE at all. Quite the opposite, I'm pro RETE and have spent the last 8 years dedicated to the study and advancement of RETE. At the same time, I'm brutally honest about the steep learning curve. Having good tools definitely helps, but there's no substitute for experience and deep understanding of pattern matching algorithms, theory and practice.

peter</description>
		<content:encoded><![CDATA[<p>I couldn&#8217;t see the anti-RETE thread on CEP website. For the record, I&#8217;m not anti-RETE at all. Quite the opposite, I&#8217;m pro RETE and have spent the last 8 years dedicated to the study and advancement of RETE. At the same time, I&#8217;m brutally honest about the steep learning curve. Having good tools definitely helps, but there&#8217;s no substitute for experience and deep understanding of pattern matching algorithms, theory and practice.</p>
<p>peter</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Lin</title>
		<link>http://tibcoblogs.com/cep/2009/09/25/event-driven-event-handling-rule-engine-performance/comment-page-1/#comment-902</link>
		<dc:creator>Peter Lin</dc:creator>
		<pubDate>Wed, 30 Sep 2009 12:58:57 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/?p=822#comment-902</guid>
		<description>From first hand experience building rule editors, rule optimizers and rule compilers, modeling a problem with UML state diagrams isn't sufficient by itself. I can take a state diagram and implement those rules several different ways with different performance characteristics. To make the executable rules optimal, one would need additional metadata beyond what UML provides.

I love declarative rules, but the same problem exists. Depending on how the user translates the business requirements into declarative rules affects the efficiency and performance. In the past, this has been the job of a knowledge engineer who has knowledge of both the business and technical domain.

My feeling is the tools have a long way to go towards making writing maintainable high performance rules easy. I've been working on these problems for over 8 years now. For example, I have a RETE topology cost function, which makes it easier to measure the average cost of a ruleset or rule. You can read the paper here.

http://jamocha.svn.sourceforge.net/viewvc/jamocha/morendo/doc/dynamic_typing.pdf

peter</description>
		<content:encoded><![CDATA[<p>From first hand experience building rule editors, rule optimizers and rule compilers, modeling a problem with UML state diagrams isn&#8217;t sufficient by itself. I can take a state diagram and implement those rules several different ways with different performance characteristics. To make the executable rules optimal, one would need additional metadata beyond what UML provides.</p>
<p>I love declarative rules, but the same problem exists. Depending on how the user translates the business requirements into declarative rules affects the efficiency and performance. In the past, this has been the job of a knowledge engineer who has knowledge of both the business and technical domain.</p>
<p>My feeling is the tools have a long way to go towards making writing maintainable high performance rules easy. I&#8217;ve been working on these problems for over 8 years now. For example, I have a RETE topology cost function, which makes it easier to measure the average cost of a ruleset or rule. You can read the paper here.</p>
<p><a href="http://jamocha.svn.sourceforge.net/viewvc/jamocha/morendo/doc/dynamic_typing.pdf" rel="nofollow">http://jamocha.svn.sourceforge.net/viewvc/jamocha/morendo/doc/dynamic_typing.pdf</a></p>
<p>peter</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Vincent</title>
		<link>http://tibcoblogs.com/cep/2009/09/25/event-driven-event-handling-rule-engine-performance/comment-page-1/#comment-901</link>
		<dc:creator>Paul Vincent</dc:creator>
		<pubDate>Wed, 30 Sep 2009 07:09:21 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/?p=822#comment-901</guid>
		<description>Peter, Opher: hopefully this will clarify some of these comments:
- TIBCO BE is Rete based but has the largest market share for CEP tools. Ergo Rete itself cannot be a "major barrier" versus other event pattern matching technologies... 
- However, the lack of good inference modeling constructs is certainly restricting exploiting Rete rule language use for knowledge-rich applications (way beyond simple ECA and CQL type event processing of course)
- Understanding *any* language / algorithm is key to performance. 
-- At EPTS5 a non-Rete CEP vendor mentioned how "we hope to be fast enough without tuning, so the customer gets good enough performance". Exactly the same with Rete type tools too.
- Accuracy? all languages should have well-defined semantics... the problem is performance vs ease of use. Accuracy should be a given.
- DSLs for CEP: something for a future discussion... :)
 
Note that in TIBCO BusinessEvents we:
- have both declarative rule and continuous query languages that exploit the Rete pattern matching algorithm
- provide a UML state model as a higher level abstraction for rule programming [but this is in no way a generic inference model]

For a further discussion on anti-Rete hype see http://www.linkedin.com/groupAnswers?viewQuestionAndAnswers=&amp;gid=1549797&amp;discussionID=3561358 


Cheers</description>
		<content:encoded><![CDATA[<p>Peter, Opher: hopefully this will clarify some of these comments:<br />
- TIBCO BE is Rete based but has the largest market share for CEP tools. Ergo Rete itself cannot be a &#8220;major barrier&#8221; versus other event pattern matching technologies&#8230;<br />
- However, the lack of good inference modeling constructs is certainly restricting exploiting Rete rule language use for knowledge-rich applications (way beyond simple ECA and CQL type event processing of course)<br />
- Understanding *any* language / algorithm is key to performance.<br />
&#8211; At EPTS5 a non-Rete CEP vendor mentioned how &#8220;we hope to be fast enough without tuning, so the customer gets good enough performance&#8221;. Exactly the same with Rete type tools too.<br />
- Accuracy? all languages should have well-defined semantics&#8230; the problem is performance vs ease of use. Accuracy should be a given.<br />
- DSLs for CEP: something for a future discussion&#8230; <img src='http://tibcoblogs.com/cep/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Note that in TIBCO BusinessEvents we:<br />
- have both declarative rule and continuous query languages that exploit the Rete pattern matching algorithm<br />
- provide a UML state model as a higher level abstraction for rule programming [but this is in no way a generic inference model]</p>
<p>For a further discussion on anti-Rete hype see <a href="http://www.linkedin.com/groupAnswers?viewQuestionAndAnswers=&#038;gid=1549797&#038;discussionID=3561358" rel="nofollow">http://www.linkedin.com/groupAnswers?viewQuestionAndAnswers=&#038;gid=1549797&#038;discussionID=3561358</a> </p>
<p>Cheers</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Lin</title>
		<link>http://tibcoblogs.com/cep/2009/09/25/event-driven-event-handling-rule-engine-performance/comment-page-1/#comment-900</link>
		<dc:creator>Peter Lin</dc:creator>
		<pubDate>Tue, 29 Sep 2009 17:11:40 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/?p=822#comment-900</guid>
		<description>I agree 10000% understanding RETE creates a major barrier for usability. I've been warning users of this issue for many years now. The problem is, very few people listen and the sales guys keep saying "it's easy, just write it." From an engine implementation perspective, I prefer to use DSL for high level abstraction and let experts translate that to low level rules. I've been thinking about the feasibility of a general purpose event language. The biggest challenge I see is ease of use vs accuracy.

A "user friendly" event language has to find the delicate balance between ease of use and accuracy. Ultimately, the user has to understand temporal logic. There's no way to get around that. The problem is, most people have zero understanding of temporal logic and don't realize they're writing garbage.

In the past, I encoded the temporal logic in the DSL, so the user doesn't have to know it. The limitation is the DSL isn't general purpose and can become brittle/obsolete over time.

peter</description>
		<content:encoded><![CDATA[<p>I agree 10000% understanding RETE creates a major barrier for usability. I&#8217;ve been warning users of this issue for many years now. The problem is, very few people listen and the sales guys keep saying &#8220;it&#8217;s easy, just write it.&#8221; From an engine implementation perspective, I prefer to use DSL for high level abstraction and let experts translate that to low level rules. I&#8217;ve been thinking about the feasibility of a general purpose event language. The biggest challenge I see is ease of use vs accuracy.</p>
<p>A &#8220;user friendly&#8221; event language has to find the delicate balance between ease of use and accuracy. Ultimately, the user has to understand temporal logic. There&#8217;s no way to get around that. The problem is, most people have zero understanding of temporal logic and don&#8217;t realize they&#8217;re writing garbage.</p>
<p>In the past, I encoded the temporal logic in the DSL, so the user doesn&#8217;t have to know it. The limitation is the DSL isn&#8217;t general purpose and can become brittle/obsolete over time.</p>
<p>peter</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Opher Etzion</title>
		<link>http://tibcoblogs.com/cep/2009/09/25/event-driven-event-handling-rule-engine-performance/comment-page-1/#comment-899</link>
		<dc:creator>Opher Etzion</dc:creator>
		<pubDate>Tue, 29 Sep 2009 17:00:59 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/?p=822#comment-899</guid>
		<description>The fact that a user has to understand how RETE works in order to get the performance right is actually a limitation for the usability, the solution may be to have a higher level intention oriented language that is translated into rules that are processed by a RETE engine instead of writing the low level rules.   

cheers,

Opher</description>
		<content:encoded><![CDATA[<p>The fact that a user has to understand how RETE works in order to get the performance right is actually a limitation for the usability, the solution may be to have a higher level intention oriented language that is translated into rules that are processed by a RETE engine instead of writing the low level rules.   </p>
<p>cheers,</p>
<p>Opher</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Lin</title>
		<link>http://tibcoblogs.com/cep/2009/09/25/event-driven-event-handling-rule-engine-performance/comment-page-1/#comment-895</link>
		<dc:creator>Peter Lin</dc:creator>
		<pubDate>Mon, 28 Sep 2009 21:02:42 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/?p=822#comment-895</guid>
		<description>Actually, the comment from the user "don't set the update frequency of your timestamp fact too high!" show the user doesn't understand how to use a RETE engine. He shouldn't be using a timestamp fact.

I pointed out this one example to illustrate the difficulty of understanding how to write good rules that scale well. Instead of using a fact for timestamp, the user should have used a function and avoided modifying the timestamp fact.

The average rule user doesn't have a clue how a production rule engine works and doesn't realize they're doing something really bad. On the surface, it looks ok. Unless someone has a deep understanding of how RETE engines work, they'll keep doing things that bring the engine to a crawl. The sad thing is, the example I cited isn't the first time that type of question has been asked by a developer.

I've seen that type of question asked countless times and most of the users never take time to understand how to write performant rules. Instead, they make false assumptions and write procedural rules thinking it will all work. when it doesn't they blame the engine or RETE and don't realize they don't understand RETE.

peter</description>
		<content:encoded><![CDATA[<p>Actually, the comment from the user &#8220;don&#8217;t set the update frequency of your timestamp fact too high!&#8221; show the user doesn&#8217;t understand how to use a RETE engine. He shouldn&#8217;t be using a timestamp fact.</p>
<p>I pointed out this one example to illustrate the difficulty of understanding how to write good rules that scale well. Instead of using a fact for timestamp, the user should have used a function and avoided modifying the timestamp fact.</p>
<p>The average rule user doesn&#8217;t have a clue how a production rule engine works and doesn&#8217;t realize they&#8217;re doing something really bad. On the surface, it looks ok. Unless someone has a deep understanding of how RETE engines work, they&#8217;ll keep doing things that bring the engine to a crawl. The sad thing is, the example I cited isn&#8217;t the first time that type of question has been asked by a developer.</p>
<p>I&#8217;ve seen that type of question asked countless times and most of the users never take time to understand how to write performant rules. Instead, they make false assumptions and write procedural rules thinking it will all work. when it doesn&#8217;t they blame the engine or RETE and don&#8217;t realize they don&#8217;t understand RETE.</p>
<p>peter</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Vincent</title>
		<link>http://tibcoblogs.com/cep/2009/09/25/event-driven-event-handling-rule-engine-performance/comment-page-1/#comment-894</link>
		<dc:creator>Paul Vincent</dc:creator>
		<pubDate>Mon, 28 Sep 2009 18:38:08 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/?p=822#comment-894</guid>
		<description>Hi Peter: 

In the JESS case you mention the thread ends with the comment
"don't set the update frequency of you timestamp fact to high!!!"
- which presumably is something particular to JESS or the user's application...

In BE the events are presumed to be pushed, not polled, so if you wanted to poll you would have to set up a rule timer to and associated action. (Or a scheduler).

But I don't think a polling frequency setting is anything to do with Rete per se. And the basics of Rete (which are probably my level of understanding) - for example as documented in OMG PRR - are usually sufficient for most cases except in developing clever Waltz and Manners type programs. For the latter, then yes, a couple of years' worth of experience may be useful!!!

Cheers</description>
		<content:encoded><![CDATA[<p>Hi Peter: </p>
<p>In the JESS case you mention the thread ends with the comment<br />
&#8220;don&#8217;t set the update frequency of you timestamp fact to high!!!&#8221;<br />
- which presumably is something particular to JESS or the user&#8217;s application&#8230;</p>
<p>In BE the events are presumed to be pushed, not polled, so if you wanted to poll you would have to set up a rule timer to and associated action. (Or a scheduler).</p>
<p>But I don&#8217;t think a polling frequency setting is anything to do with Rete per se. And the basics of Rete (which are probably my level of understanding) - for example as documented in OMG PRR - are usually sufficient for most cases except in developing clever Waltz and Manners type programs. For the latter, then yes, a couple of years&#8217; worth of experience may be useful!!!</p>
<p>Cheers</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Lin</title>
		<link>http://tibcoblogs.com/cep/2009/09/25/event-driven-event-handling-rule-engine-performance/comment-page-1/#comment-893</link>
		<dc:creator>Peter Lin</dc:creator>
		<pubDate>Sat, 26 Sep 2009 05:27:02 +0000</pubDate>
		<guid isPermaLink="false">http://tibcoblogs.com/cep/?p=822#comment-893</guid>
		<description>Hi paul,

You've been around rules for much longer than me, so I'm sure you've seen this hundreds of times over the years. On CLIPS and JESS mailing list, this type of thing happens all the time. Earlier this year, someone was trying to use JESS for event stream processing and was running into problems.

The individual asked for help. After he discovered the watch command, he realized the mistake. The details of this one case is in jess mail archive (http://www.mail-archive.com/jess-users@sandia.gov/msg10787.html).

Even though the user found a workable solution with some help, he still doesn't understand how to write performant rules. The types of cases I've seen weren't due to business analysts writing rules. Typically, I see developers making these mistakes. I've seen very bright senior engineers struggle with RETE and never really get it.

It's probably taboo to say this, but learning how to use a RETE rule engine requires several years of dedicated study. An engineer with 4-5 months to make a prototype simply doesn't have the time to learn how to write great rules. More likely than not, they make all the same mistakes and then mistakenly think product X is bad for my project.

peter</description>
		<content:encoded><![CDATA[<p>Hi paul,</p>
<p>You&#8217;ve been around rules for much longer than me, so I&#8217;m sure you&#8217;ve seen this hundreds of times over the years. On CLIPS and JESS mailing list, this type of thing happens all the time. Earlier this year, someone was trying to use JESS for event stream processing and was running into problems.</p>
<p>The individual asked for help. After he discovered the watch command, he realized the mistake. The details of this one case is in jess mail archive (http://www.mail-archive.com/jess-users@sandia.gov/msg10787.html).</p>
<p>Even though the user found a workable solution with some help, he still doesn&#8217;t understand how to write performant rules. The types of cases I&#8217;ve seen weren&#8217;t due to business analysts writing rules. Typically, I see developers making these mistakes. I&#8217;ve seen very bright senior engineers struggle with RETE and never really get it.</p>
<p>It&#8217;s probably taboo to say this, but learning how to use a RETE rule engine requires several years of dedicated study. An engineer with 4-5 months to make a prototype simply doesn&#8217;t have the time to learn how to write great rules. More likely than not, they make all the same mistakes and then mistakenly think product X is bad for my project.</p>
<p>peter</p>
]]></content:encoded>
	</item>
</channel>
</rss>

