Patrik Pasterčík MFF UK 2016
Motivace Představení DSMS Dotazovací jazyk Reprezentace datových proudů Nepřetržité dotazování, okna Časová razítka, pořadí Datová kvalita, kvalita služeb Existující řešení Souhrn 2
Použití Produkční linky Analýza akciového trhu Vlastnosti Vysoký obsah dat v krátkém čase Neznámá velikost a konec dat 3
Pokročilý databázový systém Přizpůsobený na více úrovních Dotazovací jazyk Zpracování Optimalizace 4
Velká frekvence dat, často nárazová Čas na zpracování jen jednou Například ECG (obvykle frekvence dat 250 Hz) Nepřetržitá data Nevíme kdy bude konec dat (neohraničená data) Data mohou být defektní Nepřesné měření Selhání přenosu dat Selhání senzoru 5
Mapování dat na čas K interpretování dat v čase Nejnovější data jsou nejzajímavější při zpracovávání Mohou nastat potíže jako přeházená data Zpracování dat z více senzorů k celkovému obrazu Omezené prostředky pro zpracovávání Nelze uložit celá data a ty zpracovat Data se můžou zpracovat jen jednou Někdy je potřeba kombinovat s historickými daty Aplikace produkující miliony vzorků za vteřinu Analýza vývoje cen akcií Analýza provozu sítě 6
Řešeno pomocí nepřetržitého dotazování, které je registrováno v systému uživatelem Někdy jsou potřeba ad hoc dotazy Data nesmí být zpracována a zapomenuta (vytváří se výsledky zpracování) Reagování na změnu dat, které vyústí k přepočítání již vypočtených výsledků Potřeba optimalizovat dotazy sdílením výsledků 7
Event Processing Complex Event Processing (CEP) Určeno k analyzování událostí Například předpovídání politického vývoje z Twitteru 8
Komunikace mezi auty Komunikace s infrastrukturou Data se nazývají Floating Car Data (FCD) Typy dat: Emergency Breaking Light (EBL) Warning Light Announcement message (WLA) Jiným zdrojem dat mobily Floating Phone Data (FPD) 9
Formát zprávy C2XMessage(TS, AppID, Speed, Acceleration, Latitude, Longtitude) Můžeme ze zpráv odvozovat provoz v jednotlivých částech dopravní infrastruktury (podle pozice) 10
Data nejsou získávána ze systému, ale vkládána Dotazy jsou prováděny nepřetržitě nad daty vkládanými do systému nepřetržité dotazování Elementy datových proudů jsou definovány n- ticemi Formáty dotazů Deklarativní výraz Sekvence, či graf operátorů zpracování dat 11
Deklarativní výraz (dialekt SQL) Převeden do logického plánu dotazu, může být optimalizován Následně převeden do fyzického plánu dotazu (může být optimalizován podle statistik zpracování) 12
Sekvence, či graf operátorů zpracování dat Obecná architektura 13
Deklarativní Založen na SQL Jsou široce používány, i když mají mnoho omezení pro používání pro datové proudy Imperativní Jedná se o množinu operátorů (nazývané jako box operátory) Operátory jsou pak sestavovány do grafu pomocí grafického uživatelského rozhraní Často obsahuje operátory, které reprezentují SQL operace 14
Deklarativní STREAM (Continuous Query Language, CQL) Oracle Event Processing PIPES SASE (Complex Event Language) StreamMill (Expressive Stream Language, ESL) Imperativní Aurora/Borealis systém (SQuAl) System S/InfoSphere Stream (SPADE/SPL) 15
Pro podporu blokujících operací (SUM, ) Umožňuje vybrání jen části proudu dat Okno je upravováno pomocí fixních parametrů 16
Existují operátory mezi proudy dat Implicitně používají operátory pro okna a jejich konverzi na datové proudy Jen CQL umožňuje explicitní konverzi z relace na datový proud 17
Chceme měřit počet aut za poslední minutu Chceme auta s rychlostí větší než 30 km/h Měření chceme aktualizovat každých 10 s 18
Deklarativní jazyk CQL SELECT Istream Count(*) FROM C2Message[Range 1 Minute Slide 10s] WHERE Speed > 30.0 19
Imperativní jazyk Aurora s SQuAl 20
Různé u různých produktů C++ Zpracovává se stejně jako ostatní operátory User-defined Aggregates (UDAs) Založeno na konceptu standardu SQL 99 Zpracovává jednu n-tici za čas Umožňuje uchovávat stav z dosud navštívených prvků 21
Relační model je velmi dominantní Krok od SQL k rozšíření k podpoře proudů dat je velmi malý Je zde ale i mnoho jiných dat, pro něž se nehodí plochá tabulka Například XML data Existuje tedy mnoho směrů 22
Neomezená množina prvků, n-tic, událostí Každá n-tice se může v proudu objevit vícekrát Data reprezentována jako dvojice (s, τ), kde s je původní n-tice proudu dat a τ je časové razítko Časové razítko většinou nebývá součástí schématu proudu dat 23
Datový proud S je neomezená množina elementů proudu dat (s, τ) τ T je časové razítko z monotónní neomezené časové domény T s diskrétními časovými hodnotami s je množina atributů A1, A2,, An představující schéma datového proudu S 24
Příklad formátu zprávy dopravní aplikace podle této definice vypadá následovně: C2XMessage(Timestamp, (TS, AppID, Speed, Acceleration, Latitude, Longtitude)) Kde Timestamp by bylo časové razítko generované DSMS a TS by bylo časové razítko definované aplikací 25
Atributy Od jednoduchých typů, přes objekty nebo XML data Gürner at al. navrhnul generické relační schéma pro datové proudy různorodých senzorů, jenž obsahuje atributy jako: Properties obsahuje meta-data senzorů Measurement nese naměřenou hodnotu senzorem Časové razítko, kdy byla hodnota naměřena 26
Aktualizace Většinou umožňují jen přidávání (bez aktualizace, či mazání) Borealis systém umožňuje aktualizaci, či mazání Jeden nebo více atributů proudu je použito jako klíč N-tice obsahují označení, jež indikuje vložení, aktualizaci, či mazání Označení je zpracováno operátory v plánu dotazu a pokud je aktualizováno, či smazáno, tak jsou dřívější výsledky přepočteny a je označena odpovídající revize výsledku 27
Někdy samotné datové proudy nestačí a je potřeba je kombinovat s dalšími vstupními či historickými daty - korelace Mnoho jazyků podporuje spojení proudů s relacemi Spojení dvou proudů je komplikovanější Většina jazyků vyžaduje alespoň jeden proud aby byl z určitého okna v podstatě se převede na situaci spojení proudu s relací Některé obsahují specifické operátory na spojení proudů bez oken 28
Schéma C2X zprávy a relace: AvgC2XMessage(Timestamp, (AvgSpeed, AvgAcceleration, RoadID, SectionID)) ConstructionSite(SiteID, StartDate, RoadID, SectionID) Příklad: SELECT Rstream m.*, Count(c.SiteID) As SiteNo FROM AvgC2XMessage[Now] AS m, ConstructionSite AS c WHERE c.roadid = m.roadid AND c.sectionid = m.sectionid Kolik prací na silnici obsahuje daná silnice a její sekce 29
Výsledkem nepřetržitých dotazů v čase τ je výsledek dotazu zpracovaného v čase menším nebo rovno τ (zpracuje n-tice, jež přišly do času τ) Time-driven model každý časový krok systému Tuple-driven model při každém příchodu nové n-nice (s výjimkou omezení na časová okna) Event-driven umožňuje definovat události nebo triggery 30
Blokující operátory Vyžadují všechny n-tice pro zpracování Jedná se o agregace, seskupení, množinové operace (NOT IN, NOT EXISTS) Neblokující operátory Produkují výsledek periodicky nebo při nové n-tici (postupně) Nelze jimi vyjádřit to, co v SQL Částečně blokující operátory Produkují mezivýsledky, ale i konečný výsledek na konci 31
Operátory sloučení Potřebují ukládat data, který pro proudy dat mohou být neomezená Jednoduchý, přesto účinný přístup je rozdělení proudu dat na malé části okna Každé okno nese jen omezený počet n-tic a může být zpracováno i blokujícími operátory Další možnost je inkrementační implementace aktualizuje výsledek s novou n-ticí a vrátí mezivýsledek 32
Jsou důležitá pro dotazování v jazyku založeném na SQL Jsou budována podle setříděného atributu určujícího pořadí prvků v okně Typy oken Time-based Tuple-based 33
Time-based Předpokládáme, že prvky proudu dat jsou seřazeny podle časového razítka Time-based okno WlT (s velikostí okna lt T) přes datový proud S v čase τi T je konečná množina prvků, kde mk je počet daných n-tic WlT(S(τi)) = {<(sk, τk), mk> (sk,tk) U, τi lt τk τi, τk τ0} 34
Tuple-based Předpokládáme, že prvky proudu dat jsou seřazeny podle časového razítka Tuple-based okno WlN (s velikostí okna ln T) přes datový proud S v čase τi T je konečná množina prvků, kde mk je počet daných n-tic W ln S τ i = < s k, τ k, m k > s k, τ k U, j k i, m j, m j: m j 0, m j > 0, m j = m j + m j, m j + σi l=j+1 m l = l N } 35
Aurora systém value-based Zobecnění time-based Atribut místo časového razítka musí být setříděný 36
Nazývá se sliding window Posouvají se hranice okna Landmark window jedna hranice je pevná Opět jako Time-based např. každých 10 sekund Tuple-based např. každých 100 příchozích n-tic Tumbling window posouvá se tak, že se nepřekrývají data 37
Opět příklad, kde dostáváme zprávy s rychlostí větší než 30 km/h Chceme výsledek za poslední minutu každých 10 sekund 38
Time-based sliding window ESL (Stream Mill) CREATE STREAM C2XSpeeder SELECT COUNT(*) As speederno OVER (RANGE 1 MINUTE PRECEDING SLIDE 10 SECOND) FROM C2XMessage WHERE Speed > 30.0 Tuple-based tumbling window CQL (STREAM) SELECT Istream COUNT(*) FROM C2XMessage[RANGE 100 SLIDE 100] WHERE Speed > 30.0 Tuple-based landmark window TruSQL (TruSQLEngine) SELECT Count(*) FROM C2XMessage <LANDMARK RESET AFTER 600 ROWS ADVANCE 20 ROWS> WHERE Speed > 30.0 39
Logická časová razítka Posloupnost čísel označující pořadí Fyzická časová razítka Zahrnují informace o času 40
Implicitní časová razítka Přiřazena n-tici, když dorazí do DSMS N-tice jsou řazena časem příchodu Existuje i koncept časových razítek přiřazených na vstupní či výstupní frontě operátorů Explicitní časová razítka Vytvořena zdrojem proudu dat (je atributem schématu datového proudu) Implicitní časová razítka mohou být přiřazována líně (až když je potřeba), explicitní časová razítka jsou přiřazena vždy 41
Explicitní časová razítka CREATE STREAM C2XMgs( ts timestamp, msgid char(10), lng real, lat real, speed real, accel real) ORDER BY TS; SOURCE port5678 ; Implicitní časová razítka CREATE STREAM C2XMgs( ts timestamp, msgid char(10), lng real, lat real, speed real, accel real, current_time timestamp) ORDER BY current_time; SOURCE port5678 ; Líná časová razítka CREATE STREAM C2XMgs( ts timestamp, msgid char(10), lng real, lat real, speed real, accel real); SOURCE port5678 ; 42
Někdy mohou n-tice obsahovat více časových razítek u událostí řízených datových proudů, kde n-tice obsahuje časová razítka pro začátek a konec události Jsou i systémy, kde jsou řazeny n-tice se stejnými časovými razítky 43
Přiřazení časových razítek u výsledků binárních operátorů nebo agregací Čas vytvoření výstupní n-tice implicitní č. r. Použití časových razítek první tabulky ovlivněné operátorem pro implicitní i explicitní č. r. Například pro výpočet minima, může být použito časové razítko n-tice s minimem Možné také použít medián časových razítek okna 44
Mnoho systémů a jejich operátorů se spoléhá na pořadí příchodu n-tic (časová razítka) Nemůže být garantováno zvláště u explicitních časových razítek 45
Určitá tolerance špatného pořadí v určitém rozsahu Další možností je přiřazování pořadí a případné přeuspořádání, pokud je potřeba 46
Order-agnostic operátory Nezáleží na pořadí prvků Například filtry Order-sensitive operátory Jsou parametrizovány definicí určující zpracování neuspořádaných n-tic Definice obsahuje atribut indikující pořadí a slack parametr, který říká kolik n-tic mimo pořadí bude tolerováno 47
Při používání senzorů jako zdroje proudu dat může způsobovat problémy Defektní data (nepřesnosti měření) Neuspořádaná data (zpoždění dat) Nekompletní data (senzor přestane měřit) 48
Popisuje jak jsou spolehlivá data, která zpracováváme Kvalita měřených dat je určená dimenzí datové kvality Například stáří dat Každá dimenze datové kvality definuje vlastní metriku 49
Příklady dimenzí datové kvality, jež by měly být důležité pro dopravní aplikaci Dimenze datové kvality Úplnost Objem dat Neformální popis Příklad metriky Aplikační/ Systémová Poměr mezi chybějícími n-ticemi a počtem přijatých n-tic Počet n-tic, na kterých závisí výsledek Počet nenulových hodnot vydělených všemi hodnotami v okně Množství n-tic v okně Včasnost Stáří n-tice Rozdíl mezi časem vytvoření a aktuálním časem systému Přesnost Konzistence Důvěra Udává přesnost údajů, tj. konstantní chyba měření, nebo výsledek data mining algoritmu Označuje míru, že hodnota atributu náleží do definovaných omezení Spolehlivost n-tice, tj. důvěra v odhadnutí správného výsledku Externě vypočtená nebo nastavená hodnota Výpočet podle určitého pravidla Váha vypočtená z ostatních dimenzí datové kvality Aplikační Aplikační a systémová Aplikační a systémová Aplikační Aplikační Aplikační 50
Hodnotí, jak se plní požadavky a omezení Snaží se udržet kvalitu služeb v určitých mezích aplikováním protiopatření Časová dimenze Propustnost Výstupní zpoždění Obsahová dimenze Vzorkování Velikost posuvného okna Odhadovaná kvalita Data mining kvalita Hodnotová dimenze Zda jsou důležité hodnoty na výstupu 51
Pokud nevyhovují některé dimenze, například když je systém přetížen a generuje velké zpoždění DSMS může zahazovat n-tice vzorkovací technikou, která může být náhodná, či sofistikovaná Zahazování n-tic se nazývá load shedding V různých systémech se nastavují hranice kvality služeb pro různé dimenze Dimenze kvality jsou vypočítávány v celém zpracovávání dotazu 52
Výše zmíněná kvalita služeb se týkala většinou systémové kvality, šlo ji získat až u výstupního proudu dat Aurora systém, byl zdokonalen, že šlo získat informace o kvalitě u každého operátoru Každá n-nice obsahuje vektor s kvalitou dimenze, která mohla být obsahový nebo výkonnostní Omezení, že dimenze kvality je pro všechny datové proudy stejná Rozšířen PIPES systém aby obsahoval upravené operátory, jež umožní vložit dimenzi datové kvality jako součást schématu proudu dat Změna dat může způsobit aktualizaci kvality dat atributu, n-tice, či okna 53
Nedostatkem předchozích řešení je hluboká integrace odpovídajících metrik datové kvality do operátorů Povoleno definovat vlastní dimenze kvality a jejich metriky Obsahuje dimenzi kvality, metriku Přiřazení dat dané dimenzi kvality Informace jsou pak načítány při registraci nepřetržitého dotazu a následně datová kvalita je vypočítávána pomocí načtených informací Informace o datové kvalitě pak vložíme do n-tice proudu dat jako zvláštní atribut 54
Jiný způsob řešení špatných dat jsou pravděpodobnostní datové proudy Dva hlavní typy nejistot v datových proudech Existence n-tice v datovém proudu Nejistota hodnoty atributu v n-tici datového proudu Pravděpodobnostní datové proudy jsou pak sekvence n-tic, jež kromě atributů obsahují i pravděpodobnost jejich existence 55
Projekt Skupina Běh Popis STREAM Stanford University 2000-2006 Pravděpodobně nejoblíbenější; jazyk CQL Aurora/Borealis Brown Univ., Brandeis Univ., MIT 2003 2008 Distribuovaný systém; komerční StreamBase; jazyk SQuAl PIPES Universität Marburg 2003 2007 Komerční RTM Analyzer; jazyk PIPES System S/SPC/SPADE IBM 2006 pokračuje Komerční InfoSphere Streams; jazyk SPADE/SPL StreamMill UCLA Pokračuje Podpora pro XML data; jazyk ESL 56
Systém Společnost Založeno na Popis InfoSphere Streams IBM System S / SPADE / SPC Oracle Event Processing (OEP) Samostatný produkt, podpora jen Linux; jazyk SPL Oracle - Samostatný produkt, založen na Javě a XML; jazyk CQL/EPL StreamInsight Microsoft - Samostatný produkt, potřebuje klíč SQL Server 2012; jazyk.net, LINQ StremBase StreamBase Aurora/Borealis Samostatné produkty (Server, Studio, ); jazyk StreamSQL TruSQL Engine Truviso TelegraphCQ Integrován do Cisco Prime, jazyk StreaQL Esper (Open Source) EsperTech - Samostatný produkt, pro.net a Javu; jazyk EPL SAP Sybase Event Stream Processor Sybase - Jazyk CCL 57
DSMS je účinný a efektivní řešení pro zpracovávání velkého množství rychle přicházejících dat, které musí být zpracovány v reálném čase Existuje mnoho prototypů a některé se vyvinuly ve vyspělé průmyslové řešení Velké firmy mají svá řešení pro zpracování proudů dat I přes různé snahy neexistuje standard pro dotazovací jazyk, ani společná množina operátorů pro zpracování proudů dat Kvalita dat se ukázala jako klíčová pro systémy DSMS 58
Sandra Geisler: Data Stream Management Systems Wikipedia: https://en.wikipedia.org/wiki/data_stream_m anagement_system Prezentace Dotazovaní nad proudy dat 59