Dotazovací jazyk pro setříděná data Tereza Cihelková, Matěj Klonfar.

Slides:



Advertisements
Podobné prezentace
DOTAZOVACÍ JAZYKY slajdy přednášce DBI006
Advertisements

Aplikační a programové vybavení
J. Pokorný 1 DOTAZOVACÍ JAZYKY slajdy přednášce DBI006 J. Pokorný MFF UK
KIV/ZIS Cvičení 6 SQL - SELECT.
J. Pokorný 1 DOTAZOVACÍ JAZYKY slajdy přednášce DBI006 J. Pokorný MFF UK Odpřednášeno
Zpracování SQL Lubomír Andrle 5. přednáška
Aplikační a programové vybavení
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
Vnitřní řazení v poli (in sito)
ALGO – Algoritmizace 6. cvičení
DB1 – 9. cvičení Optimalizace dotazu Konkurenční přístup a deadlock Indexace Transakce.
Databázové systémy SQL Výběr dat.
YDASYS1 Ing. Monika Šimková.
Fakulta elektrotechniky a informatiky
Algebra.
Informační systémy Nástroje pro sběr dat, návrh a realizace databáze.
AGREGACE Distinct, Group By, Having, SUM, …. DISTINCT  Slučování stejných řádků ve výsledku dotazu. AGREGACE 2 JménoPříjmeníID FrantišekVomáčka1 JosefPokorný2.
Další dotazy SQL Structured Query Language. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
SQL Structured Query Language
Informatika pro ekonomy II přednáška 11
Databázové systémy 1 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy I Přednáška č. 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Temporální databáze a TSQL
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
Programování v Pascalu Přednáška 7
Materiály k přednášce Úvod do programování Ondřej Čepek.
Temporální Databáze Jaroslav Dražan. Čím se budeme zabývat Proč je čas v DB důležitý Práce s časem pomocí klasického SQL Reprezentace časové domény Spojování.
PRÉCIS OD NESTRUKTUROVANÝCH KLÍČOVÝCH SLOV JAKO DOTAZŮ K STRUKTUROVANÝM DATABÁZÍM JAKO ODPOVĚDÍM Martin Lacina.
Medians and Order Statistics Nechť A je množina obsahující n různých prvků: Definice: Statistika i-tého řádu je i-tý nejmenší prvek, tj., minimum = statistika.
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
Informatika I 3. přednáška
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
DATOVÉ MODELY (c) Tralvex Yeap. All Rights Reserved.
A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
Fakulta elektrotechniky a informatiky
Algoritmy a programovací techniky
Databázové systémy I Cvičení č. 9 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
1IT D OTAZOVACÍ JAZYKY V RELAČNÍCH DATABÁZÍCH Ing. Jiří Šilhán.
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy Přednáška č. 6.
SQL – základní pojmy Ing. Roman Danel, Ph.D.
SQL PVA Jan Hora. SQL „graficky“ Grafický vs. pravý SQL SELECT ORDED BY WHERE.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
WinBase tiskové sestavy Návod Postupy Příklady.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
ACCESS DOTAZY Ing. Jana Horáková IKT MS Office
Informatika II PAA DOTAZOVACÍ JAZYKY
Aplikační a programové vybavení
Databázové systémy Informatika pro ekonomy, př. 18.
Databáze velké množství dat pevně dané struktury
Obecná kvantifikace v relačních databázích Přehled typů dat a algoritmů Alan Eckhardt.
XQuery Dotazovací jazyk XML Daniel Privalenkov. O čem bude prezentace Nutnost dotazovacího jazyku v XML Rychlý přehled XQuery Několik příkladů.
Databázové systémy SQL Výběr dat.
Progress SQL92 Optimalizátor Jan Lánský
Databázové systémy 2 Zkouška – 8:00. Příklad I - Funkce Vytvořte funkci ZK_DIFF_MIN_MAX (P_ZAM_ID NUMBER) RETURN VARCHAR2. Funkce může vracet.
4. Typ pole 4.1 Jednorozměrná pole
CUBE - Operátor relační agregace
Teorie zpracování dat RELAČNÍ DATOVÝ MODEL.
23/04/20151 LINQ (1) LINQ (Language Integrated Query) je součást MS.NET Frameworku umožňující jednotný přístup k datům a jejich zpracování deklarativ-
SQL – příkaz SELECT Ing. Roman Danel, Ph.D.
Programování ENUM, SWITCH,pole jednorozměrná a vícerozměrná, deklarace, inicializace, kopírování, porovnání Erik Král.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Databázové systémy a SQL
Databázové systémy a SQL
Optimalizace SQL dotazů
Přednáška 7 SQL – JOIN.
Přednáška 9 Triggery.
Transkript prezentace:

Dotazovací jazyk pro setříděná data Tereza Cihelková, Matěj Klonfar

Obsah prezentace První část: Motivace Úvod do AQuery Datový model a algebra Druhá část: Transformace Experimentální výsledky Příbuzné projekty

Zpracovala Tereza Cihelková

Motivace – úvod do problematiky Na pořadí závislý dotaz Výsledek záleží na pořadí vstupních dat Příklad nezávislého dotazu Prostředí: databáze akcií a jejich cen Dotaz na průměrnou cenu Příklad závislého dotazu Prostředí: databáze akcií a jejich cen Dotaz na klouzavý průměr ceny – délky například 5

Motivace – úvod do problematiky Dotazovací jazyky založené na relačních datových modelech zvládají na pořadí závislé dotazy jen přes rozšíření Důsledek: dotazy jsou složité jak na zápis, tak na optimalizaci SQL:1999 a okénkový mechanismus Umožňuje třídit data v omezených částech dotazu AQuery je přímo navržené pro na pořadí dat závislé dotazování

Motivace – příklady s OLAP Nákup a prodej akcií v ten samý den Schéma: Transakce(ID, datum, cena, ts) ID – identifikátor obchodované akcie ts – časové razítko Dotaz: Pro danou akcii a daný den zjistěte, kolik nejvíce bylo možné vydělat, pokud člověk zakoupil a následně prodal akcii v tom samém dni.

Motivace – příklady s OLAP [SQL:1999] SELECT max(klouzavy_roz) FROM (SELECT ID, datum, cena - min(cena) OVER (PARTITION BY ID, datum ORDER BY ts ROWS UNBOUNDED PRECEDING) AS klouzavy_roz, FROM Transakce ) AS t1 WHERE ID = 'ACME' AND datum = '05/11/03'

Motivace – příklady s OLAP Počet paketů a jejich průměrná délka v rámci toku Schéma: Pakety(pID, src, dest, delka, ts) pID – identifikátor paketu src – odesílatel dest – příjemce delka – velikost paketu ts – časové razítko Datový tok od odesílatele k příjemci považujeme za ukončený, pokud déle jak dvě minuty není žádný provoz Dotaz: Počet paketů a jejich průměrná délka v rámci každého toku

Motivace – příklady s OLAP [SQL:1999] WITH Prec (src, dest, delka, ts, ptime) AS (SELECT src, dest, delka, ts, min(ts) OVER (PARTITION BY src, dest ORDER BY ts ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) FROM Pakety), Tok (src, dest, delka, ts, ag) AS (SELECT src, dest, delka, ts, CASE WHEN ts-ptime > 120 THEN 1 ELSE 0 END FROM Prec), [SQL:1999] WITH Prec (src, dest, delka, ts, ptime) AS (SELECT src, dest, delka, ts, min(ts) OVER (PARTITION BY src, dest ORDER BY ts ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) FROM Pakety), Tok (src, dest, delka, ts, ag) AS (SELECT src, dest, delka, ts, CASE WHEN ts-ptime > 120 THEN 1 ELSE 0 END FROM Prec), TokID (src, dest, delka, ts, fID) AS (SELECT src, dest, delka, ts, sum(ag) OVER (ORDER BY src, dest, ts ROWS UNBOUNDED PRECEDING) FROM Tok) SELECT src, dest, avg(delka), count(ts) FROM TokID GROUP BY src, dest, fID TokID (src, dest, delka, ts, fID) AS (SELECT src, dest, delka, ts, sum(ag) OVER (ORDER BY src, dest, ts ROWS UNBOUNDED PRECEDING) FROM Tok) SELECT src, dest, avg(delka), count(ts) FROM TokID GROUP BY src, dest, fID

