Dotazovací jazyk pro řazená data

Podobné dokumenty
Informační systémy ve zdravotnictví. 6. cvičení

Operátory ROLLUP a CUBE

Databáze SQL SELECT. David Hoksza

Úvod do databázových systémů

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky

PG 9.5 novinky ve vývoji aplikací

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Dotazovací jazyky I. Datová krychle. Soběslav Benda

KIV/ZIS cvičení 5. Tomáš Potužák

Úvod do databázových systémů

Informační systémy ve zdravotnictví. 10. cvičení

IDS optimalizátor. Ing. Jan Musil, IBM ČR Community of Practice for

Úvod do databázových systémů 3. cvičení

Úvod do databázových systémů

Jazyk SQL 2. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c M.Valenta, 2011 BI-DBS, ZS 2011/12

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

TimescaleDB. Pavel Stěhule 2018

Dotazování v relačním modelu a SQL

Systémy řízení proudů dat

Úvod do databázových systémů

DATA CUBE. Mgr. Jiří Helmich

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Informační systémy ve zdravotnictví. 8. cvičení

Databáze 2011/2012 SQL SELECT II. RNDr.David Hoksza, Ph.D.

8. Zpracování dotazu. J. Zendulka: Databázové systémy 8 Zpracování dotazu 1

Databázové systémy Cvičení 5.2

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

8.2 Používání a tvorba databází

Databázové systémy. Cvičení 6: SQL

J. Zendulka: Databázové systémy 8 Zpracování dotazu Podstata optimalizace zpracování dotazu

Ukládání a vyhledávání XML dat

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

Kapitola 4: SQL. Základní struktura

Návrh a tvorba WWW stránek 1/14. PHP a databáze

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Multi-dimensional expressions

PRG036 Technologie XML

Tvorba informačních systémů

CS 245: Database System Principles

PRG036 Technologie XML

SQL SQL-SELECT. Informační a znalostní systémy. Informační a znalostní systémy SQL- SELECT

Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model

Novinky v PostgreSQL 9.4. Tomáš Vondra, 2ndQuadrant

Databázové systémy trocha teorie

Databázové systémy I

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

J. Zendulka: Databázové systémy 4 Relační model dat 1

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Databáze I. Přednáška 4

5. blok Souhrnné a skupinové dotazy

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

RELAČNÍ DATABÁZOVÉ SYSTÉMY

XML databáze. Přednáška pro kurz PB138 Moderní značkovací jazyky Ing. Petr Adámek

Vyhodnocování dotazů slajdy k přednášce NDBI001. Jaroslav Pokorný MFF UK, Praha

Databázové systémy. Dotazovací jazyk SQL - II

4. Relační model dat. J. Zendulka: Databázové systémy 4 Relační model dat 1

Základní přehled SQL příkazů

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

37. Indexování a optimalizace dotazů v relačních databázích, datové struktury, jejich výhody a nevýhody

