+ All Categories
Home > Education > Dotazování nad proudy dat

Dotazování nad proudy dat

Date post: 11-Jul-2015
Category:
Upload: jan-drozen
View: 73 times
Download: 0 times
Share this document with a friend
74
Dotazování nad proudy dat NDBI001 10.12.2013, Bc. Jan Drozen
Transcript
Page 1: Dotazování nad proudy dat

Dotazování nad proudy datNDBI001 10.12.2013, Bc. Jan Drozen

Page 2: Dotazování nad proudy dat

O čem bude řeč

Úvod

Motivace

Dotazování

Algoritmy

Shrnutí

Page 3: Dotazování nad proudy dat

Úvod

Page 4: Dotazování nad proudy dat

Systém řízení proudu dat

DBMS > DSMS

DSMS je nadmnožina DBMS

Dají se simulovat pomocí procedurálních

prostředků v DBMS

Page 5: Dotazování nad proudy dat

Rozdíly DBMS oproti DSMS

DBMS

Data trvale uložená

Možnost náhodného

přístupu

Jednorázové dotazy

Velká sekundární

paměť (TB)

DSMS

Proudy jsou dočasné

Pouze sekvenční

zpracování

Dlouhotrvající dotazy

Omezená primární

paměť (GB)

Page 6: Dotazování nad proudy dat

Rozdíly DBMS oproti DSMS - pokračování

DBMS

Data v přesně

definovaném známém

stavu

Relativně statická povaha

Menší nároky na rychlost

Očekáváme přesné

deterministické výsledky

DSMS

Data závislá na pořadí na

vstupu

Velmi velmi častý zápis

Rychlost velmi důležitá

Mohou (musí) stačit pouze

aproximované výsledky

Page 7: Dotazování nad proudy dat

Motivace

Page 8: Dotazování nad proudy dat

Příklady

Tradebot – webový finanční vyhledávač, vyhodnocuje

dotazy vůči aktuálním datům

Dnes už neaktivní

iPolicyNetworks – uplatňování různých pravidel ve velkých

sítích

Také nedostupné

Synchronizace distribuovaných systémů – Yahoo

Monitorování senzorů

Page 9: Dotazování nad proudy dat

Sledování síťového provozu - příklad

Podrobnější motivační příklad

Mějme poskytovatele připojení k Internetu (ISP)

Disponuje rozsáhlou páteřní sítí

Požadavek na trasování paketů a monitorování

provozu

Page 10: Dotazování nad proudy dat

Sledování síťového provozu – pokr.

Řešení

Specializovaný systém pouze pro danou úlohu

Vlastní řešení

Logování a zpětné offline vyhodnocování

Page 11: Dotazování nad proudy dat

Sledování síťového provozu – pokr.

Model sítě:

Linka C propojuje páteřní síť ISP se sítí

koncového zákazníka

Linka B propojuje dva routery uvnitř páteřní

sítě ISP

B a C označíme proudy trasovacích dat

odpovídající provozu na těchto linkách

Page 12: Dotazování nad proudy dat

Sledování síťového provozu – pokr.

Trasovací data obsahují hlavičku formátu:

zdroj– IP adresa odesilatele

cil– IP adresa příjemce

id – identifikační číslo generované odesilatelem, aby

příjemce mohl jednoznačně identifikovat paket

delka – délka daného paketu

cas – informace o tom, kdy byl daný paket

zaznamenán

Page 13: Dotazování nad proudy dat

Sledování síťového provozu – pokr.

Chceme umět formulovat dotaz Q1 takový, že:

Spočítá vytížení linky B průměrovaný po

minutových intervalech

Pokud vytížení překročí určitou míru t, tak

informuje operátora

Page 14: Dotazování nad proudy dat

Sledování síťového provozu – pokr.

Q1:

SELECT upozorniOperatora(SUM(delka))FROM BGROUP BY minuta(cas)HAVING SUM(delka) > t

Možno simulovat pomocí triggerů

Pokud by byl provoz velký (např. optická linka), mohlo

by dojít k problémům

Page 15: Dotazování nad proudy dat

Sledování síťového provozu – pokr.

Chceme umět formulovat dotaz takový, že:

Filtruje provoz pouze v páteřní síti

Rozdělí provoz na jednotlivé proudy

Určí intenzitu provozu v každém proudu

Proud definujeme jako sekvence paketů mezi

určitým zdrojem a cílem

Page 16: Dotazování nad proudy dat

Sledování síťového provozu – pokr.

Q2:

SELECT idProudu, zdroj, cil, SUM(delka) AS delkaProuduFROM (SELECT zdroj, cil, delka, cas

FROM BORDER BY cas)

