Tracking large numbers of moving objects in an event processing system
First Claim
1. A method comprising:
- receiving, by a computer system, an input event stream comprising a sequence of events, the sequence of events representing movement of a plurality of objects, wherein the input event stream includes a first event of the sequence of events, the first event being associated with a first object of the plurality of objects; and
partitioning, by the computer system, the input event stream among a plurality of processing nodes to facilitate parallel tracking of the plurality of objects using a plurality of bit vectors that correspond to the plurality of processing nodes, wherein each of the plurality of bit vectors comprises a plurality of bit values corresponding to the plurality of objects, wherein each processing node of the plurality of processing nodes is configured to track those of the plurality of objects having spatial positions in a predefined spatial region, and wherein the predefined spatial regions for at least two processing nodes in the plurality of processing nodes overlap, wherein the partitioning for the first event includes;
determining, by the computer system, a spatial position of the first object based upon the first event;
determining, by the computer system, that the spatial position of the first object is in the predefined spatial region tracked by a first processing node of the plurality of processing nodes;
determining, by the computer system using a first bit value of a first bit vector of the plurality of bit vectors that is associated with the first processing node, that the first processing node is not currently tracking the first object, wherein the first bit value is associated with the first object;
changing, by the computer system, the first bit value from a first value to a second value that is different than the first value; and
transmitting, by the computer system, a command to the first processing node for inserting the first event into a first spatial-region-representing relation that is operated upon by the first processing node.
1 Assignment
0 Petitions
Accused Products
Abstract
Techniques for tracking large numbers of moving objects in an event processing system are provided. An input event stream can be received, where the events in the input event stream represent the movement of a plurality of geometries or objects. The input event stream can then be partitioned among a number of processing nodes of the event processing system, thereby enabling parallel processing of one or more continuous queries for tracking the objects. The partitioning can be performed such that each processing node is configured to track objects in a predefined spatial region, and the spatial regions for at least two nodes overlap. This overlapping window enables a single node to find, e.g., all of the objects within a particular distance of a target object, even if the target object is in the process of moving from the region of that node to the overlapping region of another node.
464 Citations
20 Claims
-
1. A method comprising:
-
receiving, by a computer system, an input event stream comprising a sequence of events, the sequence of events representing movement of a plurality of objects, wherein the input event stream includes a first event of the sequence of events, the first event being associated with a first object of the plurality of objects; and partitioning, by the computer system, the input event stream among a plurality of processing nodes to facilitate parallel tracking of the plurality of objects using a plurality of bit vectors that correspond to the plurality of processing nodes, wherein each of the plurality of bit vectors comprises a plurality of bit values corresponding to the plurality of objects, wherein each processing node of the plurality of processing nodes is configured to track those of the plurality of objects having spatial positions in a predefined spatial region, and wherein the predefined spatial regions for at least two processing nodes in the plurality of processing nodes overlap, wherein the partitioning for the first event includes; determining, by the computer system, a spatial position of the first object based upon the first event; determining, by the computer system, that the spatial position of the first object is in the predefined spatial region tracked by a first processing node of the plurality of processing nodes; determining, by the computer system using a first bit value of a first bit vector of the plurality of bit vectors that is associated with the first processing node, that the first processing node is not currently tracking the first object, wherein the first bit value is associated with the first object; changing, by the computer system, the first bit value from a first value to a second value that is different than the first value; and transmitting, by the computer system, a command to the first processing node for inserting the first event into a first spatial-region-representing relation that is operated upon by the first processing node. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A non-transitory computer readable medium having stored thereon program code executable by a processor, the program code comprising:
-
code that causes the processor to receive an input event stream comprising a sequence of events, the sequence of events representing movement of a plurality of objects, wherein the input event stream includes a first event of the sequence of events, the first event being associated with a first object of the plurality of objects; and code that causes the processor to partition the input event stream among a plurality of processing nodes to facilitate parallel tracking of the plurality of objects using a plurality of bit vectors that correspond to the plurality of processing nodes, wherein each of the plurality of bit vectors comprises a plurality of bit values corresponding to the plurality of objects, wherein each processing node of the plurality of processing nodes is configured to track those of the plurality of objects having spatial positions in a predefined spatial region, and wherein the predefined spatial regions for at least two processing nodes in the plurality of processing nodes overlap, wherein the partitioning for the first event includes; determining a spatial position of the first object based upon the first event; determining that the spatial position of the first object is in the predefined spatial region tracked by a first processing node of the plurality of processing nodes; determining, using a first bit value of a first bit vector of the plurality of bit vectors that is associated with the first processing node, that the first processing node is not currently tracking the first object, wherein the first bit value is associated with the first object; changing the first bit value from a first value to a second value that is different than the first value; and transmitting a command to the first processing node for inserting the first event into a first spatial-region-representing relation that is operated upon by the first processing node. - View Dependent Claims (14, 15, 16)
-
-
17. An event processing system, comprising:
-
a load balancer node; and a plurality of processing nodes, wherein the load balancer node is configured to; receive an input event stream comprising a sequence of events, the sequence of events representing movement of a plurality of objects, wherein the input event stream includes a first event of the sequence of events, the first event being associated with a first object of the plurality of objects; and partition the input event stream among the plurality of processing nodes to facilitate parallel tracking of the plurality of objects using a plurality of bit vectors that correspond to the plurality of processing nodes, wherein each of the plurality of bit vectors comprises a plurality of bit values corresponding to the plurality of objects, wherein each processing node of the plurality of processing nodes is configured to track those of the plurality of objects having spatial positions in a predefined spatial region, and wherein the predefined spatial regions for at least two processing nodes in the plurality of processing nodes overlap, wherein the partitioning for the first event includes; determining a spatial position of the first object based upon the first event; determining that the spatial position of the first object is in the predefined spatial region tracked by a first processing node of the plurality of processing nodes; determining, using a first bit value of a first bit vector of the plurality of bit vectors that is associated with the first processing node, that the first processing node is not currently tracking the first object, wherein the first bit value is associated with the first object; changing the first bit value from a first value to a second value that is different than the first value; and transmitting a command to the first processing node for inserting the first event into a first spatial-region-representing relation that is operated upon by the first processing node. - View Dependent Claims (18, 19, 20)
-
Specification