Třídění a vyhledávání Searching and sorting

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Databázové systémy. Agregace, sumarizace, vnořené dotazy. Vilém Vychodil

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Dotazy v SQL. Výraz relační algebry R1( )[A1,A2,...,Aj] lze zapsat takto: SELECT A1,A2,...,Aj FROM R1 WHERE. Výraz (R1, R2... Rk)( )[A1,A2,...

Kurz Databáze. Prezentace dat. Obsah. Tiskové sestavy (Report) Ing. Jolana Škutová

SQL - SELECT. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 7

Použití databází na Webu

MS Access Dotazy SQL

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Analýza a modelování dat 3. přednáška. Helena Palovská

Analýza a modelování dat. Přednáška 8

Kapitola 3: Relační model. Základní struktura. Relační schéma. Instance relace

RDF a RDF Query. Jakub Nerad 1. prosince Nerad () RDF a RDF Query 1. prosince / 16

OQL. (Object Query Language) Michal Bartoš Filip Bureš

Object Query Language. Daniel Fromek Miroslav Novotný

Optimalizace & soft omezení: algoritmy

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Databáze I. Přednáška 6

Obsah. SQL konstrukce select join Rekurze (rekurzivní with) Analytické funkce, group by Pivoting

Angličtina v matematických softwarech 2 Vypracovala: Mgr. Bronislava Kreuzingerová

Databázové systémy Tomáš Skopal

Úvod do databázových systémů 1. cvičení

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

SQL tříhodnotová logika

Michal Krátký, Miroslav Beneš

Databázové systémy a SQL

Materializované pohledy

KIV/ZIS - SELECT, opakování

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Jazyk SQL slajdy k přednášce NDBI001

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

5. Formalizace návrhu databáze

Databázové a informační systémy Jana Šarmanová

Transkript:

Dotazovací jazyk pro řazená data NDBI006 2011 Martin Chytil

Motivace - dotazy závislé na pořadí Úvod do jazyka AQuery Datový model Algebra Transformace dotazů - optimalizace Výsledky experimentů Podobné projekty Shrnutí

Výsledek dotazu se změní jiným uspořádáním vstupu Všechny nabídky dané akcie během dne Pěti-cenový klouzavý průměr Finanční svět, molekulární biologie, toky paketů v síti

Relační databáze pomocí doplňků Složité formulace jednoduchých dotazů Obtížná optimalizace

Schéma: Obchod(ID, datum, cena, časové_razítko) Dotaz: Pro danou akcii v daném dni najít nejlepší možný zisk

SELECT max(rozdíl) FROM (SELECT ID, datum, cena min(cena) OVER (PARTITION BY ID, datum ORDER BY časové_razítko ROWS UNBOUNDED PRECEDING) AS rozdíl, FROM Obchod ) AS t1 WHERE ID = 'ACME' AND datum = '05/11/03'

Schéma: Paket(ID, zdroj, cíl, délka, časové razítko) Dotaz: Počet paketů a průměrná délka paketů v každém datovém toku

WITH Předchozí (zdroj, cíl, délka, čr, pč) AS (SELECT zdroj, cíl, délka, čr, min(čr) OVER (PARTITION BY zdroj,cíl ORDER BY čr ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) FROM Paket), Tok (zdroj, cíl, délka, čr, flag) AS (SELECT zdroj, cíl, délka, čr, CASE WHEN čr-pč > 120 THEN 1 ELSE 0 END FROM Předchozí), TokID (zdroj, cíl, délka, čr, tid) AS (SELECT zdroj, cíl, délka, čr, sum(flag) OVER (ORDER BY zdroj, cíl, čr ROWS UNBOUNDED PRECEDING) FROM Tok) SELECT zdroj, cíl, avg(délka), count(čr) FROM TokID GROUP BY zdroj, cíl, tid

Podpora uspořádní na nejnižších základech Sémantické rozšíření relační algebry (SQL 92) Klauzule ASSUMING ORDER Arrable Základní datový typ Setříděná entita

Τ množina typů, každý t Τ je základního typu (integer, boolean, ) nebo jednodimensionální pole elementů základního typu. A neomezeně velké ale konečné pole elementů t Τ Kardinalita A = A = počet jeho prvků A,k- = k -tý element A (k = index / pozice)

Arrable r = kolekce pojmenovaných polí A 1, A 2,, A n, A 1 = A 2 = = A n, A i, 1 i n, je typu t Τ

Obchod ID Datum Cena ČR ACME 5.11.2003 12.02 1 WXYZ 5.11.2003 43.23 2 ACME 5.11.2003 12.04 5 ACME 5.11.2003 12.05 9 WXYZ 5.11.2003 43.22 13 Sada ID Datum Cena ČR ACME 5.11.2003 [12.02, 12.04, 12.05] [1, 5, 9] WXYZ 5.11.2003 [43.22, 43.23] [2, 13]

k tý záznam Arrable r r k = < A 1 k, A 2 k,, A n k > Indexace začíná od 0 Arrable je složen z uspořádaných polí arrable je uspořádaný

r(a 1,, A n ) arrable Arrable může být uspořádaný podle podmnožiny polí, ze kterých je složen B 1, B 2,, B m A 1, A 2,, A n, k 1, k 2 indexy, k 1 < k 2 i) B 1 k 1 = B 1 k 2,, B m k 1 = B m k 2 ii) i B i k 1 < B i k 2, Pro i > 1, B 1 k 1 = B 1 k 2,, B i 1 k 1 = B i 1 k 2 Pro sestupné uspořádání symetricky