GROUP BYzdroj, cil, ziskejIdProudu(zdroj, cil, cas) ASidProudu

ziskejIdProudu vrací identifikátor proudu na základě zdroje, cíle a

času

GROUP BY a ORDER BY klauzule

Page 17: Dotazování nad proudy dat

Sledování síťového provozu – pokr.

Chceme umět formulovat dotaz takový, že:

Zjistíme, jakou část provozu páteřní linky

můžeme přiřadit síti zákazníka

Page 18: Dotazování nad proudy dat

Sledování síťového provozu – pokr.

Q4:

SELECT(SELECT COUNT(*)FROM C,BWHERE C.zdroj = B.zdroj AND C.cil = B.cil AND

C.id = B.id)/(SELECT COUNT(*)FROM B)

Operace spojení

Nad proudy dat nemusí stačit paměť

Page 19: Dotazování nad proudy dat

Sledování síťového provozu – pokr.

Chceme umět (naposledy) formulovat dotaz

takový, že:

Bude monitorovat páry zdroj – cíl

V páteřní síti

Pouze pro 5 procent s nejvyšším vytížením

Page 20: Dotazování nad proudy dat

Sledování síťového provozu – pokr.

Q4:

WITH vytizeni AS (SELECT zdroj, cil, SUM(delka) AS provozFROM BGROUP BY zdroj, cil)SELECT zdroj, cil, provozFROM vytizeni AS L1WHERE ( SELECT COUNT(*)

FROM vytizeni AS L2WHERE L2.provoz < L1.provoz) > (SELECT 0.95 * COUNT(*)

FROM vytizeni))

ORDER BY provoz

Page 21: Dotazování nad proudy dat

Dotazování

Page 22: Dotazování nad proudy dat

Problémy při dotazování

Prvky proudu dat přicházejí online

Systém nemá kontrolu nad pořadím, v jakém data

přicházejí

Potenciálně neomezená velikost

Jakmile je prvek proudu dat zpracován, je

archivován nebo zahozen

Pokud chceme jinak, musíme to explicitně

vyjádřit

Page 23: Dotazování nad proudy dat

Typy dotazů

V klasickém DBMS spustíme dotaz a ten po

vykonání vrací výsledky, které zpracujeme

To lze v DSMS samozřejmě také

Jednorázové dotazy (one-time queries)

Zahrnují i zmiňované DBMS dotazy

Rozlišujeme, protože existují i jiné dotazy

Dlouhotrvající dotazy (continuous queries)

Přidaná hodnota DSMS

Page 24: Dotazování nad proudy dat

Dělení dotazů

Podle zpracování

Jednorázové

Dlouhotrvající

Podle pokládání

Předdefinované

Známé před začátkem proudu

Jednoúčelové (ad-hoc)

Vytvořené v průběhu

Page 25: Dotazování nad proudy dat

Problémy s pamětí

Proudy dat jsou potenciálně neomezené -> proto i dotazy

pro zpracování mohou požadovat neomezeně velkou

paměť

DBMS pracují s externí (sekundární) pamětí –

optimalizované algoritmy

Pro DSMS nemusí být použitelné

Nejsou navržené na dlouhotrvající dotazy

Pro vyhodnocování v reálném čase velká latence

DSMS typicky pro takové aplikace

Page 26: Dotazování nad proudy dat

Problémy s rychlostí

V DBMS dotazování nad známými daty

V DSMS při vykonávání dotazu přicházejí nová

data

Rychlost zpracování musí být dostatečně vysoká

Jinak velká latence

Hrozí, že budou data zahozena ještě před

zpracováním

Dále se omezíme pouze na práci s primární

pamětí

Page 27: Dotazování nad proudy dat

Řešení problémů - aproximace

Pokud upustíme od požadavku na exaktní

odpověď, můžeme se zbavit problémů

Ale omezíme si i výrazovou sílu dotazovacího

jazyka

Dotazy vykonávány v omezeně velké paměti

Odpovědi aproximované

Kvalitní aproximace může pro většinu aplikací

bez problémů dostačovat

Page 28: Dotazování nad proudy dat

Aproximace - pokračování

Různé techniky pro aproximace:

Sketch

Náhodné vzorkování

Histogramy

Vlnky (wavelets)

Předmětem výzkumu

Page 29: Dotazování nad proudy dat

Klouzavá okna

Základní myšlenka aproximovaných odpovědí

Nebudeme se dotazovat nad kompletními daty

(celá historie proudu), ale pouze nad nějakým

