The event-based computation paradigm has grown in importance for enterprises. For example, many business applications and system control applications can be developed based on event-based computation. Generally, event processing applications receive events, analyze the events, and output results (e.g., proposed actions) based on the analysis of the events.
Some event sources produce a stream of events. When an event having an incorrect payload is produced, another event with the correct payload may be subsequently produced, effectively “overwriting” the earlier incorrect event. Because the frequency of events, and by extension the frequency of error-correcting events, may be random, event processing systems generally wait for a subsequent event before processing a prior event. By waiting for a subsequent event, the event processing system may be able to verify that it is operating on the “correct” payload. However, this waiting process may introduce undesirable latency in the event processing system.
The present disclosure describes time-based event processing using punctuation events. Punctuation events having a punctuation timestamp are received by an event processing system. A punctuation event “promises” the event processing system that no subsequently received events will have a validity time period that starts earlier than the punctuation timestamp. Thus, event processing systems may determine that the payload of an event is “finalized” or “correct” when a punctuation event is received, instead of waiting for a subsequent event.
The use of punctuation events may enable event processing systems to produce multiple query results with respect to events. For example, a “preliminary” result may be produced with respect to a particular event when a subsequent punctuation event is received, because the event processing system may infer that the payload of the particular event is finalized, even though the validity time period of the particular event may not be finalized. When both the payload and the validity time period of the particular event are finalized, the event processing system may produce a “finalized” result. Because many sinks (e.g., clients) of the event processing system operate based on event payloads, and not event validity periods, the use of punctuation events may reduce undesirable latency in event processing systems (e.g., because the sinks may be able to make decisions based on the preliminary results instead of waiting for the finalized results).
This Summary is provided to introduce a selection of concepts in a simplified form that are further described in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
Systems, methods, and computer-readable media to perform time-based event processing using punctuation events are disclosed. In a particular embodiment, a method includes receiving, at a computer system, a first event object that includes a first validity start time and a first validity end time that is initially undefined. The method includes, after receiving the first event object, receiving a punctuation event object that includes a punctuation timestamp indicating a time subsequent to the first validity start time. The punctuation event object indicates that event objects received at the computer system after the punctuation event object will have validity start times later than the time indicated by the punctuation timestamp. The method further includes setting the first validity end time to a value later than or equal to the time indicated by the punctuation timestamp.
In another particular embodiment, a system is disclosed that includes a processor and a memory communicatively coupled to the processor. The memory stores instructions, that when executed by the processor, trigger an insertion event indicating the arrival of an unfinalized event object with a valid payload. The instructions, when executed by the processor, also trigger an punctuation event represented by a punctuation event object, where the punctuation event object has a timestamp preventing later received event objects from overwriting the valid payload of the unfinalized event object. The instructions, when executed by the processor, further trigger a lifetime shrink event creating a finalized event object by setting a newly defined validity end time for the unfinalized event object.
In another particular embodiment, a computer-readable storage medium is disclosed that includes instructions, that when executed by a computer, cause the computer to receive a plurality of unfinalized event objects, where each unfinalized event object includes a validity start time and a validity end time that is initially undefined. The computer-readable medium also includes instructions, that when executed by the computer, cause the computer to generate a plurality of preliminary results with respect to the plurality of unfinalized event objects. The computer-readable medium further includes instructions, that when executed by the computer, cause the computer to receive a punctuation event including a punctuation timestamp indicating a time subsequent to the validity start times of each of the unfinalized events. The computer-readable medium includes instructions, that when executed by the computer, cause the computer to receive a post-punctuation event object including a post-punctuation validity start time subsequent to the time indicated by the punctuation timestamp. The computer-readable medium also includes instructions, that when executed by the computer, cause the computer to convert the plurality of unfinalized events to a plurality of finalized events by setting the validity end times of each of the unfinalized events to be equal to the post-punctuation validity start time. The computer-readable medium includes further instructions, that when executed by the computer, cause the computer to generate a plurality of finalized results with respect to the plurality of finalized event objects.
The input adapter 108 at the system 100 is configured to receive event objects, such as the event object 104, from the source 102 and to transmit the event objects to the query processing engine 110. For example, the source 102 may include a database, a server, an event ticker, a network port, a sensor, or some other event source that provides events to the input adapter 108. Event objects transmitted to the query processing engine may include an event payload, a validity start time, and a validity end time. The validity end time may initially be undefined. For example, the event object 104 includes a validity start time of 1 (Vstart=1) and an undefined validity end time (Vend=∞).
The query processing engine 110 is configured to execute the query 112 with respect to event objects (e.g., the event object 104) to generate result objects (e.g., the result objects 116 and 118). Validity start times and validity end times may enable the query processing engine 110 to execute time-based queries (e.g., the query 112 may be a continuously executing limited latency query such as a sliding window query or a hopping window query). For example, an event may be “valid” during the time period between the event's validity start time and validity end time, and may be “invalid” during other times.
The query processing engine 110 is also configured to receive punctuation event objects, such as the punctuation event object 106. Each punctuation event object includes a punctuation timestamp. For example, the punctuation event object 106 includes a punctuation timestamp of “1+c,” where ‘c’ represents a chronon, the smallest unit of time measurement at the computer system. In systems that process events that have validity time periods, such as the system 100 of
When the query processing engine 110 receives a punctuation event object, the query processing engine 110 may finalize previously received unfinalized events. For example, the query processing engine 110 may set the initially undefined validity end time of such unfinalized events to a value later than or equal to the time indicated by the punctuation timestamp of the punctuation event object. In a particular embodiment, the query processing engine 110 waits for a second event object to be received and sets the validity end time of the unfinalized event object to the validity start time of the second event object. For example, after receiving the punctuation event object 106, the query processing engine 110 may receive a second event object with Vstart=2 from the source 102. Because Vstart=2 for the second event object, the query processing engine 110 may infer that Vend for the first event object 104 cannot be greater than 2, and may set Vend for the first event object 104 to 2.
While the validity end time of an event is undefined, a “preliminary” result (e.g., the preliminary result 116) from query execution may be generated based on the event. The result from query execution is said to be “preliminary” because it is not known how long the event, and therefore the result, will be valid. When the validity end time of an event is defined, a “finalized” result (e.g., the finalized result 118) may be generated. The result is said to be “finalized” because it is known that the validity time interval of the event, and therefore the result, will not change.
It should be noted that multiple unfinalized event objects with undefined validity end times may be finalized after receiving a single punctuation event object. For example, a second event object may be received at the system 100 after the event object 104 but prior to the punctuation event object 106, where the validity end time of the second event object is also undefined. Upon receipt of the punctuation event object 106, the query processing engine 110 may set the validity end time of the second event object to a value later than or equal to “1+c.” It should also be noted that a frequency of occurrence of punctuation event objects at the system 100 may be user-defined or system-controlled.
The output adapter 114 at the system 100 is configured to transmit result objects, such as the result objects 116 and 118, to the sink 120. For example, the sink 120 may be a remote client of the system 100 that includes a communications device, a mobile device, a computer system, a database, a server, an event store, or some other consumer of result objects produced by the system 100. Result objects transmitted to the sink 120 may include a result payload, a validity start time, and a validity end time. The validity end time may be undefined for preliminary result objects (e.g., Vend=∞ for the preliminary result object 116) and may be defined for finalized result objects (e.g., Vend=2 for the finalized result object 118).
In operation, the input adapter 108 may receive the event object 104 from the source 102, where the event object 104 has a validity start time Vstart=1 and a validity end time Vend=∞. The query processing engine 110 may execute the query 112 with respect to the event object 104 to generate the preliminary result object 116. The preliminary result object 116 may indicate the validity start time (e.g., Vstart=1) and the validity end time (e.g., Vend=∞) of the event object 104. The output adapter 114 may transmit the preliminary result object 116 to the sink 120.
Subsequent to receiving the event object 104, the input adapter 108 may receive the punctuation event object 106 with the punctuation timestamp “1+c.” Upon receiving the punctuation event object 106, the query processing engine 110 may determine that the validity end time of event object may not be earlier than “1+c.” For example, the query processing engine 110 may set the validity end time of the event object 104 to Vend=2 (e.g., when a subsequent event object having Vstart=2 is received). A finalized result object 118 may be generated by the event processing engine 110 and may be transmitted to the sink 120 by the output adapter 114.
It should be noted that although the particular embodiment illustrated in
It will be appreciated that the system 100 of
Table 210 illustrates a sequence of operations at the event processing system when no punctuation event objects (e.g., CTI event objects) are used. When no punctuation event objects are used at an event processing system, the event processing system may produce finalized results, but not preliminary results. Initially, a first event object having a validity start time of 1 and a validity end time of ∞ is received, at 211. The first event object includes a temperature reading of 71° F. Next, the validity end time of the first event object is set to 2, at 212, because a second event object having a validity start time of 2, a validity end time of ∞, and a temperature reading of 90° F. has been received, at 213. When the second event object is received, the event processing system may determine that because the temperature has changed (e.g., from 71° F. to 90° F.), the validity of the 71° temperature reading ended at the validity start time of the 90° temperature reading. When the validity end time of the first event object is set to 2, the first event object becomes finalized and the event processing system transmits a result object indicating that conditions are within bounds. However, the second event indicates that the temperature has risen from 71° F. to 90° F., which is out of the upper operational bounds of 80° F. The event processing system may not transmit a result object indicating the out-of-bounds condition because the second event object is not yet finalized (i.e., the second event object has an undefined validity end time).
Eight seconds later, the validity end time of the second event object is set to 10, at 214, because a third event object having a validity start time of 10, a validity end time of ∞, and a temperature reading of 95° F. has been received, at 215. When the validity end time of the second object is set to 10, the second event object becomes finalized and the event processing system transmits a second result object indicating that conditions are out-of-bounds. It will be appreciated that due to the lack of punctuation event objects and without the ability to generate preliminary results, the event processing system did not communicate the out-of-bounds condition until 8 seconds had elapsed.
Table 220 illustrates a sequence of operations at an event processing system that implements punctuation event objects as described with reference to the punctuation event object 106 of
Initially, an insert event 221 may occur, indicating the arrival of a first event object having a validity start time of 1, a validity end time of ∞, and a temperature reading of 71° F. A first CTI event 222 may then occur, where the first CTI event 222 is represented by a CTI event object having a timestamp “1+c.” Because the CTI event 222 has a timestamp of “1+c,” the event processing system may infer that no subsequently received event objects will have a validity start time earlier than “1+c.” That is, no subsequently received event objects may “overwrite” the fact that the temperature was 71° when the first event object was transmitted. Therefore, based on the first CTI event 222, the event processing system may treat the 71° F. temperature reading reported by the first event object as finalized. That is, the event processing system may treat the payload of the first event object as finalized, even though the validity end time for the first event object is still undefined, and the event processing system generates a first preliminary result indicating the finalized temperature reading of 71° F. It will thus be appreciated that a preliminary result may indicate a finalized payload while also having an unfinalized validity time period.
Next, the event processing system may trigger the occurrence of a first lifetime shrink event 223, where the validity end time of the first event object is set from ∞ to a value later than or equal to “1+c.” For example, the validity end time of the first event object may be set to 2 when a second event object with a temperature reading of 90° F. is received after the first CTI event 222. An insert event 224 is associated with the arrival of the second event object. Upon occurrence of the lifetime shrink event 223, the event processing system may generate a finalized result with respect to the first event object, indicating that the temperature remained at 71° for one second (e.g., between the validity start time 1 and the validity end time 2). It will thus be appreciated that a finalized result may indicate both a finalized payload as well as a finalized validity time period.
The second event object has a validity end time of ∞ and an out-of-bounds temperature reading of 90° F. When a second CTI event 225 represented by a CTI event object having a timestamp “2+c” is received, the event processing system may treat the 90° F. temperature reading as finalized, and may generate a second preliminary result with respect to the second event object, indicating that temperature conditions are currently out-of-bounds but it is unknown how long the temperature will remain at 90° F. It will thus be appreciated that the sink may be informed of the out-of-bounds condition even when the event object containing the out-of-bounds temperature reading has an undefined validity time period.
A second lifetime shrink event 226 for the second event object, a third CTI event 227, a third insert event 228, and a fourth CTI event 229 may be processed in a similar fashion by the event processing system.
In a particular embodiment, an event processing system implementing time-based processing using punctuation event objects may provide an indication of the accuracy of each result object. For example, the event processing system may indicate that preliminary results are associated with “lifetime flexible” events (e.g., events having an event payload that cannot change but a validity end time that can change) and that finalized results are associated with “finalized” events (e.g., events that have unchangeable event payloads and unchangeable validity end times).
Table 230 illustrates a sequence of operations at the event processing system when the event processing system implements punctuation event objects as described with reference to the punctuation event object 106 of
Each result object produced by the event processing system may indicate an accuracy of the result object. For example, the first preliminary result object produced after occurrence of the first CTI event 232 and the second preliminary result object produced after occurrence of the second CTI event 235 may each indicate that they are based on lifetime flexible event objects. Similarly, the first finalized result object produced after the first lifetime shrink event 233 may indicate that it is based on a finalized event object.
It will thus be appreciated that event processing systems that use punctuation events (e.g., CTI events) may operate with reduced latency as compared to event processing systems that do not use punctuation events. For example, the use of CTI events (e.g., as illustrated by the tables 220 and 230) may result in notifying the sink of the out-of-bounds temperature condition 8 seconds earlier than if no CTI events were used (e.g., as illustrated by the table 210). It will also be appreciated that the use of result accuracy indicators, as illustrated in table 230, may enable the use of multiple sinks with a single event processing system when the sinks have different accuracy requirements. For example, in the example above, the temperature monitoring sink has a relatively low accuracy requirement (e.g., the query that determines whether the temperature reading is out-of bounds is a limited latency query) and preferentially generates an alarm or initiates a cooling mechanism based on lifetime flexible events. If an event history database was also a sink of the event processing system, the event history database may create new records based on finalized events but not lifetime flexible events, to reduce a total number of write operations at the event history database.
The method 300 includes receiving, at a computer system, a first event object that includes a first validity start time and a first validity end time that is initially undefined, at 302. For example, in
The method 300 also includes, after receiving the first event object, receiving a punctuation event object including a punctuation timestamp indicating a time subsequent to the first validity start time, at 304. The punctuation event object indicates that event objects received at the computer system after the punctuation event object will have validity start times later than the time indicated by the punctuation timestamp. For example, in
The method 300 further includes setting the first validity end time to a value later than or equal to the time indicated by the punctuation timestamp, at 306. For example, referring to
The method 400 includes receiving a plurality of unfinalized event objects, where each unfinalized event object includes a validity start time and a validity end time that is initially undefined, at 402. For example, in
The method 400 also includes generating a plurality of preliminary results with respect to the plurality of unfinalized event objects, at 404. For example, in
The method 400 further includes receiving a punctuation event object including a punctuation timestamp indicating a time subsequent to the validity start times of each of the plurality of unfinalized event objects, at 406. For example, in
The method 400 includes receiving a post-punctuation event object including a post-punctuation validity start time subsequent to the time indicated by the punctuation timestamp, at 408. For example, in
The method 400 also includes converting the plurality of unfinalized event objects to a plurality of finalized event objects by setting the validity end times of each of the unfinalized event objects to be equal to the post-punctuation validity start time, at 410. For example, in
The method 400 further includes generating a plurality of finalized results with respect to the plurality of finalized event objects, at 412. For example, in
The computing device 510 includes at least one processor 520 and a system memory 530. Depending on the configuration and type of computing device, the system memory 530 may be volatile (such as random access memory or “RAM”), non-volatile (such as read-only memory or “ROM,” flash memory, and similar memory devices that maintain stored data even when power is not provided), or some combination of the two. The system memory 530 typically includes an operating system 532, one or more application platforms 534, one or more applications (e.g., a query processing engine 536), and may include program data 538 associated with one or more applications. In an illustrative embodiment, the query processing engine 536 is the query processing engine 110 of
The computing device 510 may also have additional features or functionality. For example, the computing device 510 may also include removable and/or non-removable additional data storage devices such as magnetic disks, optical disks, tape, and standard-sized or miniature flash memory cards. Such additional storage is illustrated in
The computing device 510 also contains one or more communication connections 580 that allow the computing device 510 to communicate with other computing devices over a wired or a wireless network. In an illustrative embodiment, the communication connections 580 include the input adapter 108 and the output adapter 114 of
It will be appreciated that not all of the components or devices illustrated in
The illustrations of the embodiments described herein are intended to provide a general understanding of the structure of the various embodiments. The illustrations are not intended to serve as a complete description of all of the elements and features of apparatus and systems that utilize the structures or methods described herein. Many other embodiments may be apparent to those of skill in the art upon reviewing the disclosure. Other embodiments may be utilized and derived from the disclosure, such that structural and logical substitutions and changes may be made without departing from the scope of the disclosure. Accordingly, the disclosure and the figures are to be regarded as illustrative rather than restrictive.
Those of skill would further appreciate that the various illustrative logical blocks, configurations, modules, and process or instruction steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. Various illustrative components, blocks, configurations, modules, or steps have been described generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
The steps of a method described in connection with the embodiments disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in computer readable media, such as random access memory (RAM), flash memory, read only memory (ROM), registers, a hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor or the processor and the storage medium may reside as discrete components in a computing device or computer system.
Although specific embodiments have been illustrated and described herein, it should be appreciated that any subsequent arrangement designed to achieve the same or similar purpose may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all subsequent adaptations or variations of various embodiments.
The Abstract of the Disclosure is provided with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, various features may be grouped together or described in a single embodiment for the purpose of streamlining the disclosure. This disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter may be directed to less than all of the features of any of the disclosed embodiments.
The previous description of the embodiments is provided to enable a person skilled in the art to make or use the embodiments. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the scope of the disclosure. Thus, the present disclosure is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope possible consistent with the principles and novel features as defined by the following claims.
| Number | Name | Date | Kind |
|---|---|---|---|
| 5321837 | Daniel et al. | Jun 1994 | A |
| 5528516 | Yemini et al. | Jun 1996 | A |
| 5546570 | McPherson et al. | Aug 1996 | A |
| 5691917 | Harrison | Nov 1997 | A |
| 5765037 | Morrison et al. | Jun 1998 | A |
| 5809235 | Sharma et al. | Sep 1998 | A |
| 6145009 | Miyazawa et al. | Nov 2000 | A |
| 6236998 | Lehtinen | May 2001 | B1 |
| 6253313 | Morrison et al. | Jun 2001 | B1 |
| 6327587 | Forster | Dec 2001 | B1 |
| 6336139 | Feridun et al. | Jan 2002 | B1 |
| 6449618 | Blott et al. | Sep 2002 | B1 |
| 6604102 | Klein et al. | Aug 2003 | B2 |
| 6629106 | Narayanaswamy et al. | Sep 2003 | B1 |
| 6681230 | Blott et al. | Jan 2004 | B1 |
| 6920468 | Cousins et al. | Jul 2005 | B1 |
| 6925631 | Golden | Aug 2005 | B2 |
| 7065561 | Fry et al. | Jun 2006 | B2 |
| 7310638 | Blair | Dec 2007 | B1 |
| 7349675 | Karr et al. | Mar 2008 | B2 |
| 7349925 | Cherkauer et al. | Mar 2008 | B2 |
| 7457728 | Chen et al. | Nov 2008 | B2 |
| 7523190 | Bickerstaff et al. | Apr 2009 | B1 |
| 7702689 | Forstmann et al. | Apr 2010 | B2 |
| 7840592 | Muras | Nov 2010 | B2 |
| 20020083049 | Forster et al. | Jun 2002 | A1 |
| 20030163465 | Morrill | Aug 2003 | A1 |
| 20040068428 | Mitchell | Apr 2004 | A1 |
| 20040111396 | Musayev et al. | Jun 2004 | A1 |
| 20040172599 | Calahan | Sep 2004 | A1 |
| 20040205082 | Fontoura et al. | Oct 2004 | A1 |
| 20050055631 | Scardina et al. | Mar 2005 | A1 |
| 20050138081 | Alshab et al. | Jun 2005 | A1 |
| 20050165724 | West | Jul 2005 | A1 |
| 20050182758 | Seitz et al. | Aug 2005 | A1 |
| 20060069942 | Brasilerio | Mar 2006 | A1 |
| 20060074741 | Orumchian et al. | Apr 2006 | A1 |
| 20060100969 | Wang et al. | May 2006 | A1 |
| 20060123119 | Hill et al. | Jun 2006 | A1 |
| 20060136448 | Cialini et al. | Jun 2006 | A1 |
| 20060149849 | Raz | Jul 2006 | A1 |
| 20060161523 | Dettinger et al. | Jul 2006 | A1 |
| 20060161528 | Dettinger et al. | Jul 2006 | A1 |
| 20060230071 | Kass et al. | Oct 2006 | A1 |
| 20060248182 | Glassco et al. | Nov 2006 | A1 |
| 20060282695 | Mital et al. | Dec 2006 | A1 |
| 20070043856 | Morris et al. | Feb 2007 | A1 |
| 20070118545 | Chandrasekharan et al. | May 2007 | A1 |
| 20070136239 | Lee et al. | Jun 2007 | A1 |
| 20070168990 | Alshab et al. | Jul 2007 | A1 |
| 20070237410 | Cormode et al. | Oct 2007 | A1 |
| 20070255529 | Biazetti et al. | Nov 2007 | A1 |
| 20070294217 | Chen et al. | Dec 2007 | A1 |
| 20080016095 | Bhatnagar et al. | Jan 2008 | A1 |
| 20080065666 | Rose et al. | Mar 2008 | A1 |
| 20080134158 | Salz et al. | Jun 2008 | A1 |
| 20080256384 | Branson et al. | Oct 2008 | A1 |
| 20080301135 | Alves et al. | Dec 2008 | A1 |
| 20090052341 | Enqvist | Feb 2009 | A1 |
| 20090070765 | Alves et al. | Mar 2009 | A1 |
| 20090100029 | Jain et al. | Apr 2009 | A1 |
| 20090106190 | Srinivasan et al. | Apr 2009 | A1 |
| 20090106218 | Srinivasan et al. | Apr 2009 | A1 |
| 20090125550 | Barga et al. | May 2009 | A1 |
| 20090125635 | Barga et al. | May 2009 | A1 |
| 20090204551 | Wang et al. | Aug 2009 | A1 |
| 20090228465 | Krishnamurthy et al. | Sep 2009 | A1 |
| 20090319501 | Goldstein et al. | Dec 2009 | A1 |
| 20100017214 | Ambrosio et al. | Jan 2010 | A1 |
| 20100017379 | Naibo et al. | Jan 2010 | A1 |
| 20100041391 | Spivey et al. | Feb 2010 | A1 |
| 20100088325 | Goldstein et al. | Apr 2010 | A1 |
| 20100121744 | Belz et al. | May 2010 | A1 |
| 20100131538 | Jones et al. | May 2010 | A1 |
| 20100280857 | Liu et al. | Nov 2010 | A1 |
| 20100331146 | Kil | Dec 2010 | A1 |
| 20110040808 | Joy et al. | Feb 2011 | A1 |
| 20110093866 | Grabs et al. | Apr 2011 | A1 |
| 20120084322 | Goldstein et al. | Apr 2012 | A1 |
| Number | Date | Country |
|---|---|---|
| 2007035452 | Mar 2007 | WO |
| Entry |
|---|
| “Jiang, et al”, “Estreams: Towards an Integrated Model for Event and Stream Processing”, retrieved at <<http://ariana.uta.edu/research/Publications/Downloads/CSE-2004-3.pdf>>, Jul. 1, 2004. pp. 25. |
| “Complex Event Processing Made Simple Using Esper”, retrieved at <<http://www.theserverside.com/tt/articles/article.tss?I=ComplexEventProcessing>>, Apr. 2008. pp. 5. |
| Bry et al, “A High-Level Query Language for Events”, retrieved at <<http://www.pms.ifi.lmu.de/mitarbeiter/eckert/publications/EDA-PS2006.pdf>>, 2006. pp. 8. |
| Wei et al, “ReCEPtor: Sensing Complex Events in Data Streams for Service-Oriented Architectures”, retrieved at <<http://www.hpl.hp.com/techreports/2007/HPL-2007-176.pdf>>, Nov. 2, 2007. pp. 22. |
| “Oracle CEP 11gR1—official support for CQL”, retrieved at <<http://adcalves.wordpress.com/2009/07/01/oracle-cep-11gr1-official-support-for-cql/>>, Jul. 1, 2009. pp. 3. |
| Barga et al, “Consistent Streaming Through Time: A Vision for Event Stream Processing”, retrieved at <<http://www.cs.cornell.edu/˜mshong/papers/cidr%2007%20cedr.pdf>>, Jan. 7-10, 2007. pp. 12. |
| “Explicit Server Development Model”, retrieved at <<http://msdn.microsoft.com/en-us/library/ee391319(SQL.105).aspx>>, pp. 3, 2009. |
| “SQL Server 2008 R2—StreamInsight Technology”, retrieved at <<http://www.microsoft.com/sqlserver/2008/en/us/R2-complex-event.aspx>>, pp. 2, 2009. |
| “Microsoft StreamInsight”, retrieved at <<http://msdn.microsoft.com/en-us/library/ee362541(SQL.105,printer).aspx>>, pp. 1, 2009. |
| Grabs et al, “Introducing Microsoft's Platform for Complex Event Processing”, May 2009. pp. 24. |
| Grabs et al, “Introducing Microsoft StreamInsight”, Sep. 2009. pp. 27. |
| Jiang et al, “Anatomy of a Data Stream Management System”, retrieved at <<http://ftp.informatik.rwth-aachen.de/Publications/CEUR-WS/Vol-215/paper12.pdf>>, 2004. pp. 16. |
| “Complex Event Processing (CEP)”, retrieved at <<http://www.progress.com/psm/apama/data-streams/index.ssp>>, Mar. 9, 2007. pp. 2. |
| Wu et al, “High-Performance Complex Event Processing over Streams”, retrieved at <<http://www.cs.umass.edu/˜yanlei/publications/sase-sigmod2006.pdf>>, 2006. pp. 12. |
| “Event-Driven Models and Complex Event Processing”, retrieved at http://www.cxo.eu.com/article/Event-driven-models-and-complex-event-processing/>>, 2009. pp. 3. |
| Snoeren et al, “Mesh-Based Content Routing using XML”, retrieved at <<http://xml.coverpages.org/SnoerenMESH-XML.pdf>>, 2001. pp. 14. |
| Ravindran et al, “A Resource Management Model for Dynamic, Scalable, Dependable, Real-Time Systems”, retrieved at <<http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.40.5779&rep=rep1&type=ps>>, Apr. 11, 2006. pp. 6. |
| Johnson et al, “A Heartbeat Mechanism and its Application in Gigascope”, retrieved at <<http://www.vldb.org/conf/2005/papers/p1079-johnson.pdf>>, 2005. pp. 10. |
| Oberoi et al, “Integrating DDS and COTS Complex-Event Processing Engines”, retrieved at <<http://www.omg.org/news/meetings/workshops/RT-2007/04-5—Oberoi—etal-revised.pdf>>, Jul. 2007. pp. 42. |
| Srivastava et al, “Flexible Time Management in Data Stream Systems”, retrieved at <<http://infolab.stanford.edu/˜usriv/papers/time.pdf>>, PODS 2004 Jun. 14-16, 2004, Paris, France. pp. 11. |
| “Complex Event Processing Tutorial”, obtained online at: http://www.eventstreamprocessing.com/CEP-tutorial.htm, Jun. 8, 2007, 2 pages. |
| Gyllstrom et al., “SASE: Complex Event Processing over Streams”, 3rd Biennial Conference on Innovative Data Systems Research (CIDR), Jan. 2007, pp. 407-411. |
| U.S. Appl. No. 11/937,011, Office Action mailed Dec. 30, 2009, 19 pgs. |
| U.S. Appl. No. 11/937,011, Amendment filed Mar. 29, 2010, 13 pgs. |
| U.S. Appl. No. 11/937,011, Office Action mailed Jun. 24, 2010, 22 pgs. |
| U.S. Appl. No. 11/937,011, Amendment filed Aug. 24, 2010, 13 pgs. |
| U.S. Appl. No. 11/937,011, Advisory Action mailed Sep. 10, 2010, 3 pgs. |
| U.S. Appl. No. 11/937,011, Office Action mailed Nov. 29, 2010, 19 pgs. |
| U.S. Appl. No. 11/937,011, Amendment filed Mar. 29, 2011, 11 pgs. |
| U.S. Appl. No. 11/937,011, Office Action mailed Jun. 23, 2011, 22 pgs. |
| U.S. Appl. No. 11/937,011, Amendment filed Aug. 23, 2011, 14 pgs. |
| U.S. Appl. No. 11/937,011, Office Action mailed Nov. 25, 2011, 22 pgs. |
| U.S. Appl. No. 11/937,011, Amendment filed Feb. 27, 2012, 11 pgs. |
| U.S. Appl. No. 11/937,011, Office Action mailed May 25, 2012, 23 pgs. |
| U.S. Appl. No. 11/937,118, Office Action mailed May 28, 2010, 18 pgs. |
| U.S. Appl. No. 11/937,118, Amendment filed Sep. 28, 2010, 10 pgs. |
| U.S. Appl. No. 11/937,118, Office Action mailed Dec. 3, 2010, 15 pgs. |
| U.S. Appl. No. 11/937,118, Amendment filed Feb. 2, 2011, 13 pgs. |
| U.S. Appl. No. 11/937,118, Advisory Action mailed Feb. 15, 2011, 3 pgs. |
| U.S. Appl. No. 11/937,118, Office Action mailed Mar. 18, 2011, 17 pgs. |
| U.S. Appl. No. 11/937,118, Amendment filed Jul. 18, 2011, 16 pgs. |
| U.S. Appl. No. 11/937,118, Office Action mailed Oct. 14, 2011, 16 pgs. |
| U.S. Appl. No. 11/937,118, Amendment filed Feb. 13, 2012, 14 pgs. |
| U.S. Appl. No. 11/937,118, Notice of Allowance mailed Jun. 12, 2012, 8 pgs. |
| Raizman et al., “An Extensible Test Framework for the Microsoft StreamInsight Query Processor”, Proceedings of the Third International Workshop on Testing Database Systems, Jun. 7, 2010, obtained online at: http://research.microsoft.com/pubs/132100/Testing%20StreamInsight.pdf, 6 pgs. |
| “Event Processing with Esper and NEsper”, obtained online at: http://esper.codehaus.org, Jul. 16, 2012, 4 pgs. |
| Loddengaard, Alex, “FoneDoktor, A WibiData Application”, Dec. 6, 2011, obtained online at: http://www.cloudera.com/blog/2011/12/fonedoktor-a-wibidata-application/, Jul. 16, 2012, 5 pgs. |
| Barga et al., “Coping with Variable Latency and Disorder in Distributed Event Streams”, 26th IEEE International Conference on Distributed Computing Systems Workshops (ICDCSW'06), Jul. 4, 2006, 6 pgs. |
| Pallickara, Shrideep Bhaskaran, “A Grid Event Service”, Ph.D. Thesis, Graduate School of Syracuse University, Jun. 2001, 110 pgs. |
| Barish et al., “Speculative Execution for Information Gathering Plans”, Proceedings of the Sixth International Conference on Artificial Intelligence Planning and Scheduling, Apr. 23, 2002, 10 pgs. |
| Preiss et al., “On the Trade-off between Time and Space in Optimistic Parallel Discrete Event Simulation”, 6th Workshop on Parallel and Distributed Simulation, vol. 24, Jan. 1992, pp. 1-10. |
| Smith, Michael David, “Support for Speculative Execution in High-Performance Processors”, Technical Report Support for Speculative Execution in High-Performance Processors, Nov. 1992, pp. 7-89. |
| Barish et al., “Speculative Plan Execution for Information Gathering”, Journal of Artificial Intelligence, vol. 172, Issue 4-5, Mar. 2008, pp. 1-50. |
| Wu et al., “High-Performance Complex Event Processing over Streams”, Proceedings of the ACM SIGMOD International Conference on Management of Data, Jun. 27, 2006, pp. 407-418. |
| “Event Stream Intelligence with Esper and NEsper”, Retrieved at <<http://esper.codehaus.org/>>, Retrieved Date: Mar. 7, 2011, 4 pages. |
| US Notice of Allowance mailed Oct. 5, 2012, in U.S. Appl. No. 11/937,118 (5 pages). |
| Babcock, et al. “Models and Issues in Data Stream Systems”, Proceedings of the 21st ACM SIGMOD-SIGACT-SIGART Symposium on Principles of Database Systems (PODS '02); 2002; pp. 1-30. |
| Babu, et al. “StreaMon: An Adaptive Engine for Stream Query Processing”; ACM International Conference on Management of Data (SIGMOD 2004); 2004; pp. 931-932. |
| Chen, et al. “NiagaraCQ: A Scalable Continuous Query System for Internet Databases,” Proceedings of the 2000 ACM SIGMOD International Conference on Management of Data; 2000; pp. 379-390. |
| Cherniack, et al. “Scalable Distributed Stream Processing,” Proceedings of the 2003 CIRDR Conference; 2003; pp. 1-12. |
| Goldstein, J. et al. “Flying Fixed-Point: Recursive Processing in Stream Queries,” VLDB '08; Aug. 24-30, 2008; Auckland, New Zealand. |
| Srivastava, et al. “Operator Placement for In-Network Stream Query Processing,” Technical Report; 2004; pp. 10. |
| US Non-Final Office Action mailed Feb. 1, 2013, in U.S. Appl. No. 13/189,566 (18 pages). |
| Number | Date | Country | |
|---|---|---|---|
| 20110093866 A1 | Apr 2011 | US |