Úvod do AQuery V relačních modelech se na tabulky díváme jako na mlutimnožiny(jeden prvek se může vyskytnout vícekrát) AQuery : dotazovací jazyk, který je sémantickým rozšířením multimnožinoviného relačního modelu Arrable – odlišný pohled na tabulky array-table uspořádané entity Řazení může být definováno již při vytváření arrable pomocí klauzule ORDER BY

Úvod do AQuery AQuery obsahuje klasické SELECT – FROM – WHERE – GROUP BY – AGGREGATE – HAVING klauzule Hlavní rozšíření jsou založená na nové klauzuli ASSUMING ORDER Definuje setřídění arrablů uvedených ve FROM klauzuli Predikáty a výrazy obsažené v kterékoliv klauzuli počítají s řazením uvedeným v ASSUMING ORDER Důsledek: to umožňuje psát dotazy mnohem přirozeněji, jak si později ukážeme Ověřit platnost předpokladu pak musí optimalizér Pořadí zachovávající, pořadí-cavalier varianty operátorů

Datový model a algebra Příklad dvou arrablů – v následujícím textu se k němu ještě budeme vracet

Datový model a algebra Definice 1: Arrables T – množina typů z nichž každý odpovídá nějakému základnímu typu(integer, boolean…) nebo jednorozměrnému poli tvořenému elementy základních typů A - konečné pole elementů typu kar(A) – kardinalita A je rovna počtu jeho elementů arrable r – kolekce pojmenovaných polí A₁,…,An, která mají stejnou kardinalitu a každé je z nich je typu z T

Datový model a algebra Definice 2: Idexování arrable k-tý záznam v arrable r je tvořen k-tým elementem každého z polí, kterými je arrable r tvořeno Definice 3: Třídění (Ordered by) – vzestupné, k₁<k₂ Arrable r může být (lexikograficky) setřízeno podle nějaké podmnožiny svých polí Buď (i) Nebo (ii) takové, že a když i>1 pak

Datový model a algebra Definice 4: Order-Ekvivalence r, s – arrable nad stejnou množinou atributů Předpokládejme, že r je ORDERED BY podle nějaké množiny atributů X1,…,Xp, s zase podle Y1,…,Yq Pak r a s jsou order-ekvivalentní s respektem k atributům B1,…,Bm (značeno ) pokud: (i) r a s jsou multimnožinově ekvivalentní (ii) B1,…,Bm je prefixem X1,…Xp i Y1,…,Yq Pokud jsou r a s čistě jen multimnožinově ekvivalentní píšeme

Datový model a algebra Sémantika orientovaná na sloupce U na pořadí závislých dotazů často výsledná řádka závisí na kombinaci hodnot z více jak jedné vstupní řádky Na řádky orientované jazyky jako SQL mají přístup jen k jedné řádce v čase V AQuery proměnné vždy odpovídají polím a proto výrazy vždy definují mapování ze seznamu polí do pole, počítáme tedy s vektory Rozdíl cen v po sobě jdoucích řádcích můžeme tedy jednoduše zapsat jako: cena-prev(cena)

Datový model a algebra Definice 5 : Závislost na pořadí Výraz v, který mapuje seznam polí na jedno pole je nezávislý na pořadí, pokud když zpermutujeme pořadí prvků ve vstupních polích(po řádcích), dostaneme stejný výsledek Například avg(cena) nezáleží na pořadí Výrazy, které nejsou nezávislé na pořadí jsou závislé na pořadí cena-prev(cena) je výraz závislý na pořadí

Datový model a algebra Další funkce patřící mezi na pořadí závislé a velikost zachovávající jsou klouzavé agregační funkce Např: klouzavé minimum přes pole A značíme jako mins(A), klouzavý součet sums(A). Vždy mají koncovku „s“ Některé klouzavé agregační funkce mohou být spočítány pomocí posuvného okénka – například avgs(w,A), kde w je velikost okénka

