- StreamSQL
StreamSQL is a query language that extends
SQL with the ability to process real-timedata stream s. SQL is primarily intended for manipulatingrelation s (also known as tables), which are finite bags oftuple s (rows). StreamSQL adds the ability to manipulate streams, which are infinite sequences of tuples that are not all available at the same time. Because streams are infinite, operations over streams must bemonotonic . Queries over streams are generally "continuous", executing for long periods of time and returning incremental results.The StreamSQL language is used for applications including
algorithmic trading , market data analytics,network monitoring , surveillance, e-fraud detection and prevention,clickstream analytics and real-time compliance (anti-money laundering ,RegNMS ,MiFID ).Technical details
StreamSQL extends the type system of SQL to support streams in addition to tables. Several new operations are introduced to manipulate streams.
Selecting from a stream -A standard
SELECT
statement can be issued against a stream to calculate functions (using the target list) or filter out unwanted tuples (using aWHERE
clause). The result will be a new stream.Stream-Relation Join -A stream can be joined with a relation to produce a new stream. Each tuple on the stream is joined with the current value of the relation based on a predicate to produce 0 or more tuples.
Union and Merge -Two or more streams can be combined by unioning or merging them. Unioning combines tuples in strict
FIFO order. Merging is more deterministic, combining streams according to a sort key.Windowing and Aggregation -A stream can be windowed to create finite sets of tuples. For example, a window of size 5 minutes would contain all the tuples in a given 5 minute period. Window definitions can allow complex selections of messages, based on tuple field values. Once a finite batch of tuples is created, analytics such as count, average, max, etc, can be applied.
Windowing and Joining -A pair of streams can also be windowed and then joined together. Tuples within the join windows will combine to create resulting tuples if they fulfill the predicate.
History
StreamSQL is derived from academic research into
Stream Processing , closely related toComplex Event Processing . Led by Dr.Michael Stonebraker , a team of 30 professors and students on project Aurora worked collaboratively from 2001 through 2003 to develop the core principles behind StreamSQL.The Aurora project has since been superseded by the Borealis project. Borealis is a distributed multi-processor version of Aurora.
External links
* [http://www.streamsql.org Documentation, technical resources, and blog describing StreamSQL usage for complex event processing and event stream processing]
Wikimedia Foundation. 2010.