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. Each claim is shown in both the original legal language and a plain English translation.
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.
A method balances event pre-filter efficiency and throughput. It obtains event subscriptions that define events routed to a consumer. It constructs multiple pre-filters with different complexities and filtering power. A processor selects a pre-filter to filter events based on comparing a threshold to each pre-filter's complexity. One pre-filter is built by combining conditions common to all event subscriptions (conjunction). This method aims to optimize event routing by choosing pre-filters that efficiently reduce the event stream without excessive computational overhead.
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.
The method of balancing pre-filter efficiency and throughput selects a pre-filter, from the multiple pre-filters with different complexities and filtering power, that has the largest number of atomic Boolean expressions (basic true/false conditions) without exceeding a predefined complexity threshold. This threshold limits the computational cost associated with each pre-filter. The pre-filter is selected based on comparing the threshold to a complexity measure for each of the pre-filters, and it is used to filter events to an event consumer based on event subscriptions that define events routed to that consumer.
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.
The method of balancing pre-filter efficiency and throughput constructs one pre-filter as a logical disjunction (OR) of all event subscriptions. This means the pre-filter passes an event if it matches any of the individual event subscriptions. Other pre-filters with different complexities and filtering powers are also constructed. A processor selects a pre-filter to filter events based on comparing a threshold to each pre-filter's complexity and applies it to filter events to an event consumer based on event subscriptions that define events routed to that consumer.
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.
The method of balancing pre-filter efficiency and throughput constructs one pre-filter as follows: it takes all event type checks from the event subscriptions and logically ORs them together. Each event type check is also ANDed with conditions common to all subscriptions of that event type. This pre-filter filters for specific event types and also checks for common conditions within each type. Other pre-filters with different complexities and filtering powers are also constructed. A processor selects a pre-filter to filter events based on comparing a threshold to each pre-filter's complexity and applies it to filter events to an event consumer based on event subscriptions that define events routed to that consumer.
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.
The method of balancing pre-filter efficiency and throughput constructs one pre-filter as a logical disjunction (OR) of all event type checks from all event subscriptions. This pre-filter checks the event type against all possible types defined in the subscriptions. Other pre-filters with different complexities and filtering powers are also constructed. A processor selects a pre-filter to filter events based on comparing a threshold to each pre-filter's complexity and applies it to filter events to an event consumer based on event subscriptions that define events routed to that consumer.
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.
The method of balancing pre-filter efficiency and throughput constructs one pre-filter by: first partitioning the event subscriptions into sets, where each set has at least one condition in common. Then, it performs a conjunction (AND) of the common conditions for each set. Finally, it performs a logical disjunction (OR) of the resulting conjunctions from each set. This creates a pre-filter that checks if an event satisfies the common conditions of at least one subscription set. Other pre-filters with different complexities and filtering powers are also constructed. A processor selects a pre-filter to filter events based on comparing a threshold to each pre-filter's complexity and applies it to filter events to an event consumer based on event subscriptions that define events routed to that consumer.
7. The method as recited in claim 1 further comprising the step of: simplifying expressions of said plurality of pre-filters using factorization.
The method of balancing pre-filter efficiency and throughput includes simplifying the expressions of the generated pre-filters using factorization. This aims to reduce the complexity of the pre-filters and improve their throughput. The event subscriptions define events to be routed to an event consumer. Pre-filters of varying complexity and filtering power are constructed. The method selects a pre-filter to filter events based on comparing a threshold to a complexity measure for each pre-filter. One pre-filter is constructed as a conjunction of those conditions that all of the event subscriptions have in common.
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.
A system balances event pre-filter efficiency and throughput. It has a memory to store a program and a processor. The processor: obtains event subscriptions defining events routed to a consumer; constructs multiple pre-filters with varying complexity and filtering power; selects a pre-filter to filter events based on comparing a threshold to each pre-filter's complexity. One pre-filter is constructed by combining the conditions common to all event subscriptions (conjunction). This system optimizes event routing by choosing pre-filters to efficiently reduce the event stream without excessive computational overhead.
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.
The system for balancing pre-filter efficiency and throughput selects a pre-filter, from the multiple pre-filters with different complexities and filtering power, that has the largest number of atomic Boolean expressions (basic true/false conditions) without exceeding a predefined complexity threshold. This threshold limits the computational cost associated with each pre-filter. The pre-filter is selected based on comparing the threshold to a complexity measure for each of the pre-filters, and it is used to filter events to an event consumer based on event subscriptions that define events routed to that consumer.
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.
The system for balancing pre-filter efficiency and throughput constructs one pre-filter as a logical disjunction (OR) of all event subscriptions. This means the pre-filter passes an event if it matches any of the individual event subscriptions. Other pre-filters with different complexities and filtering powers are also constructed. A processor selects a pre-filter to filter events based on comparing a threshold to each pre-filter's complexity and applies it to filter events to an event consumer based on event subscriptions that define events routed to that consumer.
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.
The system for balancing pre-filter efficiency and throughput constructs one pre-filter as follows: it takes all event type checks from the event subscriptions and logically ORs them together. Each event type check is also ANDed with conditions common to all subscriptions of that event type. This pre-filter filters for specific event types and also checks for common conditions within each type. Other pre-filters with different complexities and filtering powers are also constructed. A processor selects a pre-filter to filter events based on comparing a threshold to each pre-filter's complexity and applies it to filter events to an event consumer based on event subscriptions that define events routed to that consumer.
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.
The system for balancing pre-filter efficiency and throughput constructs one pre-filter as a logical disjunction (OR) of all event type checks from all event subscriptions. This pre-filter checks the event type against all possible types defined in the subscriptions. Other pre-filters with different complexities and filtering powers are also constructed. A processor selects a pre-filter to filter events based on comparing a threshold to each pre-filter's complexity and applies it to filter events to an event consumer based on event subscriptions that define events routed to that consumer.
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.
The system for balancing pre-filter efficiency and throughput constructs one pre-filter by: first partitioning the event subscriptions into sets, where each set has at least one condition in common. Then, it performs a conjunction (AND) of the common conditions for each set. Finally, it performs a logical disjunction (OR) of the resulting conjunctions from each set. This creates a pre-filter that checks if an event satisfies the common conditions of at least one subscription set. Other pre-filters with different complexities and filtering powers are also constructed. A processor selects a pre-filter to filter events based on comparing a threshold to each pre-filter's complexity and applies it to filter events to an event consumer based on event subscriptions that define events routed to that consumer.
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.