aktuálním úsekem

Např. data za poslední hodinu, týden,...

Řada výhod:

Dobře definovaná

Jednoduchá sémantika

Page 30: Dotazování nad proudy dat

Klouzavá okna - pokračování

Deterministická

Upřednostňují aktuální data

Typické pro reálné nasazení

Použitelné nejen pro aproximaci, ale i explicitně

pro sémantiku

Právě omezení na určitý časový úsek

Page 31: Dotazování nad proudy dat

Klouzavá okna - pokračování

Ale i zde přetrvávají problémy:

Co když se ani okno nevejde do paměti?

Náročná implementace

Rozšíření SQL a relační algebry o práci s okny

Předmětem výzkumu

Page 32: Dotazování nad proudy dat

Dávkové zpracování, vzorkování,

synopse

(batch processing, sampling, synopses)

Další techniky pro aproximativní dotazování

Budeme uvažovat datovou strukturu, do které můžeme zapisovat (inkrementálně se zvětšuje)

Potřebujeme operace:

update(n-tice)

Aktualizuje strukturu, když přijdou nová data

computeAnswer()

Vrátí nové nebo aktualizované výsledky dotazu

Page 33: Dotazování nad proudy dat

Operace

Jaká je rychlost update a computeAnswer ?

Pokud je jedna z nich pomalejší (obě), než je

průměrná doba mezi příchozími daty, nastává

problém

Zpracování „neudrží krok“ s proudem

Není možné vrátit přesnou odpověď (relativně k

uvažované podmnožině proudu)

Page 34: Dotazování nad proudy dat

Dávkové zpracování

Update je rychlá, computeAnswer pomalá

Přirozeným řešením je zpracovávat data v

dávkách

Data jsou ukládána do mezipaměti (buffering)

Odpovědi jsou spočteny jednou za určitou dobu

Aproximativní v tom ohledu, že odpovědi nejsou v

reálném čase

Page 35: Dotazování nad proudy dat

Vzorkování

Update pomalá, computeAnswer rychlá

Není možné pro výpočet odpovědi použít

všechna potřebná data – přicházejí rychleji,

než jsou zpracovávána

Některé příchozí n-tice jsou přeskočeny

Pouze omezená kvalita výsledků

Pro některé aplikace nevyhovující

Page 36: Dotazování nad proudy dat

Synopse

Chceme update i computeAnswer rychlé

Aproximativní datová struktura

Synopse nebo sketch (skica)

Typicky malá

Menší než přesná reprezentace

Opět předmětem výzkumů

Page 37: Dotazování nad proudy dat

Blokující operace

Blokující operátor je pro dotaz takový operátor,

který potřebuje pro svůj výpočet znát všechna

data, dříve než vydá jakýkoli výstup.

Např. třídění, COUNT, SUM, MIN, MAX, AVG,...

Záleží na pozici ve stromě dotazu

List

Pro DSMS nepoužitelné

Vnitřní uzel

V DSMS možné

Page 38: Dotazování nad proudy dat

Blokující operace - pokračování

Jako kořen může vracet průběžné výsledky dalším operátorům

Pokud je odpovědí jedna hodnota nebo je dostatečně malá - odpovídá jako proud dat – pokud se agregovaná hodnota změní, vrátí ji jako další prvek proudu

Pokud je odpověď delší, je vhodné udržovat datovou strukturu s „aktuálním stavem odpovědi“

Page 39: Dotazování nad proudy dat

Blokující operátory - řešení

Namísto blokujících operátorů jako vnitřních uzlů

použít neblokující alternativy, které fungují

stejně (ale aproximativně)

Např. JUGGLE operátor

Neblokující verze třídění

Přerovnává lokálně data

Negarantuje správný výsledek

Page 40: Dotazování nad proudy dat

Blokující operace – řešení pokračování

Punctuation

Rozhodnutí, že s některými daty se již nebude

pracovat a mohou být poslána na výstup

Např. den >= 10

„všechny další atributy den budou mít

hodnotu alespoň 10“

Data s menší hodnotou mohou být

zpracována a odeslána

Page 41: Dotazování nad proudy dat

Dotazování na starší data

Data nejsou persistentně ukládána

Problém pro jednoúčelové dotazy – některá data

již mohla být zahozena – nemožné odpovědět na

dotaz přesně

Omezení dotazů pouze do budoucnosti

Omezující, ale v praxi použitelné

Možné udržovat agregované informace o proudu

ve specializované struktuře

Zdroj dalších problémů

Page 42: Dotazování nad proudy dat

DSMS Stanford STREAM

