StreamSQL
StreamSQL är ett frågespråk som utökar SQL med möjligheten att bearbeta dataströmmar i realtid . SQL är främst avsedd för att manipulera relationer (även känd som tabeller), som är ändliga påsar med tupler (rader). StreamSQL lägger till möjligheten att manipulera strömmar, som är oändliga sekvenser av tupler som inte alla är tillgängliga samtidigt. Eftersom strömmar är oändliga måste operationer över strömmar vara monotona . Frågor över strömmar är i allmänhet "kontinuerliga", körs under långa tidsperioder och ger inkrementella resultat.
StreamSQL-språket används vanligtvis i samband med ett Data Stream Management System (DSMS), för applikationer inklusive marknadsdataanalys, nätverksövervakning , övervakning, upptäckt och förebyggande av e-bedrägerier, klickströmsanalys och realtidsefterlevnad ( anti-penningtvätt , RegNMS , MiFID ).
Andra strömmande och kontinuerliga varianter av SQL inkluderar StreamSQL.io , Kafka KSQL , SQLStreamBuilder , WSO2 Stream Processor , SQLStreams , SamzaSQL och Storm SQL .
Tekniska detaljer
StreamSQL utökar typsystemet SQL för att stödja strömmar utöver tabeller. Flera nya operationer introduceras för att manipulera strömmar.
Välja från en ström - En standard SELECT
-sats kan utfärdas mot en ström för att beräkna funktioner (med hjälp av mållistan) eller filtrera bort oönskade tupler (med hjälp av en WHERE
-sats). Resultatet blir en ny stream.
Stream-Relation Join - En stream kan sammanfogas med en relation för att producera en ny stream. Varje tuppel i strömmen sammanfogas med det aktuella värdet av relationen baserat på ett predikat för att producera 0 eller fler tuplar.
Union och sammanfogning - Två eller flera strömmar kan kombineras genom att sammanfoga eller slå samman dem. Unioning kombinerar tuplar i strikt FIFO- ordning. Sammanslagning är mer deterministiskt, kombinera strömmar enligt en sorteringsnyckel.
Fönsterbildning och aggregering - En ström kan fönsterbildas för att skapa ändliga uppsättningar av tupler. Till exempel skulle ett fönster med storleken 5 minuter innehålla alla tupler under en given 5 minuters period. Fönsterdefinitioner kan tillåta komplexa urval av meddelanden, baserat på tupelfältvärden. När en ändlig sats av tuplar har skapats kan analyser som antal, medelvärde, max etc. tillämpas.
Fönster och sammanfogning - Ett par strömmar kan också fönsterglas och sedan sammanfogas. Tupler inom kopplingsfönstren kommer att kombineras för att skapa resulterande tupler om de uppfyller predikatet.
Historia
StreamSQL är härlett från akademisk forskning om bearbetning av händelseströmmar , nära relaterad till komplex händelsebearbetning . Under ledning av Michael Stonebraker arbetade ett team av 30 professorer och studenter på projektet Aurora tillsammans från 2001 till 2003 för att utveckla kärnprinciperna bakom StreamSQL.
Aurora - projektet ersattes av Borealis - projektet . Borealis är en distribuerad multiprocessorversion av Aurora.