Datový model a algebra Další kategorií funkcí zobrazujících z vektoru na vektor jsou ty, které jsou závislé na pořadí, ale nezachovávají velikost Pokud zachovávají jen začátek nebo konec pole, nazýváme je okrajové funkce Například prvních nebo posledních n pozic pole first(n,A), last(n,A) Klasické SQL agregační fuknce (min, max, avg, count) mohou být brány jako na pořadí nezávislé, velikost nezachovávající, vektor na vektor zobrazující funkce

Datový model a algebra Algebra v AQuery Podporuje operátory relační algebry Každý operátor tu ovšem bere jako vstupní argumenty výrazy typu polí Pokud je výraz na pořadí závislý, potom operátor zachovává pořadí Jinak je jen pořadí-cavalier – což znamená, že výsledek je multimnožinově ekvivalentní ke své pořadí zachovávající variantě Ve zbytku této sekce definujeme pořadí zachovávající varianty operátorů relační algebry

Datový model a algebra Definice 6 : Projekce Mějme arrable r a seznam výrazů e=e1,…,em nad poli z arrable r takových, že |e1|=…=|em| Pořadí zachovávající projekce r nad e, značená, je definovaná jako : projection(e,r) 1. s:= prázdné arrable se stejným schema jako e 2. for i = 0 to |r|-1 3. append to s 4. end for 5. output s Pokud je některé ei na pořadí závislé, tak říkáme, že projekce je pořadí zachovávající. Jinak je jen pořadí-cavalier

Datový model a algebra Definice 7 : Selekce Mějme arrable r a predikát p, který mapuje seznam polí z r do pole hodnot boolean, takový, že |r|=|p| Pořadí zachovávající selekce z r nad p, značená, je definována jako: selection(p,r) 1. s:= prázdné arrable se stejným schema jako r 2. for i = 0 to |r|-1 3. if p[i] is true 4. append r[i] to s 5. end if 6. end for 7. output s Stejně jako projekce, může být selekce na pořadí závislá a buď pořadí zachovávající nebo k pořadí šetrná

Datový model a algebra Definice 8 : Třídění Mějme arrable r(A1,…,An) a B1,…,Bm buď podmnožinou A1,…,An. Tříděním r nad B1,..,Bm myslíme permutaci s arrable r, která je ORDERED BY B1,..,Bm. Nyní můžme ukázat, jak by vypadal první příklad na dotaz na nejvýhodnější obchod s akciemi v AQuery: SELECT max(price - mins(price)) FROM Trades ASSUMING ORDER ts WHERE ID = 'ACME' AND tradeDate = '05/11/03'

Datový model a algebra AQuery klauzule SELECT, FROM,.. jsou vykonávány stejně jako v SQL. Sémanticky je ASSUMING ORDER přeloženo jako třídění poté, co je vyhodnocena FROM klauzule Všechny následující klauzule (WHERE, GROUP BY, HAVING a SELECT) jsou nutně přeloženy do pořadí zachovávajících algebraických variací AQuery algebra : e = max(price-mins(price)) p=(ID=‘ACME’) AND (tradeDate = ’05/11/03’)

Datový model a algebra Definice 9 : Seskupování (Grouping) Mějme arrable r a g=G1,..,Gm buď seznam výrazů nad polemi z r, tak, že |G1|=…=|Gm|=|r|. Ke každému r[i] musí existovat skupina charakterizovaná g[i] Pořadí zachovávající seskupování r nad g je značeno jako: Kvůli krokům 8 a 13 v následujícím algoritmu se nám může stát, že po seskupení budeme mít v některých sloupcích místo skalárů vektory

Datový model a algebra group-by(g,r) 1. groups := prázdné arrable se stejným schema jako g 2. s:= prázdné arrable se stejným schema jako r 3. for i = 0 to |r|-1 4. if g[i] in groups 5. j:= index of g[i] in groups 6. for each column C in r 7. if C is not a grouped-by column 8. concat r[i].C to s[j].C 9. end if 10. end for 11. else 12. append g[i] to groups 13. append r[i] to s 14. end if 15.end for 16.output s

