Jump to content

Event stream processing

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Purple Data (talk | contribs) at 16:44, 23 June 2014. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Event stream processing, or ESP, is a set of technologies designed to assist the construction of event-driven information systems. ESP technologies include event visualization, event databases, event-driven middleware, and event processing languages, or complex event processing (CEP). In practice, the terms ESP and CEP are often used interchangeably, with CEP becoming a more fashionable term recently. ESP deals with the task of processing multiple streams of event data with the goal of identifying the meaningful events within those streams, employing techniques such as detection of complex patterns of many events, event correlation and abstraction, event hierarchies, and relationships between events such as causality, membership, and timing, and event-driven processes.

ESP enables applications such as algorithmic trading in financial services, RFID event processing applications, fraud detection, process monitoring, and location-based services in telecommunications.

Examples

SQL

This is an example of processing a data stream using a continuous SQL query (a query that executes forever processing arriving data based on timestamps and WINDOW duration). This code fragment illustrates a JOIN of two data streams, one for stock orders, and one for the resulting stock trades. The query outputs a stream of all Orders matched by a Trade within one second of the Order being placed. The output stream is sorted by timestamp, in this case, the timestamp from the Orders stream.

SELECT STREAM 
   ROWTIME, o.orderId, o.ticker, 
   o.amount AS orderAmount,
   t.amount AS tradeAmount 
FROM Orders AS o 
JOIN Trades OVER (RANGE INTERVAL '1' SECOND FOLLOWING) AS t 
ON o.orderId = t.orderId;

SQL-like

This example of an EPL (Event Processing Language) modelled on SQL illustrates how such a language may be used to perform complex event processing. This code fragment detects weddings among a flow of external "events" such as church bells ringing, the appearance of a man in a tuxedo or morning suit, a girl in a flowing white gown and rice flying through the air. A "complex" or "composite" event is what one infers from the individual simple events: a wedding is happening.

WHEN Person.Gender EQUALS "man" AND Person.Clothes EQUALS "tuxedo"
FOLLOWED-BY
  Person.Clothes EQUALS "gown" AND
  (Church_Bell OR Rice_Flying)
WITHIN 2 hours
ACTION Wedding

NoSQL

You can also do this kind of processing with NoSQL product.

One way to do that is via XML and XPath based languages like XSLT, XQuery, XProc or even Schematron

Here a XPath expression

 //Person[Gender = 'man' and Clothes = 'tuxedo' ./following::Person[Clothes = 'gown' and (ChurchBell or RiceFlying) and time < 2*60*60]]

See also

  • Complex event processing (CEP) - A related technology for building and managing event-driven information systems.
  • Data Stream Management System (DSMS) - A type of software system for managing and querying data streams
  • openPDC A complete set of applications for processing streaming time-series data in real-time.
  • Real-time computing - ESP systems are typically real-time systems
  • RFID - Radio-frequency identification, or RFID, recommends application of ESP to prevent from data flooding
  • SCADA - Supervisory control and data acquisition, a similar technology used in engineering applications
  • Emergency processing and management [1]

References