Method and system for matching consumers to events
First Claim
1. A method of determining zero or more consumers interested in an event, said method comprising:
- receiving an event; and
using a search data structure to determine zero or more consumers interested in said event, said search data structure comprising a path having one or more levels, said one or more levels corresponding to one or more attributes, and wherein a value of at least one attribute is a don'"'"'t care value meaning traversal of the path is guaranteed to proceed irrespective of whether another path is also followed, wherein when said another path is also followed said search data structure comprises a spatially parallel search structure.
1 Assignment
0 Petitions
Accused Products
Abstract
A generalized search data structure is used to match consumers to events in event computing systems. The search data structure includes one or more paths from a root of the structure to one or more leaves of the structure. Each path has at least one level and each level corresponds to a filter attribute. The value of at least one filter attribute in at least one path is a don'"'"'t care value indicating traversal of that path is guaranteed to proceed. In addition to following the path with the don'"'"'t care value, one or more additional paths may also be followed. Thus, traversal of the search data structure may yield zero or more results, indicating that zero or more consumers match the specified event. Various optimizations of the search data structure are possible.
106 Citations
72 Claims
-
1. A method of determining zero or more consumers interested in an event, said method comprising:
-
receiving an event; and
using a search data structure to determine zero or more consumers interested in said event, said search data structure comprising a path having one or more levels, said one or more levels corresponding to one or more attributes, and wherein a value of at least one attribute is a don'"'"'t care value meaning traversal of the path is guaranteed to proceed irrespective of whether another path is also followed, wherein when said another path is also followed said search data structure comprises a spatially parallel search structure. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
specifying, by a consumer, a filter having one or more attribute values, said one or more attribute values corresponding to said one or more attributes; and
inserting said one or more attribute values into said search data structure.
-
-
7. The method of claim 6, wherein said inserting comprises storing said one or more attribute values in at least one node of said search data structure.
-
8. The method of claim 6, wherein said building further comprises indicating within said search data structure said consumer specifying said filter.
-
9. The method of claim 6, further comprising inserting into said search data structure one or more other attribute values specified by one or more other filters provided by one or more consumers, wherein a plurality of paths is created and wherein paths having a common prefix are merged.
-
10. The method of claim 9, wherein said event comprises one or more event attribute values, and wherein said using comprises traversing one or more paths of said search data structure using said event attribute values.
-
11. The method of claim 5, wherein said building comprises transforming said search data structure.
-
12. The method of claim 11, wherein a plurality of consecutive attributes in said path have a don'"'"'t care value, and wherein said transforming comprises combining levels within said path corresponding to said plurality of consecutive attributes having said don'"'"'t care values.
-
13. The method of claim 12, wherein said plurality of consecutive attributes in said path only have said don'"'"'t care value.
-
14. The method of claim 1, wherein said search data structure comprises a plurality of paths, and wherein said method further comprises computing a successor set for a node of said search data structure, said successor set defining how to traverse said search data structure after reaching said node.
-
15. The method of claim 14, wherein said computing comprises:
-
determining one or more subpaths associated with said node; and
identifying one or more successor nodes reached by traversing said one or more subpaths, said one or more successor nodes comprising said successor set.
-
-
16. The method of claim 15, wherein a path to said node is represented by one or more attribute values, at least one of said one or more attribute values having a concrete value, and wherein said determining comprises:
-
replacing one concrete attribute value with a don'"'"'t care value, wherein a subpath is created; and
repeating said replacing for any other attribute values having a concrete value, wherein only one attribute value is replaced at any given time.
-
-
17. The method of claim 16, wherein if a subpath is created that has a non-existent node, one or more successor nodes of said non-existent node is identified in said successor set, instead of said non-existent node.
-
18. The method of claim 1, wherein said search data structure comprises a plurality of sub-search data structures.
-
19. The method of claim 18, wherein said using comprises:
-
selecting one of said sub-search data structures; and
traversing said selected sub-search data structure to determine said zero or more consumers.
-
-
20. The method of claim 19, wherein said event comprises a plurality of event attributes, and wherein said selecting comprises using one or more values of one or more chosen attributes of said plurality of event attributes to select said subsearch data structure to be traversed.
-
21. The method of claim 5, wherein said building further comprises ordering said one or more attributes based upon its relative likelihood of having a concrete value in one or more filters, wherein those attributes most likely to have concrete values are tested earlier than those less likely to have concrete values.
-
22. The method of claim 1, wherein said zero or more consumers are subscribers of a publish/subscribe system and said receiving comprises receiving, from a publisher of said publish/subscribe system, said event.
-
23. A method of publishing an event in a publish/subscribe system, said method comprising:
-
providing, by a publisher of said publish/subscribe system, an event to be published to one or more subscribers of said publish/subscribe system, said event being independent of a group association and lacking a group identifier;
determining said one or more subscribers interested in said event, said determining comprising using a search data structure to determine said one or more subscribers, said search data structure comprising a path having one or more levels, said one or more levels corresponding to one or more attributes, and wherein a value of at least one attribute is a don'"'"'t care value meaning traversal of the path is guaranteed to proceed irrespective of whether another path is also followed, wherein when said another path is also followed said search data structure comprises a spatially parallel search structure; and
publishing said event to one or more subscribers indicating interest in said event. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30)
-
-
31. At least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform a method of determining zero or more consumers interested in an event, said method comprising:
-
receiving an event; and
using a search data structure to determine zero or more consumers interested in said event, said search data structure comprising a path having one or more levels, said one or more levels corresponding to one or more attributes, and wherein a value of at least one attribute is a don'"'"'t care value meaning traversal of the path is guaranteed to proceed irrespective of whether another path is also followed, wherein when said another path is also followed said search data structure comprises a spatially parallel search structure. - View Dependent Claims (32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51)
specifying, by a consumer, a filter having one or more attribute values, said one or more attribute values corresponding to said one or more attributes; and
inserting said one or more attribute values into said search data structure.
-
-
37. The at least one program storage device of claim 36, wherein said inserting comprises storing said one or more attribute values in at least one node of said search data structure.
-
38. The at least one program storage device of claim 36, wherein said building further comprises indicating within said search data structure said consumer specifying said filter.
-
39. The at least one program storage device of claim 36, wherein said method further comprises inserting into said search data structure one or more other attribute values specified by one or more other filters provided by one or more consumers, wherein a plurality of paths is created and wherein paths having a common prefix are merged.
-
40. The at least one program storage device of claim 39, wherein said event comprises one or more event attribute values, and wherein said using comprises traversing one or more paths of said search data structure using said event attribute values.
-
41. The at least one program storage device of claim 39, wherein said building comprises transforming said search data structure.
-
42. The at least one program storage device of claim 41, wherein a plurality of consecutive attributes in said path have a don'"'"'t care value, and wherein said transforming comprises combining levels within said path corresponding to said plurality of consecutive attributes having said don'"'"'t care values.
-
43. The at least one program storage device of claim 42, wherein said plurality of consecutive attributes in said path only have said don'"'"'t care value.
-
44. The at least one program storage device of claim 31, wherein said search data structure comprises a plurality of paths, and wherein said method further comprises computing a successor set for a node of said search data structure, said successor set defining how to traverse said search data structure after reaching said node.
-
45. The at least one program storage device of claim 44, wherein said computing comprises:
-
determining one or more subpaths associated with said node; and
identifying one or more successor nodes reached by traversing said one or more subpaths, said one or more successor nodes comprising said successor set.
-
-
46. The at least one program storage device of claim 45, wherein a path to said node is represented by one or more attribute values, at least one of said one or more attribute values having a concrete value, and wherein said determining comprises:
-
replacing one concrete attribute value with a don'"'"'t care value, wherein a subpath is created; and
repeating said replacing for any other attribute values having a concrete value, wherein only one attribute value is replaced at any given time.
-
-
47. The at least one program storage device of claim 46, wherein if a subpath is created that has a non-existent node, one or more successor nodes of said non-existent node is identified in said successor set, instead of said non-existent node.
-
48. The at least one program storage device of claim 31, wherein said search data structure comprises a plurality of sub-search data structures.
-
49. The at least one program storage device of claim 48, wherein said using comprises:
-
selecting one of said sub-search data structures; and
traversing said selected sub-search data structure to determine said zero or more consumers.
-
-
50. The at least one program storage device of claim 49, wherein said event comprises a plurality of event attributes, and wherein said selecting comprises using one or more values of one or more chosen attributes of said plurality of event attributes to select said sub-search data structure to be traversed.
-
51. The at least one program storage device of claim 35, wherein said building further comprises ordering said one or more attributes based upon its relative likelihood of having a concrete value in one or more filters, wherein those attributes most likely to have concrete values are tested earlier than those less likely to have concrete values.
-
52. At least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform a method of publishing an event in a publish/subscribe system, said method comprising:
-
providing, by a publisher of said publish/subscribe system, an event to be published to one or more subscribers of said publish/subscribe system, said event being independent of a group association and lacking a group identifier;
determining said one or more subscribers interested in said event, said determining comprising using a search data structure to determine said one or more subscribers, said search data structure comprising a path having one or more levels, said one or more levels corresponding to one or more attributes, and wherein a value of at least one attribute is a don'"'"'t care value meaning traversal of the path is guaranteed to proceed irrespective of whether another path is also followed, wherein when said another path is also followed said search data structure comprises a spatially parallel search structure; and
publishing said event to one or more subscribers indicating interest in said event. - View Dependent Claims (53, 54, 55, 56, 57, 58, 59)
-
-
60. An article of manufacture, comprising:
-
at least one computer usable medium having computer readable program code means embodied therein for causing the determining of zero or more consumers interested in an event, the computer readable program code means in said article of manufacture comprising;
computer readable program code means for causing a computer to receive an event; and
computer readable program code means for causing a computer to use a search data structure to determine zero or more consumers interested in said event, said search data structure comprising a path having one or more levels, said one or more levels corresponding to one or more attributes, and wherein a value of at least one attribute is a don'"'"'t care value meaning traversal of the path is guaranteed to proceed irrespective of whether another path is also followed, wherein when said another path is also followed said search data structure comprises a spatially parallel search structure. - View Dependent Claims (61, 62, 63, 64, 65, 66, 67)
-
-
68. An article of manufacture, comprising:
-
at least one computer usable medium having computer readable program code means embodied therein for causing the publishing of an event in a publish/subscribe system, the computer readable program code means in said article of manufacture comprising;
computer readable program code means for causing a computer to provide an event to be published to one or more subscribers of said publish/subscribe system, said event being independent of a group association and lacking a group identifier;
computer readable program code means for causing a computer to determine said one or more subscribers interested in said event, said determining comprising using a search data structure to determine said one or more subscribers, said search data structure comprising a path having one or more levels, said one or more levels corresponding to one or more attributes, and wherein a value of at least one attribute is a don'"'"'t care value meaning traversal of the path is guaranteed to proceed irrespective of whether another path is also followed, wherein when said another path is also followed said search data structure comprises a spatially parallel search structure; and
computer readable program code means for causing a computer to publish said event to one or more subscribers indicating interest in said event. - View Dependent Claims (69, 70)
-
-
71. A system of determining zero or more consumers interested in an event, said system comprising:
-
means for receiving an event; and
a search data structure usable in determining zero or more consumers interested in said event, said search data structure comprising a path having one or more levels, said one or more levels corresponding to one or more attributes, and wherein a value of at least one attribute is a don'"'"'t care value meaning traversal of the path is guaranteed to proceed irrespective of whether another path is also followed, wherein when said another path is also followed said search data structure comprises a spatially parallel search structure.
-
-
72. A system of publishing an event in a publish/subscribe system, said system comprising:
-
a publisher of said publish/subscribe system adapted to provide an event to be published to one or more subscribers of said publish/subscribe system, said event being independent of a group association and lacking a group identifier;
means for determining said one or more subscribers interested in said event, said means for determining comprising a search data structure useable in determining said one or more subscribers, said search data structure comprising a path having one or more levels, said one or more levels corresponding to one or more attributes, and wherein a value of at least one attribute is a don'"'"'t care value meaning traversal of the path is guaranteed to proceed irrespective of whether another path is also followed, wherein when said another path is also followed said search data structure comprises a spatially parallel search structure; and
means for publishing said event to one or more subscribers indicating interest in said event.
-
Specification