Datový model a algebra

Definice 10 : Each modifikátor Nechť je pole A parametrem funkce F. Provedení funkce F modifikované pomocí ‘each’ vypadá následovně: each(F, A) 1. B := prázdné pole stejného typu jako výstup F 2. for i = 0 to |A|-1 3. append F(A[i]) to B 4. end for 5. output B Pro případy, kdy chceme funkci aplikovat na sloupce jejichž položky jsou poli – typicky po seskupení ‘each’ je nutně pořadí zachovávající

Datový model a algebra

Jak by vypadal druhý příklad v AQuery? Chceme zjistit počet paketů a jejich průměrnou délku v rámci každého toku dat SELECT src, dest, avg(length), count(ts) FROM Packets ASSUMING ORDER src, dest, ts GROUP BY src, dest, sums(deltas(ts) > 120) Algebra: e = src, dest, each(avg(),length), each(count(),ts) g = src, dest, sums(deltas(timestamp)>120)

Datový model a algebra Definice 11 : Spojení (Join) Mějme arrable r(A1,..,An) a s(B1,..,Bm). Levo-pravé pořadí zachovávající spojení r a s nad predikátem p, značené : join(p, r, s) 1. o:= prázdné arrable se schema 2. for i = 0 to |r| for j = 0 to |s| if p(r[i],s[j]) is true 5. append to o 6. end if 7. end for 8. end for 9. output o

Datový model a algebra Poslední příklad: Mějme arrable Portfolio(ID, tradedSince) ORDERED BY ID Cheme zjistit posledních 10 cen každé akcie v portfoliu SELECT t.ID, last(10, price) FROM Trades t, Portfolio p ASSUMING ORDER ts WHERE t.ID= p.ID GROUP BY t.ID Algebra: e = ID, each(last(),10,price) p = Trades.ID = Portfolio.ID

Zpracoval Matěj Klonfar

Transformace Redukce / Eliminace Třídění Selekce Projekce Join a Semi-Join Group By

Transformace Redukce / Eliminace Třídění Je-li A předponou order(r)

Transformace Selekce Není-li p závislé na uspořádání Projekce Je-li e výraz nad poli z r

Transformace Spojení a Poloviční spojení Je-li A, B ze schématu r, s Je-li A, B ze schématu r

Transformace Spojení a Poloviční spojení Je-li A, B ze schématu r, s, p je buď ‘ pos()=FIRST ’ nebo ‘ pos()=LAST ’ a B je jedinečné

Transformace Group By

Optimalizace Implicitní selekce a okrajové třídění Dělené třídění Vnořené třídění Edgeby a brzká okrajová selekce

Implicitní selekce a okrajové třídění Schéma: Connections(host, port, client, timestamp) ORDERED BY timestamp Dotaz : SELECT last(1, client) FROM Connections ASSUMING ORDER timestamp WHERE host = ‘atlas’

Implicitní selekce a okrajové třídění

Dělené třídění Schéma: Connections(host, port, client, timestamp) ORDERED BY host Dotaz : SELECT client FROM Connections ASSUMING ORDER timestamp WHERE host = last(1, host)

Dělené třídění

Vnořené třídění Schéma: Trades(ID, tradeDate, price, timestamp) Dotaz : SELECT ID, last(10, price) FROM Trades ASSUMING ORDER ID, timestamp GROUP BY ID

Vnořené třídění

Edgeby a brzká okrajová selekce Schéma: Trades(ID, tradeDate, price, timestamp) ORDERED BY timestamp Portfolio(ID, name, tradedSince) ORDERED BY ID Dotaz : SELECT last(1, price) FROM Trades, Portfolio ASSUMING ORDER timestamp WHERE Trades.ID=Portfolio.ID AND name=“DataOrder”

Edgeby a brzká okrajová selekce

Výsledky Optimalizované vs. neoptimalizované plány Osa x – velikost dat, Osa y - čas

Výsledky Zrychlení oproti SQL:1999

Reference Lerner, A. and Shasha, D. AQuery: Query language for ordered data, optimization techniques, and experiments. In VLDB, , 2003.

Děkujeme za pozornost