Stanford StREam DatA Manager

Prototyp implementace DSMS

Dotazovacím jazykem je rozšíření SQL

Umožňuje FROM klauzulí referencovat relace i

proudy dat

Podpora dotazů nad klouzavými okny

Page 43: Dotazování nad proudy dat

STREAM – klouzavá okna

Page 44: Dotazování nad proudy dat

STREAM – klouzavá okna - pokračování

Časovou známkou může být čas (nečekaně), ale i identifikátor

pořadí

Požadavkem je totálně uspořádaná doména s metrikou

Rozšíření SQL o volitelnou specifikaci okna ve FROM klauzuli

Pomocí hranatých závorek

1. Klauzule rozdělující proud do skupin – okno pro každou skupinu

2. Velikost okna

Ve „fyzických“ jednotkách – např. počet prvků okna

V „logických“ jednotkách – např. počet dní

3. predikát pro filtrování

Page 45: Dotazování nad proudy dat

STREAM – klouzavá okna - pokračování

Fyzická okna

klíčové slovo ROWS (ROWS 50 PRECEDING)

Logická okna

klíčové slovo RANGE (RANGE 15 MINUTESPRECEDING)

Page 46: Dotazování nad proudy dat

STREAM - příklady

Pro následující příklady uvažujme schéma:

záznamy o telefonních hovorech

atributy: id_zakaznika, typ, minut, cas

atribut cas je časovou známkou určující

pořadí

Page 47: Dotazování nad proudy dat

STREAM – příklad I

Chceme spočítat průměrnou délku hovoru,

uvažujíc pouze 10 posledních meziměstských

hovorů pro každého zákazníka

SELECT AVG(S.minut)FROM hovory AS S [PARTITION BY

S.id_zakaznikaROWS 10 PRECEDINGWHERE S.typ = ‘Mezimesto‘]

Page 48: Dotazování nad proudy dat

STREAM – příklad II

Chceme spočítat průměrnou délku hovoru,

uvažujíc pouze meziměstské z deseti posledních

hovorů pro každého zákazníka

SELECT AVG(S.minut)FROM hovory AS S [PARTITION BY

S.id_zakaznikaROWS 10 PRECEDING]

WHERES.typ = ‘Mezimesto‘

Page 49: Dotazování nad proudy dat

STREAM – příklad III

Chceme zjistit průměrnou délku posledních 1000

hovorů, které uskutečnili zákazníci z kategorie

„Gold“

SELECT AVG(V.minut)FROM (SELECT S.minut

FROM hovory AS S, zakaznici AS TWHERE S.id_zakaznika =

T.id_zakaznikaAND T.kategorie = ‘Gold‘)

AS V [ROWS 1000 PRECEDING]

Page 50: Dotazování nad proudy dat

Časové známky

Jsou velmi důležité

V předchozích příkladech jsme používali implcitní

Co se stane, když jsou n-tice původem z různých proudů?

Např. použití operátorů spojení – jakou známku má

dostat výsledek?

Explicitní známky mají jiný problém

Data nemusejí přijít v pořadí podle známek (např.

vlivem stavu sítě)

Page 51: Dotazování nad proudy dat

Časové známky - pokračování

Problém s explicitními známkami prakticky

znemožňuje použití s klouzavými okny

Pokud je proud „téměř“ setříděný, menší

odchylky lze jednoduše řešit pomocí mezipamětí

Page 52: Dotazování nad proudy dat

Časové známky - přidělování

Binární operátory vytvářejí nové prvky – je potřeba jim

určit známky.

Neřešit pořadí

Pštrosí taktika

Předpoklad, že dříve příchozí prvky operátor také dříve

opustí

Implicitní

Pořadí určí uživatel explicitně

Pořadí odpovídající pořadí proudů ve FROM klauzuli

Může vzniknout více prvků se stejnou známkou

Page 53: Dotazování nad proudy dat

Časové známky – příklad

SELECT *FROM S1 [ROWS 1000 PRECEDING],

S2 [ROWS 100 PRECEDING]WHERE S1.A = S2.B

Výstupní n-tice budou setřídění podle známek S1. Uspořádání vůči S2 je ztraceno

Potenciálně nutnost udržovat data v mezipaměti

Pro zajištění správného pořadí

Může se stát, že přijdou další data v S2, která se spojí s daty v S1, která mají menší známky a patří do současného okna

Page 54: Dotazování nad proudy dat

Časové známky - problém

Tento problém se může propagovat stromem dotazu

Použití 1. nebo 2. způsobu přidělování závisí na konkrétní aplikaci