r a s dva arrable nad stejnou množinou atributů r je ORDERED BY X 1,, X p, s je ORDERED BY Y 1,, Y q pak r a s jsou Order-ekvivalentní nad B 1,, B m, pokud: i) r a s jsou množinově ekvivalentní ii) B 1,, B m je prefixem X 1,, X p a Y 1,, Y q Značíme r B1,,B m s, r *+ s

V dotazech závislých na pořadí výsledek závisí na kombinaci více než jednoho vstupního záznamu AQuery se vyznačuje sémantikou zaměřenou na sloupce jednotlivé proměnné se vážou na celé své pole Výrazy definují mapování ze seznamu polí do pole

Funkce bere jako argument vektor a vrací vektor AQuery obsahuje spoustu takových funkcí Př. Prev, Next, Funkce se klasifikují podle vztahu k uspořádání vstupního pole a ke kardinalitě pole, kterou generují (Ne)závislé na uspořádání, (ne)zachovávající velikost

Výraz e je nezávislý na uspořádání, pokud: A i, 1 i m kde m je stupeň výrazu a pro libovolnou permutaci perm platí: e(a 1,, A m ) *+ e(a 1 Perm,, A m Perm ) Jinak je závislý na uspořádání

Trochu jiné Vector-to-vector funkce závislé na pořadí, zachovávající velikost Klouzavé minimum mins A i = min (A i, mins A i 1 ) mins A = 0 < i < A A i, i = 0 Klouzavá suma sums A i = A i + sums A i 1 ) sums A = 0 < i < A A i, i = 0

Např. first A,n = A,0.. n 1- last A,n = A, A n.. A 1- Pokud se takové funkce drží kraje pole, označují se jako hraniční funkce a mají specifický význam při optimalizaci

Podporuje operátory relační algebry Jako argumenty se používají pole Pokud je výraz závislý na uspořádání, pak operátor také zachovává uspořádání

r je Arrable e = e 1,, e m je seznam výrazů nad poli arrablu r, tž. e 1 = = e m Pořadí zachovávající projekce r nad e π op e r projection(e, r) 1. s empty arrable aving te same scema as e 2. for i = 0 to r 1 3. append < e 1 i,, e m i > to s 4. end for 5. output s

r je Arrable p predikát mapující pole r do pole boolean tž. r = p Pořadí zachovávající selekce r přes p σ op p r selection(p, r) 1. s empty arrable aving te same scema as 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

r(a 1,, A m ) arrable B 1, B 2,, B m A 1, A 2,, A n Setřídění r podle B 1, B 2,, B m znamená permutaci s arrablu r takovou, že s(r) je ORDERED BY B 1, B 2, B m sort B1,B 2,,B m (r)

Schéma: Obchod(ID, datum, cena, časové_razítko) Dotaz: Pro danou akcii v daném dni najít nejlepší možný zisk

SELECT max(cena - mins(cena)) FROM Obchod ASSUMING ORDER časové_razítko WHERE ID = 'ACME' AND datum = '05/11/03 π e op (σ p op (sort cr (Obcod))), e = max cena mins cena, p = (ID = ACME ) (datum = 05/11/03 )

AQuery: SELECT max(cena - mins(cena)) FROM Obchod ASSUMING ORDER časové_razítko WHERE ID = 'ACME' AND datum = '05/11/03' SQL99: SELECT max(rozdíl) FROM (SELECT ID, datum, cena min(cena) OVER (PARTITION BY ID, datum ORDER BY časové_razítko ROWS UNBOUNDED PRECEDING) AS rozdíl, FROM Obchod ) AS t1 WHERE ID = 'ACME' AND datum = '05/11/03'

