Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilIlona Staňková
1
DSMS Martin Schmid Dotazovací Jazyky 11.2011
2
Co je to DSMS? ● Data Streaming Management System ● Ale co je to stream? ● Proud dat setříděných podle času ● Měření teploty, informace o obyvatelých (věk, plat) ● Informace o dopravě (počet aut, nehody) ● Televizní vysílání, telefonní hovory ● Seřažené n-tice (a, T) podle času, kde a je prvek relace a T časové razítko. – (teplota, místo, T) – (id_auta, pozice_auta, rychlost, T)
3
Co by nás mohlo zajímat ● Průměrný/maximální věk/plat obyvatel ● Počet aut na D1 ● Průměrná rychlost na komunikacích ● Počet nehod za poslední týden ● Graf vývoje teplot
4
Proč nepoužít DBMS? ● Určitě dokážeme zjistit maximální věk či průměrný plat ● Také si spočítáme počet aut na dálnici, počet nehod ● Data se ale RYCHLE MĚNÍ ● (lidé umírají, auta bourají) ● Nechceme pouštět dotaz pořád dokola – dotaz navíc může trvat dlouho ● Někdy je dat příliš mnoho, aby jsme je dokázali ukládat
5
Limitace DBMS pro proudy ● DBMS je pasivní skladiště dat, kde lidé spouštějí dotazy. ● (Human-Active, DBMS-Passive (HADP) model) ● Zajímá nás pouze současný stav dat (a né jak se data v čase měnila) ● Triggery byli navrženy až později a jejich implementace není dost rychlá pokud je jich potřeba mnoho. ● DBMS předpokládá, že data všechna data jsou synchronizovaná a v konzistentním stavu => dotazy mají vždy přesnou, správnou odpověď ● DBMSs není navrženo pro real-time aplikace
6
Vlastnosti DSMS ● Místo trvalých relací, DSMS pracuje s daty které mohou do sýtému přitékat a zase odtékat ● Výsledek dotazu není statický ● Nemusíme nutně ukládat celý proud, ale stačí data potřebné pro okénko dotazu ● Real time vlastnosti důležitější než přesnost (I za cenu zahození dat které nestíháme zpracovat) ● Některé DSMS integrují DBMS a umožnují například join tabulka + stream
7
Linear Road Benchmark ● Jak velké množství dat/s je schopen DSMS zvládat ● Na jaké otázky je nám schopen vůbec odpovědět ● Nejedná se čistě o papírový příklad – využití v navigacích ● Simulace dopravního zatížení několika rychlostních silnic ● Regulace dopravy je zarízena pomocí měnících se poplatků za úseky jednotlivých úseků silnic ● Každá z L dálnic je dlouhá 100 mil a rozdělena do sta jednomílových segmentů. ● Dálnice jsou 4-proudové, kde jedna je vyhrazena pro vstup/výstup ● Auta hlásí svoji pozici v 30s intervalech. Auta musí být informována o poplatcích pro segment v kterém se nachází. ● Pokud auta nahlasí shodnou pozici 4krát za sebou, jedná se o nehodu
8
Linear Road Benchmark Co od tohoto systému požadujeme? ● Počet aut ● Kolik jsme vybrali za poplatky – celkem, dnes, dnes na konkrétní dálníci... ● Očekávaná doba cesty ● Na jak velkých datech? ● 12 milionů hlášení pozic
9
DSMS ● Výsledek dotaz se v průběhu času mění ● Výsledkem může být nekonečná množina
10
Struktura dotazů ● Chceme podobnou syntax jako v SQL ● Dotazy používají OKNO, a to buď – Časové (počet aut co projelo za poslední hodinu) – Relační (průměrná rychlost posledních 100 aut) ● Kdy se mají dotazy aktualizovat? – Na základě časových jednotek (v čase 186 přijela auta A, B, C) – Na základě jednotlivých záznamů (v čase 186 přijelo auto A, v čase 186 přijelo auto B, v čase 186 přijelo auto C)
11
Co budeme používat ● Aukce(id_aukce, pradavac, T) ● Nakup(id_aukce, kupujici, cena, T)
12
CQL ● Continuous Query Language ● Dotazy jsou aktualizovány na základě času
13
CQL ● Kolik utratil Luke na aukcich od Johna za posledni den? ● SELECT SUM(P.cena) ● FROM Aukce AS A, Nakupy [RANGE 1 DAY] AS P ● WHERE A.id_aukce = P.id_aukce ● AND A.prodavac = 'John' ● AND P.kupujici = 'Luke'
14
CQL ● Kolik utratil Luke za poslednich 10 aukcich od Johna? ● SELECT SUM(P.cena) ● FROM Aukce AS A, Nakupy [ROWS 10] AS P ● WHERE A.id_aukce = P.id_aukce ● AND A.prodavac = 'John' ● AND P.kupujici = 'Luke'
15
CQL ● V předchozích případech byl výsledek aktualizovaná relace – Stream-to-relation dotazy ● Co když ale chceme aby výsledek byl opět proud? – Stream-to-stream ● Nejrychlejší auto za posledních 10minut – Nechceme pouze pouze auto, ale postupně aktualizovaný proud aut, která byla nejrychlejší – Do proudu je vždy vloženo nové ● => ● ISTREAM operator ● ISTREAM( DOTAZ ) postupně plní proud z dotazu
16
STREAM implementace ● WHERE pro sub-query ● HAVING ● Aritmetika v agregaci (MAX(A) – MIN(B) AS X) ● Padá často na agregacích MIN, MAX ● !!Data musí být nejprve uložena do souboru => není vůbec hotová podpora real-time!! ● (May 2011)
17
StreamSQL ● Podobná syntax jako CQL ● Narozdíl od CQL má syntax pro stream-to-stream
18
Stream-to-stream operators ● Stream FILTER ● SELECT * FROM Nakupy WHERE cena > 100 ● Stream JOIN ● SELECT * FROM A, B ● WHERE A.id = B.id
19
Stream-to-stream operators ● Stream UNION – slije dva proudy do jednoho na základě času ● ceske_aukce(aukce, T) ● slovenske_aukce(aukce, T) ● SELECT * FROM ceske_aukce UNION slovenske_aukce ● (ces.aukce, 2), ● (slov.aukce, 3) ● (slov.aukce, 5) ● (ces.aukce, 8) ● (ces.aukce, 9)
20
Linear Road Benchmark ●
21
●
23
Sledování ptáků
24
Otázky? ● Děkuji za pozornost...
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.