1. způsob pro zvýšení výkonu – použití oken pro aproximaci

2. způsob pro explicitní sémantiku oken

Page 55: Dotazování nad proudy dat

Časové známky – rozlišení přidělování

STREAM umožňuje v dotazu určit způsob přidělování známek

Definuje klíčová slova:

PRECEDING

odpovídá 2. způsobu

RECENT

nové klíčové slovo

odpovídá 1. způsobu

DSMS si může sám určit pořadí n-tic

možno použít pouze s fyzickou specifikací velikosti

okna

Page 56: Dotazování nad proudy dat

STREAM – vykonání dotazu

Exekuční plán (podobně jako v DBMS)

Skládá se z prvků:

Operátory

Fronty (spojují operátory)

Synopse (používají je operátory jako pomocné

datové struktury)

Existují i implementace se sdílenou frontou pro

všechny operátory (Aurora, Eddies)

Page 57: Dotazování nad proudy dat

STREAM – vykonání dotazu – pokrač.

Operátory plánuje centrální plánovač

Během vykonávání dotazu operátor čte data z fronty, aktualizuje synopsi, která mu náleží a zapíše výsledek do výstupní fronty

Operátor pracuje po dobu, kterou mu určí plánovač

Po vypršení této doby předá řízení zpět plánovači

Page 58: Dotazování nad proudy dat

STREAM – vykonání dotazu – pokrač.

Protože uvažujeme i dlouhotrvající dotazy, je

potřeba zohlednit měnící se stav systému

Např. počet konkurentních proudů, množství

dotazů, dostupná paměť

Operátory musí být adaptivní

Page 59: Dotazování nad proudy dat

Algoritmy

Page 60: Dotazování nad proudy dat

Algoritmy

Page 61: Dotazování nad proudy dat

Metriky srovnání algoritmů

Page 62: Dotazování nad proudy dat

Náhodné vzorkování

Předpokládá se použití v systému, kdy malý

vzorek dat zachycuje jejich charakteristiku

V závislosti na požadovaných vlastnostech se

používají různé algoritmy pro vzorkování (např

stratified sampling)

Page 63: Dotazování nad proudy dat

Sketch

Vytváří malý vzorek proudu (v malé paměti)

Používají se hašovací funkce pro výpočty

distribuce prvků v proudu

Page 64: Dotazování nad proudy dat

Histogramy

Struktura používaná pro sumarizaci dat

Znázorňuje distribuci dat v množině

Dají se použít na odhad velikosti dotazu,

aproximativní odpovědi, data mining...

V-Optimální histogram

Rovnoměrný histogram

End-Biased histogram

Zdroj: Wikipedia

Page 65: Dotazování nad proudy dat

V-Optimální histogram

Zdroj:http://www.mathcs.emory.edu/~cheun

g/Courses/584-StreamDB/Syllabus/06-

Histograms/v-opt1.html

Page 66: Dotazování nad proudy dat

Rovnoměrný histogram

Page 67: Dotazování nad proudy dat

End-Biased histogram

Page 68: Dotazování nad proudy dat

Vlnky (wavelets)

Technika pro sumarizaci dat

Používá projekci hodnot na ortogonální bázový

vektor

Je možné data zpět lehce rekonstruovat

Page 69: Dotazování nad proudy dat

Shrnutí

Page 70: Dotazování nad proudy dat

Shrnutí

Viděli jsme množství vlastností a problémů, které

s sebou přináší zpracování proudů dat

Položme si na závěr otázky, které souvisejí s

motivací:

Je efektinější DSMS nebo DBMS s podporou

triggerů, dočasných objektů,...?

Je potřeba vyvíjet univerzální systém nebo je

lepší řešit každý problém speciálně?

Existují nějaké „killer apps“ pro DSMS?

Page 71: Dotazování nad proudy dat

Shrnutí

Pokud si odpovíme ano, znamená to řešit všechny

problémy, se kterými jsme se setkali

Časové známky, klouzavá okna, blokující

operátory,...

i nesetkali

Distribuované DSMS

Z pohledu dotazovacího jazyka

je lepší rozšířit SQL nebo použít něco úplně

jiného?

Page 72: Dotazování nad proudy dat

Zdroje

B. Babcock, S. Babu, M. Datar, R. Motwani, J.

Widom:

Models and Issues in Data Stream Systems,

Stanford University

Data stream management systems na Wikipedii

Page 73: Dotazování nad proudy dat

Prostor pro otázky?„Ptejte se mě na co chcete, já na co chci odpovím.“

Page 74: Dotazování nad proudy dat

Děkuji za pozornost.


Recommended