A method, system and computer program product for achieving a balance between pre-filter efficiency and pre-filter throughput. Event subscriptions are obtained for a given event consumer. The event subscriptions define the events to be routed to this event consumer. Pre-filters of varying complexity and filtering power are constructed based on these event subscriptions. A balance between pre-filter efficiency and pre-filter throughput may be achieved by selecting the best pre-filter out of these constructed pre-filters to filter events to its associated event consumer. The best pre-filter is selected by comparing a complexity threshold (e.g., a limit for the number of atomic Boolean expressions in a pre-filter) with the actual complexity (e.g., the actual number of atomic Boolean expressions) for each constructed pre-filter and selecting the most complex pre-filter without exceeding the threshold.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A method for achieving a balance between pre-filter efficiency and pre-filter throughput comprising the steps of: obtaining a plurality of event subscriptions which define a plurality of events to be routed to an event consumer; constructing a plurality of pre-filters of varying complexity and filtering power; and selecting, by a processor, one of said plurality of pre-filters to filter events to said event consumer based on comparing a threshold to a complexity measure for each of said plurality of pre-filters; wherein one of said plurality of pre-filters is constructed as being a conjunction of those conditions that all of said plurality of event subscriptions have in common.
2. The method as recited in claim 1 , wherein said selected one of said plurality of pre-filters has a largest number of atomic Boolean expressions that does not exceed said threshold.
3. The method as recited in claim 1 , wherein one of said plurality of pre-filters is constructed as a logical disjunction of all of said plurality of event subscriptions.
4. The method as recited in claim 1 , wherein one of said plurality of pre-filters is constructed as a logical disjunction of all event type checks of said plurality of event subscriptions where each event type check is AND-ed with those atomic Boolean conditions that are common across all subscriptions for events of this type.
5. The method as recited in claim 1 , wherein one of said plurality of pre-filters is constructed as a logical disjunction of all event type checks of said plurality of event subscriptions.
6. The method as recited in claim 1 , wherein one of said plurality of pre-filters is constructed by: partitioning said plurality of event subscriptions into sets having at least one common condition; performing a conjunction of those common conditions for each of said sets; and performing a logical disjunction of said conjunction of those common conditions for each of said sets.
7. The method as recited in claim 1 further comprising the step of: simplifying expressions of said plurality of pre-filters using factorization.
8. A system, comprising: a memory unit for storing a computer program for achieving a balance between pre-filter efficiency and pre-filter throughput; a processor coupled to said memory unit, wherein said processor, responsive to said computer program, comprises: circuitry for obtaining a plurality of event subscriptions which define a plurality of events to be routed to an event consumer; circuitry for constructing a plurality of pre-filters of varying complexity and filtering power; and circuitry for selecting one of said plurality of pre-filters to filter events to said event consumer based on comparing a threshold to a complexity measure for each of said plurality of pre-filters; wherein one of said plurality of pre-filters is constructed as being a conjunction of those conditions that all of said plurality of event subscriptions have in common.
9. The system as recited in claim 8 , wherein said selected one of said plurality of pre-filters has a largest number of atomic Boolean expressions that does not exceed said threshold.
10. The system as recited in claim 8 , wherein one of said plurality of pre-filters is constructed as a logical disjunction of all of said plurality of event subscriptions.
11. The system as recited in claim 8 , wherein one of said plurality of pre-filters is constructed as a logical disjunction of all event type checks of said plurality of event subscriptions where each event type check is AND-ed with those atomic Boolean conditions that are common across all subscriptions for events of this type.
12. The system as recited in claim 8 , wherein one of said plurality of pre-filters is constructed as a logical disjunction of all event type checks of said plurality of event subscriptions.
13. The system as recited in claim 8 , wherein one of said plurality of pre-filters is constructed by: partitioning said plurality of event subscriptions into sets having at least one common condition; performing a conjunction of those common conditions for each of said sets; and performing a logical disjunction of said conjunction of those common conditions for each of said sets.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
April 20, 2007
August 27, 2013
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.