r je Arrable g = G 1,, G m je seznam výrazů nad poli arrablu r, tž. G 1 = = G m = r, Pro každé r i existuje skupina charakterizovaná g i Pořadí zachovávající group-by r nad g gby g op r

group-by(g,r) 1. groups := empty arrable having the same schema as g 2. s:= empty arrable having the same schema as 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

Obchod ID Datum Cena ČR ACME 5.11.2003 12.02 1 WXYZ 5.11.2003 43.23 2 ACME 5.11.2003 12.04 5 ACME 5.11.2003 12.05 9 WXYZ 5.11.2003 43.22 13 Sada ID Datum Cena ČR ACME 5.11.2003 [12.02, 12.04, 12.05] [1, 5, 9] WXYZ 5.11.2003 [43.22, 43.23] [2, 13]

A pole, parametr funkce F Each(F, A) 1. B := empty array of the same type of F's result 2. for i = 0 to A -1 3. append F(A[i]) to B 4. end for 5. output B

Schéma: Paket(ID, zdroj, cíl, délka, časové razítko) Dotaz: Počet paketů a průměrná délka paketů v každém datovém toku

SELECT zdroj, cíl, avg(délka), count(čr) FROM Paket ASSUMING ORDER zdroj, cíl, čr GROUP BY zdroj, cíl, sums(deltas(čr) > 120) π e each (gby g op (sort zdroj,cíl,cr (Paket))), e = zdroj, cíl, each avg(), délka, each(count(), cr), g = zdroj, cíl, sums(deltas cr > 120)

AQUERY: SELECT zdroj, cíl, avg(délka), count(čr) FROM Paket ASSUMING ORDER zdroj, cíl, čr GROUP BY zdroj, cíl, sums(deltas(čr) > 120) SQL99: WITH Předchozí (zdroj, cíl, délka, čr, pč) AS (SELECT zdroj, cíl, délka, čr, min(čr) OVER (PARTITION BY zdroj,cíl ORDER BY čr ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) FROM Paket), Tok (zdroj, cíl, délka, čr, flag) AS (SELECT zdroj, cíl, délka, čr, CASE WHEN čr-pč > 120 THEN 1 ELSE 0 END FROM Předchozí), TokID (zdroj, cíl, délka, čr, tid) AS (SELECT zdroj, cíl, délka, čr, sum(flag) OVER (ORDER BY zdroj, cíl, čr ROWS UNBOUNDED PRECEDING) FROM Tok) SELECT zdroj, cíl, avg(délka), count(čr) FROM TokID GROUP BY zdroj, cíl, tid

r A 1,, A n, s B 1,, B m jsou arrably Levě-pravé spojení r a s pomocí predikátu p zachovávající uspořádání r p lrop s

join(p, r, s) 1. o:= empty arrable with schema < A 1,, A n, B 1,, B m > 2. for i = 0 to r - 1 3. for j = 0 to s - 1 4. if p(r[i],s[j]) is true 5. Append < A 1,i-,, A n,i-, B 1,j-,, B m,j- >to o 6. end if 7. end for 8. end for 9. output o

order r = seznam atributů, podle kterých je arrable r implicitně setříděn, tzn. ORDERED BY Můžeme použít pos r odkazujeme na r i = i, pokud se Speciální indexy FIRST a LAST

sort A r order r r, A je prefix order r Nemusím třídit setříděné

σ p op sort A r A sort A σ p r, p není závislé na uspořádání Můžu posunout třídění až za selekci Selekce může těžit z případného existujícího uspořádání Můžu třídit menší množinu záznamů

π op e,i- r order(r) π op e σ pos()=i r Nahrazení projekce s indexem čistou projekcí a konkrétní selekcí na určitou pozici Takové projekce se nazývají implicitní selekce Pokud je pozice na krajích operandu (pole) Hraniční selekce S takovou selekcí mohu posunovat Není potřeba třídit celý vstup

