StreamSQL

StreamSQL to język zapytań, który rozszerza SQL o możliwość przetwarzania strumieni danych w czasie rzeczywistym . SQL jest przeznaczony przede wszystkim do manipulowania relacjami (znanymi również jako tabele), które są skończonymi zbiorami krotek (wierszy). StreamSQL dodaje możliwość manipulowania strumieniami, które są nieskończonymi sekwencjami krotek, z których nie wszystkie są dostępne w tym samym czasie. Ponieważ strumienie są nieskończone, operacje na strumieniach muszą być monotoniczne . Zapytania dotyczące strumieni są na ogół „ciągłe”, wykonywane przez długi czas i zwracające przyrostowe wyniki.

Język StreamSQL jest zwykle używany w kontekście systemu zarządzania strumieniem danych (DSMS) w aplikacjach obejmujących analizę danych rynkowych, monitorowanie sieci , nadzór, wykrywanie oszustw elektronicznych i zapobieganie im, analizę strumienia kliknięć i zgodność w czasie rzeczywistym ( przeciwdziałanie praniu brudnych pieniędzy , RegNMS , MiFID ).

Inne strumieniowe i ciągłe warianty SQL obejmują StreamSQL.io , Kafka KSQL , SQLStreamBuilder , WSO2 Stream Processor , SQLStreams , SamzaSQL i Storm SQL .

Szczegóły techniczne

StreamSQL rozszerza system typów SQL, aby oprócz tabel obsługiwał strumienie. Wprowadzono kilka nowych operacji służących do manipulowania strumieniami.

Wybieranie ze strumienia — Standardowa instrukcja SELECT może zostać wydana względem strumienia w celu obliczenia funkcji (za pomocą listy docelowej) lub odfiltrowania niechcianych krotek (za pomocą klauzuli WHERE ). Rezultatem będzie nowy strumień.

Łączenie relacji strumienia — strumień można połączyć relacją w celu utworzenia nowego strumienia. Każda krotka w strumieniu jest połączona z bieżącą wartością relacji opartej na predykacie w celu wytworzenia 0 lub więcej krotek.

Łączenie i scalanie — dwa lub więcej strumieni można połączyć, łącząc je lub scalając. Łączenie łączy krotki w ścisłym FIFO . Scalanie jest bardziej deterministyczne, łącząc strumienie według klucza sortowania.

Okienkowanie i agregacja — strumień można wyświetlać w oknach, aby tworzyć skończone zestawy krotek. Na przykład okno o rozmiarze 5 minut zawierałoby wszystkie krotki w danym okresie 5 minut. Definicje okien mogą umożliwiać złożone selekcje komunikatów na podstawie wartości pól krotki. Po utworzeniu skończonej partii krotek można zastosować analizy, takie jak liczba, średnia, maksimum itp.

Okienkowanie i łączenie — parę strumieni można również wyświetlać w oknach, a następnie łączyć ze sobą. Krotki w oknach łączenia będą się łączyć, tworząc wynikowe krotki, jeśli spełnią predykat.

Historia

StreamSQL wywodzi się z badań akademickich nad przetwarzaniem strumienia zdarzeń , ściśle związanych z przetwarzaniem złożonych zdarzeń . Kierowany przez Michaela Stonebrakera zespół 30 profesorów i studentów projektu Aurora pracował wspólnie od 2001 do 2003 roku, aby opracować podstawowe zasady StreamSQL.

Projekt Aurora został zastąpiony przez projekt Borealis . Borealis to rozproszona, wieloprocesorowa wersja Aurory.