Vyhodnocování dotazů slajdy k LS I155 Jaroslav Pokorný.

Slides:



Advertisements
Podobné prezentace
PLAYBOY Kalendar 2007.
Advertisements

OZD: Hašování RNDr. Michal Žemlička.
J. Pokorný 1 DOTAZOVACÍ JAZYKY slajdy přednášce DBI006 J. Pokorný MFF UK
Zpracování informací a znalostí Datové struktury a algoritmy pro vyhledávání informací Doc. RNDr. Jan Rauch, CSc. Katedra informačního a znalostního.
Zpracování informací a znalostí Další přístupy k vyhledávání textových dokumentů Doc. RNDr. Jan Rauch, CSc. Katedra informačního a znalostního inženýrství.
Vlastní skript může být umístěn: v hlavičce stránky v těle stránky
*Zdroj: Průzkum spotřebitelů Komise EU, ukazatel GfK. Ekonomická očekávání v Evropě Březen.
Cvičení Úloha 1: Rozhodněte zda posloupnost znaků v poli délky n tvoří palindrom (slovo, které je stejné při čtení zprava i zleva). Př.: [a,l,e,l,a] [a,n,n,a]
ALGO – Algoritmizace 6. cvičení
Red-Black Stromy Binární Vyhledávací Stromy, u kterých je časová složitost operací v nejhorším případě rovná O(log n)
SQL – tříhodnotová logika
PROGRAM PRO VÝUKU T ČLÁNKU
Třídění Seminář IVT. Definice uspořádání skupiny dat (záznamů) dle daného klíče vzestupně (od nejmenší do největší hodnoty klíče) sestupně (od největší.
AutorMgr. Lenka Závrská Anotace Očekávaný přínos Tematická oblastOperace s reálnými čísly Téma PředmětMatematika RočníkPrvní Obor vzděláváníUčební obory.
Téma 3 ODM, analýza prutové soustavy, řešení nosníků
Teorie zpracování dat Ukázková písemka. Kapitola 4 Je dána tabulka Zam (login, jmeno, plat, funkce), implementovaná je v SŘBD používajícím indexové soubory.
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Dynamické rozvozní úlohy
Násobíme . 4 = = . 4 = = . 4 = = . 2 = 9 .
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.
Metody řazení s lineární časovou složitostí
Skip-List je datová struktura, která může být použita jako náhrada za vyvážené stromy. představují pravděpodobnostní alternativu k vyváženým stromům (struktura.
B-Strom.
Zápis čísla v desítkové soustavě
Kdo chce být milionářem ?
Téma: SČÍTÁNÍ A ODČÍTÁNÍ CELÝCH ČÍSEL 2
Binární stromy, AVL stromy
Vizualizace projektu větrného parku Stříbro porovnání variant 13 VTE a menšího parku.
Vzdělávací materiál / DUMVY_32_INOVACE_02B14 Příkazový řádek: obsah souborů PŘÍKLADY AutorIng. Petr Haman Období vytvořeníLeden 2013 Ročník / věková kategorie3.
VY_32_INOVACE_INF_RO_12 Digitální učební materiál
Počítání s řemesly II. MALÍŘKA LÉKAŘKA ZDRAVOTNÍ SESTŘIČKA PRODAVAČKA
Dělení se zbytkem 3 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
ZÁKLADNÍ ŠKOLA PODBOŘANY, HUSOVA 276, OKRES LOUNY
MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA reg. č.: CZ.1.07/1.4.00/ Základní škola, Šlapanice, okres Brno-venkov, příspěvková organizace Masarykovo nám.
VY_32_INOVACE_ 14_ sčítání a odčítání do 100 (SADA ČÍSLO 5)
1 Vyhledávání Principy vyhledávání Klasifikace klíče:  Interní klíč – je součástí prohlížených záznamů  Externí klíč – není jeho součástí, je jím např.
Získávání informací Získání informací o reálném systému
Projekt PŘEDPOVĚĎ POČASÍ. projekt PŘEDPOVĚĎ POČASÍ.
Dělení se zbytkem 6 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Dělení se zbytkem 5 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Jazyk vývojových diagramů

Nejmenší společný násobek
Únorové počítání.
Posloupnosti, řady Posloupnost je každá funkce daná nějakým předpisem, jejímž definičním oborem je množina všech přirozených čísel n=1,2,3,… Zapisujeme.
Násobení zlomků – teorie a cvičení VY_32_INOVACE_19
Název materiálu: OPAKOVÁNÍ 1.POLOLETÍ - OTÁZKY
Dělení se zbytkem 8 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Zásady pozorování a vyjednávání Soustředění – zaznamenat (podívat se) – udržet (zobrazit) v povědomí – představit si – (opakovat, pokud se nezdaří /doma/)
Deklarace Radim Štefan. 2 Použité zkratky BP – Borland Pascal De – Delphi.
IV. ELEKTRONOVÁ KONFI- GURACE a PSP
Informatika I 2. přednáška
Cvičná hodnotící prezentace Hodnocení vybraného projektu 1.
Nový trend ve slunolamech Radek Pelz, ALARIS Czech Republic s.r.o.
Projekt PŘEDPOVĚĎ POČASÍ. projekt PŘEDPOVĚĎ POČASÍ.
Algoritmy a programovací techniky
Organizace a zpracování dat I
Pojmy a interpretace.
Téma: ABSOLUTNÍ HODNOTA CELÝCH ČÍSEL 2
Název materiálu: OPAKOVÁNÍ 1.POLOLETÍ - OTÁZKY
Jazyk vývojových diagramů
Algoritmizace a programování Třídící algoritmy - 12
Přednost početních operací
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Autor: Ondřej Šimeček Verze: 1.1.3
STROMY Datová struktura sestávající z uzlů
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.
Prostorové datové struktury
© Copyright Radim Štefan
Transkript prezentace:

Vyhodnocování dotazů slajdy k LS I155 Jaroslav Pokorný

J. Pokorný 2 Časová a prostorová složitost Jako dlouho trvá dotaz? –CPU (cena je malá; snižuje se; těžko odhadnutelná) –Disk (hlavní složka ceny, # I/O operací) Kolik n-tic je třeba přenést? Jaké statistiky je třeba udržovat?

J. Pokorný 3 Statistiky Statistiky pro každou relaci: n R počet n-tic relace R V(A,R)počet prvků R[A] p R počet stránek k uložení R b R blokovací faktor Mpočet stránek volného prostoru v RAM l(A,R)počet úrovní indexového souboru pro A v R Značení: buffer R celistvý počet stránek pro R v RAM (neuvažujeme caching) … #1 #2 #3 #n R bRbR

J. Pokorný 4 Indexace B + -stromy: Pro atribut A relace R: f A,R : průměrný počet následníků ve vnitřním uzlu (~50-100) I(A,R): # úrovní indexu (~2-3) –~ log(V(A,R))/log(f A,R ) p R,A : # listových stránek Značení: A místo R.A l(A,R) p R,A

J. Pokorný 5 Metody pro výpočet selekce select * from R where A = ‘a’ Případy: A je primární klíč, A je sekundární (alternativní) klíč k A existuje index - obyčejný nebo typu CLUSTER A je hašovaný klíč Předpoklady: rovnoměrné rozložení hodnot A v R[A]  n R(A=a) = n R /V(A,R)

J. Pokorný 6 Metody pro výpočet selekce Sekvenční vyhledávání p R /*nejhorší případ*/ p R /2 /* průměrně, je-li A primární klíč*/ … #1 #2 #3 #n R bRbR

J. Pokorný 7 Metody pro výpočet selekce Binární vyhledávání, je-li R uspořádaná podle A log 2 (p R ) /*je-li A primární klíč */ log 2 (p R ) + n R(A=a) /b R /*je-li A libovolný atribut */ … #1 #2 #3 #n R bRbR

J. Pokorný 8 Metody pro výpočet selekce Vyhledávání, existuje-li pro A index l(A) + 1 /*je-li A primární klíč*/ l(A) + n R(A=a) /b R /*je-li index pro A typu CLUSTER*/ l(A) + n R(A=a) /*není-li index pro A typu CLUSTER*/ Vyhledávání, je-li A hašovaný atribut  1 přístup... … #1 #2 #3 #n R bRbR

J. Pokorný 9 Metody pro výpočet selekce select * from R where A < ‘a’ Sekvenční vyhledávání p R /* nejhorší případ*/ p R (a – min A )/(max A – min A ) /*je-li R setříděná dle A*/ Vyhledávání, existuje-li index l(A) + p R /2 /*je-li R setříděná dle A*/ l(A) + p R,A /2 + n R /2 /* je-li index pro A, A je sekundární klíč*/

J. Pokorný 10 Příklad Rezervace(č_zák, č_letu, datum, pozn) n Rezervace = b Rezervace = 20 V(č_zák, Rezervace) = 500 V(č_letu, Rezervace) = 50 f č_letu,R = 20 Dotaz: Najdi zákazníky s číslem letu = ‘77’

J. Pokorný 11 Příklad Sekvenční hledání:  cena dotazu: 500 diskových přístupů Klastrovaný index pro č_letu: cena dotazu = l(č_letu) + n R(č_letu=a) /b R l(A): 50 hodnot f A = 20  l(A)=2 Zdůvodnění: (log(50)/log(20)  2 n R(A=a) = n R /V(A,r) = 10,000/50 = 200 n-tic n R(A=a) /b R = 200/20 = 10 stránek  cena dotazu = 2+10= 12

J. Pokorný 12 Metody pro výpočet spojení Dva typy implementace: –nezávislé relace –s ukazateli (Starbrust, Winbase,…) Základní metody: –hnízděné cykly (varianty s indexováním, vyhledáváním) –setřídění-slévání –hašované spojení Předpoklady: spojovací atribut A, p R  p S, u varianty s ukazateli R  S Pz.: speciální případ - kartézský součin R(K,A,...) S(A,...) N:1

J. Pokorný 13 Hnízděné cykly - binárně naivní algoritmus for each r  R for each s  S if  (r,s) then begin u:= r [  ] s; WRITE(u) end … po stránkách menší relaci jako vnější! M=3  p R + p R p S čtení (n R n S /V(A,S))/b RS zápisů (zdůvodni !) Vylepšení: - vnitřní relace se čte ušetří se 1 čtení na začátku (konci)

J. Pokorný 14 Hnízděné cykly - binárně Varianty: M velké, pak rozdělení: M-2, 1, 1 vnější vnitřnívýsledek  p R + p S p R /(M-2) čtení R ve vnitřní paměti  p R + p S čtení s ukazateli, M=3  p R + n R čtení

J. Pokorný 15 Hnízděné cykly - binárně index na S.A (B + -strom) Předpoklady: R setříděná v R.A, S.A primární  p R + l(A,S) + p S,A + V(A,R) čtení S hašovaná dle S.A  p R + V(A,R) čtení se selekcí (pomocí vyhledávání), Př.: SELECT * FROM R,S WHERE R.A=S.A AND R.B=12 Předpoklady: R.B primární klíč (indexovaný), S.A sekundární klíč (klastr. Index, n-tice s S.A=a v jedné stránce)  l(A,S) + l(B,R) + 2 čtení

J. Pokorný 16 Hnízděné cykly - binárně spojovací index SI(A R,A S ) R(A,...) S(A,...)

J. Pokorný 17 Hnízděné cykly - více relací M‘ = M 1 + M 2 + … + M n < M R i rozděleny na l i podrelací velikostí M i, tj. l i =  p i /M i , (1  i  n) cenová funkce [Kim84] C = p 1 + [M 2 +(p 2 -M 2 )  p 1 /M 1  ]+...+[M n +(p n -M n )  p 1 /M 1 ...  p n-1 /M n-1  ]  problém hledání celočíselných M i, aby C minimální heuristika: (1) Srovnej n relací do cyklů algoritmu tak, že p 1  p 2 ...  p n ; (2) Pro R n alokuj 1 stránku, M‘ - 1 rozděl rovnoměrně; (3) (M‘ - 1)/(n-1) necelé then přiděl větší M i menším relacím;

J. Pokorný 18 Hnízděné cykly - více relací Struktura základního algoritmu (zde pro tři relace): for j:=1 to L 1 do begin přečti R 1j do buffer M1 ; for k:=1 to L 2 do begin přečti R 2k do buffer M2 ; for s:=1 to L 3 do begin přečti R 3s do buffer M3 ; vytvoř spojení buffer Mi, 1  i  3; zapiš výsledek end

J. Pokorný 19 Hnízděné cykly - více relací Př.: a) p 1 = 7, p 2 = 14, p 3 = 21, M‘ = 11  dělení M‘ = b) p 1 ...  p 5, M‘ = 16  dělení M‘ =

J. Pokorný 20 Setřídění-slévání Idea: třídění, slévání (dvoufázový algoritmus) Vhodnost: jsou-li R a S setříděné min. M = 3, 2.fáze vyžaduje p R + p S čtení potřebuje pomocný prostor pro třídění výsledek je setříděný R(...,A,...) S(…,A,...)

J. Pokorný 21 Setřídění-slévání M = 3 (s použitím externího třídění)  ~ 2p R log(p R ) + 2p S log(p S ) + p R + p S bez zápisu výsledku M   p S (dvoufázový algoritmus) (1) Vytvářejí se setříděné běhy velikosti 2M stránek (pomocí prioritní fronty) a ukládají na disk;  velikost běhu je  2  p S  pro S jich je nejvýše p S /2  p S,pro R také ne více než p S /2  p S  celkem nejvýše  p S (2) Pro každý běh se alokuje v paměti stránka a souběžně se slévá;  3(p R + p S ) bez zápisu výsledku

J. Pokorný 22 Princip prioritní fronty buffer I buffer O KONTEJNER 1.Naplní se K a buffer I n-ticemi z R. 2.Z K se vybírají n-tice u takové, že u.A  v.A,  v ve bufferu O (1) a řadí se ve vzestupném pořadí podle hodnoty A. 3.Uvolněné místo v K se zaplní novou n-ticí ze bufferu I. Je-li bufferu I = , načte se nová stránka R. Je-li buffer O plný, na vnější paměti se prodlouží daný běh. Jestliže žádná n-tice z kontejneru nevyhovuje (1), je současný stav bufferu O poslední stránkou vytvářeného běhu. Tímto způsobem lze vytvořit běhy dlouhé v průměru 2M stránek.

J. Pokorný 23 Setřídění-slévání varianta s ukazateli R se setřídí podle ukazatelů S se čte pouze jednou, nemusí být setříděna  3p R + p S bez zápisu výsledku Porovnání:  p R - p S  velké  lepší jsou hnízděné cykly  p R - p S  malé  lepší je setřídění-slévání omezující selekce  lepší pomocí vyhledávání

J. Pokorný 24 Hašovaná spojení Vhodnost: nejsou-li dostupné indexy pro R.A a S.A nemusí-li být výsledek setříděn dle A klasické hašování GRACE algoritmus jednoduché hašování rekurzivní rozdělení relací hybridní hašování

J. Pokorný 25 Spojení klasickým hašováním Předpoklad: R se vejde do M stránek M = p R *F , kde F je koeficient větší než 1 (1) Zahašuj R do vnitřní paměti; (2) Čti S sekvenčně; Hašuj s.A a přímým přístupem najdi r  R; (3) if s.A = r.A then begin u:= r * s; WRITE(u) end  p R + p S čtení

J. Pokorný 26 Spojení s rozdělováním relací Předpoklad: R se nevejde do M stránek Idea: R a S se rozdělí na disjunktní podmnožiny tak, že se spojují JEN ty korespondující. Dvoufázový algoritmus: (1) Rozděl R a S; (2) Zahašuj část R (části R) do M-2 stránek; Čti odpovídající část S; Hašuj s.A a přímým přístupem najdi n-tice r  R; Generuj výsledek;

J. Pokorný 27 Příklad: S(A) R(A) K mod 3 R 0 S R 1 S R 2 S R*S

J. Pokorný 28 GRACE algoritmus „školní“ verze Datové struktury: n-tice R a S, kapsy ukazatelů HR i, HS i, i  {0,1,…,m-1} hašovací funkce h: dom(A)  Algoritmus: for k:=1 to n R do begin i :=h(R[k].A); HR i := HR i  {k} end for k:=1 to n S do begin i :=h(S[k].A); HS i := HS i  {k} end for i:=0 to m-1 do begin POM R :=  ; POM S :=  ; foreach j  HR i do begin r:=R[j]; POM R :=POM R  {r} end; foreach j  HS i do begin s:=S[j]; POM S :=POM S  {s} end;

J. Pokorný 29 GRACE algoritmus foreach s  POM S do /* ve vnitřní paměti */ begin foreach r  POM R do begin if s.A = r.A then begin u:= r * s; WRITE(u) end  p R + p S + n R + n S čtení vhodnost: když p R /m + p S /m < M

J. Pokorný 30 GRACE s ukládáním rozdělených relací M   (p R *F) (1) Zvol h tak, že R lze rozdělit do m =  (p R *F) částí; (2) Čti R a hašuj do (výstupních) buffer i, (0  i  m-1); if buffer i je plný then WRITE(buffer i ); (3) Proveď (2) pro S; (4) for i :=0 to m-1 do begin (4.1) Čti R i a hašuj do paměti velikosti  (p R *F); (4.2) Čti s  S i a hašuj s.A. Existuje-li r  R i a s.A = r.A, generuj výsledek. end

J. Pokorný 31 GRACE s ukládáním rozdělených relací Zdůvodnění 4.1: předpoklad - R i  stejné velké p R /m = p R /  (p R *F) =  (p R /F) R i vyžaduje prostor F  (p R /F) =  (p R *F)  3(p R + p S ) I/O operací vhodnost: když p R /m + p S /m < M poznámky: S i mohou být libovolně velké. Vyžadují 1 stránku paměti; problém, když V(A,R) je malý; vhodné v situacích, když R(K,…), S(K 1,K,…); nevejde-li se R i resp. S i do M-2 stránek  rekurze tj. R i se rozdělí na R i0, R i1,...,R i(k-1) stránek;

J. Pokorný 32 Jednoduché hašování Předpoklad: p R *F > M-2, A je UNIQUE Idea: speciální případ GRACE, kdy R  R 1, R 2 Algoritmus: repeat begin zvol h; Čti R a hašuj r.A; M-2 bufferů tvoří R 1, ostatní n-tice do R 2 na disk; Čti S a hašuj s.A; if h(s.A) padne do prostoru R 1 then begin if s.A = r.A then generuj výsledek end else ulož s do S 2 na disk; R:=R 2 ; S:= S 2 end until R 2   ;

J. Pokorný 33 Hybridní hašování Idea: kombinace GRACE a jednoduchého hašování, R se dělí na části R 1, R 2,…, R k, R 0 tak, že R 0 se vejde do vnitřní paměti. Rozdělení M-2 stránek:  buffer i  =1 (1  i  k),  buffer 0  =p R0 Algoritmus: (1) Zvol h; (2) Čti R a hašuj r.A; tvoř R i (0  i  k); /*R 0 je v buffer 0 */ (3) Čti S a hašuj s.A; tvoř S i (1  i  k); if h(s.A) padne do prostoru S 0 then realizuj spojení; (4) for i:=1 to k do realizuj spojení podle GRACE;

J. Pokorný 34 Porovnání algoritmů Předpoklady: M >  p S pro setřídění-slévání M >  p R pro hašování Značení: alg1 >> alg2  alg1 je lepší než alg2

J. Pokorný 35 Dělení Df.: R a S se schématy  1 resp.  2   1 T = R S = R[  1 -  2 ] - ((R[  1 -  2 ]  S) - R)[  1 -  2 ] Př.: po setřídění -.. A B RR S B A B T A 3

J. Pokorný 36 Dělení-hašováním Idea: vytvoří se kapsy HS i pro hodnoty z S.B a do nich se ukládají hodnoty z R.A. Hodnoty z  HS i přispívají do výsledku. Algoritmus: (Předpoklad - prostor pro hašování hodnot s.B) (1) Čti S a hašuj s.B. Vytvoř prostor pro kapsy HS s.B ; foreach s.B do HS s.B :=  ; (2) for j:=1 to n R do begin r:=R[j]; if existuje kapsa pro h(r.B) then HS r.B := HS r.B  {r.A} end (3) foreach HS s.B do sort(HS s.B );/*není nutné*/ (4) Vytvoř  HS i a generuj T;

J. Pokorný 37 Další operace GROUP BY index pro A - přes index se získají skupiny setřídění podle R.A hašováním (jako u dělení) foreach a  R[A] do vytvoř kapsu + proměnná pro výpočet agregační funkce; DISTINCT také pomocí hašování