Fyzický operátor AQuery Implementuje obecný vzor hraniční selekce op σ edge cond sort r Používá modifikaci heapsortu k udržení správných elementů

sort A (r A=B s) A sort A r A, B scema r, s lop A=B s, Třídění výsledku spojení je ekvivalentní setřídění levé strany a následného spojení zachovávající uspořádání Stačí třídit až výsledek spojení

op σ A=B,i- r order(r) r A=B σ pos()=i r, A, B scema r Využití výhody implicitního třídění na arrable r Využití self-join Můžeme manipulovat s každou částí různě

σ p op r lop A=B s order r σ op p (σ each p gby A r lop A=B s, A, B scema r, s, p je pos() = FIRST or pos() = LAST, B je unikátní Optimalizace hraniční selekce po spojení Nemusím spojovat všechno, hraniční selekce toho dost vyloučí

Fyzický operátor Implementuje obecný vzor each σ edge cond gby r Silně optimalizovatelný vzor Nemusím seskupovat všechno, operátor velmi rychle dokáže vyloučit záznamy nevyhovující hraniční podmínce

gby A op (sort A,B r ) A,B sort B each (gby A op r ) Výsledek musí být setříděný podle seskupovaných atributů (zachování uspořádání) Seskupování musí probíhat přes prefix tříděných atributů Myšlenka: Třídění probíhá až uvnitř každých seskupení je jich méně, bude to rychlejší

Motivační příklad 1: Počet akcií 200 1000 1000 obchodů / akcie Zlepšení roste s počtem akcií!!! 8 21 x lepší než SQL99 Důvod: protláčení selekce před tříděním SQL99 nemůže posunovat selekci, plán generuje n- tice, které zahazuje

Motivační příklad 2 100 sessions Různé délky paketů 2K 10K Zlepšení 2 3x proti SQL99 AQuery používá pouze jedno třídění SQL99 si nedokáže poradit se dvěmi nesouvisejícími WINDOW vede ke dvou odlišným tříděním ještě před GROUP BY

1 milion obchodů s akciemi Postupně rovnoměrně rozděleno mezi 10, 100, 1000 a 10000 akcií Čím více záznamů může Edgeby zahodit, tím rychlejší Průměrně 2x rychlejší než provedení standardního GROUP BY přes celou tabulku

1 mil. Obchodů s akciemi Rozděleno do proměnlivého množství akcií Třídění v seskupených záznamech vychází vždy lépe Do 10 různých akcií je zlepšení v 10-kách ms Nad 10 ve 100-kách ms!!!

Využití Sort Edge Jednotky ms Nevyužití Sort Edge 100-ky ms Rozdíl jsou 100-ky ms!!!!!

Využití semi-join k redukci záznamů určených ke třídění Zlepšení se zastavilo na 100 a více unikátních záznamech určených ke třídění Došlo k situaci, že cena za semi-join začala převyšovat cenu za třídění

Strukturální jednoduchost AQuery pomáhá optimalizátoru najít vhodnější plán provedení Redukce práce s využitím Sort Edge a Sort Embedding je VELMI výrazná Transformace dotazů přináší podstatné zlepšení výkonu, zejména při optimalizacích ceny dotazů

AQuery je následovníkem KSQL Přebírá ze základů KSQL pojem Arrable Snaží se více udržet SQL základy Zavádí pouze jednoduchou klauzuli ASSUMING ORDER

Pouze doplňkové optimalizace, bez většího efektu Optimalizační kroky jsou stále oddělené, transformace obsahující redukci / eliminaci třídění nejsou uvažovány při jiných algebraických transformacích

Dotazy závislé na uspořádání vstupních dat AQuery dotazovací jazyk pro takové dotazy Datový model a algebra jazyka Optimalizační kroky Výsledky experimentů

Alberto Lerner, Dennis Shasha: AQuery: Query Language for Ordered Data, Optimization Techniques, and Experiments