Strumieniowe bazy danych - STREAM: The Stanford Data Stream
Transkrypt
Strumieniowe bazy danych - STREAM: The Stanford Data Stream
Wprowadzenie STREAM i CQL Podsumowanie Strumieniowe bazy danych STREAM: The Stanford Data Stream Management System Michał Stochmiałek <[email protected]> Michał Stochmiałek Strumieniowe bazy danych 1/23 Wprowadzenie STREAM i CQL Podsumowanie Plan prezentacji Wprowadzenie Problem na przykładzie Systemy DSMS Projekt STREAM STREAM i CQL Podstawowe założenia Język CQL Przykład Podsumowanie Michał Stochmiałek Strumieniowe bazy danych 2/23 Wprowadzenie STREAM i CQL Podsumowanie Problem na przykładzie Systemy DSMS Projekt STREAM Problem System analizujący ruch sieciowy: I I analiza wszystkich pakietów w wielu podsieciach, (nieprzerwany strumień danych z wielu źródeł) podczas analizy wykorzystywany: I I I zbiór znanych użytkowników (identyfikacja poprzez adresy IP) dane historyczne, poprzednie analizy statystyki I I I I lista k najbardziej obciążających sieć adresów IP w ostatnich 20min procentowe wykorzystanie złącza przez klientów w ostatniej godzinie analiza sekwencji pakietów analizy ad hoc Michał Stochmiałek Strumieniowe bazy danych 3/23 Wprowadzenie STREAM i CQL Podsumowanie Problem na przykładzie Systemy DSMS Projekt STREAM Jakie rozwiązanie zastosować? I zastosowanie DBMS I czy ich konstrukcja przewiduje przetwarzanie takiej ilości danych? I rozwiązania połowiczne I rozwiązania dedykowane Michał Stochmiałek Strumieniowe bazy danych 4/23 Wprowadzenie STREAM i CQL Podsumowanie Problem na przykładzie Systemy DSMS Projekt STREAM Strumienie danych I I ciągły, nieograniczony, zmienny w czasie, dynamiczny strumień elementów danych przykłady systemów: I I I I monitorowanie i analiza ruchu sieciowego, czy drogowego logowanie dostępu do serwisów, logowanie kliknięć na stronie zapis połączeń telefonicznych analiza finansowa Michał Stochmiałek Strumieniowe bazy danych 5/23 Wprowadzenie STREAM i CQL Podsumowanie Problem na przykładzie Systemy DSMS Projekt STREAM DBMS a DSMS Data Base Management System Data Stream Management System I ulotne (transient) strumienie (i trwałe relacje) zapytania wykonywane w stosunkowo krótkim czasie I ciągłe zapytania (continuous queries) I swobodny dostęp (random access) I dostęp sekwencyjny I stabilny plan zapytań I nieprzewidywalna charakterystyka danych I trwałe (persistent) relacje I Michał Stochmiałek Strumieniowe bazy danych 6/23 Wprowadzenie STREAM i CQL Podsumowanie Problem na przykładzie Systemy DSMS Projekt STREAM STREAM: The Stanford Data Stream Management System I projekt rozwijany na Uniwersytecie w Stanford I duża ilość publikacji naukowych dotyczących różnych aspektów DSMS I źródła oraz demonstracja na stronie projektu Michał Stochmiałek Strumieniowe bazy danych 7/23 Wprowadzenie STREAM i CQL Podsumowanie Problem na przykładzie Systemy DSMS Projekt STREAM Inne projekty I Niagara (University of Wisconsin-Madison, the Oregon Health & Science University) I Aurora (Brandeis University, Brown University, and MIT) I Telegraph (UC Berkeley’s Computer Science Division) I MonaCQ (Instytut Techniki i Aparatury Medycznej, Zabrze) Michał Stochmiałek Strumieniowe bazy danych 8/23 Wprowadzenie STREAM i CQL Podsumowanie Podstawowe założenia Język CQL Przykład STREAM i CQL Michał Stochmiałek Strumieniowe bazy danych 9/23 Wprowadzenie STREAM i CQL Podsumowanie Podstawowe założenia Język CQL Przykład Podstawowe założenia I czas spełnia bardzo ważną rolę w systemach DSMS I czas jest dyskretny i składa się z chwil τ ∈ T , T = {1, 2, . . . } I metafora uderzeń serca Michał Stochmiałek Strumieniowe bazy danych 10/23 Wprowadzenie STREAM i CQL Podsumowanie Podstawowe założenia Język CQL Przykład Typy danych I strumień - sekwencja uporządkowana czasem. Każdy element strumienia składa z krotki danych oraz czasu pojawienia się jej w strumieniu (timestamp) S = {hs, τ i : s − krotka, τ ∈ T } I relacja - tradycyjna relacja bazodanowa, ale z poczuciem czasu. Funkcja odwzorująca czas na zbiór krotek w danej chwili τ . R(τ ) − relacja R w chwili τ Michał Stochmiałek Strumieniowe bazy danych 11/23 Wprowadzenie STREAM i CQL Podsumowanie Podstawowe założenia Język CQL Przykład Ogólnikowy schemat działania DSMS Michał Stochmiałek Strumieniowe bazy danych 12/23 Wprowadzenie STREAM i CQL Podsumowanie Podstawowe założenia Język CQL Przykład Język zapytań CQL I CQL bazuje na języku SQL I dodaje pojęcie i interpretację strumienia I dodaje operacje na strumieniach dodaje metody konwersji pomiędzy strumieniami i relacjami I I I operatory strumień-relacja operatory relacja-strumień Michał Stochmiałek Strumieniowe bazy danych 13/23 Wprowadzenie STREAM i CQL Podsumowanie Podstawowe założenia Język CQL Przykład Operatory strumień-relacja I koncepcja przesuwającego się okna (ang. sliding window) I ekstrakcja najnowszych danych ze strumienia do postaci relacji I okno oparte na czasie S [Range 40 Seconds], S [Now] I okno oparte na ilości krotek S [Rows 40] Michał Stochmiałek Strumieniowe bazy danych 14/23 Wprowadzenie STREAM i CQL Podsumowanie Podstawowe założenia Język CQL Przykład Operatory relacja-relacja I język CQL dziedziczy z języka SQL wszystkie operatory relacyjne SELECT P.pracownik_id, P.imie, P.nazwisko FROM wchodzacyDoBudynkuStream [Range 30 Seconds] as W, pracownicy as P WHERE W.pracownik_id = P.pracownik_id Michał Stochmiałek Strumieniowe bazy danych 15/23 Wprowadzenie STREAM i CQL Podsumowanie Podstawowe założenia Język CQL Przykład Operatory relacja-strumień I strumień elementów dodanych IStream - w każdej chwili do strumienia dodawane są krotki, które zostały dodane w tej samej chwili do relacji R I strumień elementów usuniętych DStream - w każdej chwili do strumienia dodawane są krotki usunięte w tej samej chwili z relacji R I strumień elementów relacji RStream - w każdej chwili τ do strumienia dodawane są wszystkie elementy relacji R Michał Stochmiałek Strumieniowe bazy danych 16/23 Wprowadzenie STREAM i CQL Podsumowanie Podstawowe założenia Język CQL Przykład Przykład: System naliczający opłaty za autostradę I każdy samochód na autostradzie co 30s wysyła informację o swojej pozycji i prędkości I autostrada podzielona jest na odcinki I opłata za przejazd jest naliczana tylko gdy dany odcinek jest zatłoczony I odcinek jest zatłoczony, gdy od 5min samochody poruszają się z prędkością niższą niż 60 km/h. Michał Stochmiałek Strumieniowe bazy danych 17/23 Wprowadzenie STREAM i CQL Podsumowanie Podstawowe założenia Język CQL Przykład Przykład: Schemat strumienia danych predkoscSamochodowStream(samochodId,odcinekId,predkosc) I samochodId - identyfikator samochodu I odcinekId - identyfikator odcinka autostrady I predkosc - aktualna prędkość samochodu Michał Stochmiałek Strumieniowe bazy danych 18/23 Wprowadzenie STREAM i CQL Podsumowanie Podstawowe założenia Język CQL Przykład Zapytanie 1: zbiór zatłoczonych odcinków autostrady I odcinek jest zatłoczony, gdy samochody od 5min poruszają się z prędkością niższą niż 60 km/h. I wynik: relacja zatloczoneOdcinki(odcinekId) SELECT odcinekId FROM predkoscSamochodowStream [Range 5 Minutes] GROUP BY odcinekId HAVING AVG(predkosc) < 60 Michał Stochmiałek Strumieniowe bazy danych 19/23 Wprowadzenie STREAM i CQL Podsumowanie Podstawowe założenia Język CQL Przykład Zapytanie 2: liczba samochodów na autostradzie I wysokość opłaty jest zależna od liczby samochodów na zatłoczonym odcinku I samochód opuścił autostradę, jeżeli od 30s nie podał swojej pozycji I wynik: relacja liczbaSamochodow(odcinekId, liczba) SELECT odcinekId, COUNT(samochodId) as liczba FROM predkoscSamochodowStream [Range 30 Seconds] GROUP BY odcinekId Michał Stochmiałek Strumieniowe bazy danych 20/23 Wprowadzenie STREAM i CQL Podsumowanie Podstawowe założenia Język CQL Przykład Zapytanie 3: wysokość opłaty za autostradę I wysokość opłaty obliczamy według wzoru: bazowaOpłata × (ilośćSamochodów − 150) I wynik: strumień oplaty(samochodId, oplata) SELECT RStream(S.samochodId, oplataBazowa * (LS.liczba - 150) as oplata FROM predkoscSamochodowStream [Now] as S, zatloczoneOdcinki as ZO, liczbaSamochodow as LS WHERE S.odcinekId = ZO.odcinekId and ZO.odcinekId = LS.odcinekId Michał Stochmiałek Strumieniowe bazy danych 21/23 Wprowadzenie STREAM i CQL Podsumowanie Podsumowanie I strumieniowe bazy danych - nowa klasa baz danych I strumień danych - ciągły, dynamiczny, zmienny w czasie napływ nowych danych I ciągłe zapytania - zapytania wykonywane często przez cały okres działania aplikacji opartej na DSMS Michał Stochmiałek Strumieniowe bazy danych 22/23 Wprowadzenie STREAM i CQL Podsumowanie Źródła B. Babcock, S. Babu, M. Datar, R. Motwani, J. Widom, Models and Issues in Data Stream Systems, czerwiec 2002 The STREAM Group, Stanford Data Stream Management System, marzec 2003 A. Arasu, S. Babu, J. Widom, The CQL Continuous Query Language: Semantic Foundations and Query Execution Michał Stochmiałek Strumieniowe bazy danych 23/23