Liitosesimerkki. Esim R1 R2 yhteinen attribuutti C. Vaihtoehdot

Samankaltaiset tiedostot
Liitosesimerkki Tietokannan hallinta, kevät 2006, J.Li 1

1. a) Laadi suoraviivaisesti kyselyä vastaava optimoimaton kyselypuu.

Algoritmit 1. Luento 10 Ke Timo Männikkö

Lisätään avainarvo 1, joka mahtuu lehtitasolle:

Algoritmit 1. Luento 12 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

11. Javan toistorakenteet 11.1

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

Algoritmit 2. Luento 3 Ti Timo Männikkö

Helsingin yliopisto/tktl Kyselykielet, s 2006 Tietokantaoperaatioiden toteutuksesta Harri Laine 1. Kyselyjen käsittely

Helsingin yliopisto/ tktl DO Tietokantojen perusteet, s 2000 Relaatioalgebra Harri Laine 1. Relaatioalgebra

12. Javan toistorakenteet 12.1

4 Tehokkuus ja algoritmien suunnittelu

Relaatioalgebra. Kyselyt:

Relaatioalgebra. Relaatioalgebra. Relaatioalgebra. Relaatioalgebra - erotus (set difference) Kyselyt:

Tarkennamme geneeristä painamiskorotusalgoritmia

Algoritmit 1. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Helsingin yliopisto/tktl Tietokannan hallinta, s Harri Laine 1 D B. Kyselyjen käsittely ja optimointi

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))

joukko operaatioita, joilla relaatioista voidaan muodostaa uusia relaatioita joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus

8. Lajittelu, joukot ja valinta

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Kyselyt: Lähtökohtana joukko lukuja Laskukaava kertoo miten luvuista lasketaan tulos soveltamalla laskentaoperaatioita

D B. Kyselyjen käsittely ja optimointi. Kyselyjen käsittely ja optimointi

Kyselyiden käsittely. R & G Chapter Tietokannan hallinta, kevät 2006, Jan 1

12. Javan toistorakenteet 12.1

Algoritmit 1. Luento 11 Ti Timo Männikkö

Algoritmi on periaatteellisella tasolla seuraava:

Sisällys. 16. Lohkot. Lohkot. Lohkot

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto

Hajautusrakenteet. R&G Chapter Tietokannan hallinta, kevät 2006, Jan 1

Hajautusrakenteet. Hajautukseen perustuvat tiedostorakenteet. Hajautukseen perustuvat tiedostorakenteet. Hajautukseen perustuvat tiedostorakenteet

811312A Tietorakenteet ja algoritmit V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit

Helsingin yliopisto/tktl Kyselykielet, s 2006 Optimointi Harri Laine 1. Kyselyn optimointi. Kyselyn optimointi

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Algoritmit 2. Luento 7 Ti Timo Männikkö

Ohjausrakenteet. Valinta:

D B. Kyselyjen käsittely ja optimointi. Kyselyn käsittelyn vaiheet:

Algoritmit 1. Luento 13 Ti Timo Männikkö

Dynaaminen ohjelmointi ja vaikutuskaaviot

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

HELIA 1 (15) Outi Virkki Tiedonhallinta

Algoritmit 2. Luento 8 To Timo Männikkö

A TIETORAKENTEET JA ALGORITMIT

Helsingin yliopisto/ tktl D Tietokantojen perusteet, s 2000 Relaatioalgebra. Harri Laine 1. Relaatioalgebra.

Algoritmit 1. Luento 9 Ti Timo Männikkö

Sisällys. 15. Lohkot. Lohkot. Lohkot

Helsingin yliopisto/tktl Kyselykielet, s 2006 Tietokantaoperaatioiden toteutuksesta Harri Laine 1. Tiedostorakenteet.

Algoritmit 2. Luento 4 Ke Timo Männikkö

lähtokohta: kahden O(h) korkuisen keon yhdistäminen uudella juurella vie O(h) operaatiota vrt. RemoveMinElem() keossa

9 Erilaisia tapoja järjestää

4.3. Matemaattinen induktio

Ohjelmoinnin perusteet Y Python

Tiedostorakenteet. R&G Chapter Tietokannan hallinta, kevät 2006, Jan 1

Yksitasoisia talletusrakenteita käytetään lähinnä datatietueiden talletukseen

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut

Algoritmit 2. Luento 4 To Timo Männikkö

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Algoritmit 1. Demot Timo Männikkö

811312A Tietorakenteet ja algoritmit, VI Algoritmien suunnitteluparadigmoja

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla:

1 Erilaisia tapoja järjestää

Luento 5. Timo Savola. 28. huhtikuuta 2006

Käsitellyt hakemistot (hajautus, ISAM): hakemisto-osa on staattinen eli ei muutu muuten kuin uudelleenorganisoinnissa.

Algoritmit 1. Luento 13 Ma Timo Männikkö

Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet:

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Algoritmit 2. Luento 2 To Timo Männikkö

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

811120P Diskreetit rakenteet

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

Helsingin yliopisto/tktl Tietokannan hallinta kevät Harri Laine 1 D B. Yksitasoiset talletusrakenteet

Algoritmit 1. Luento 14 Ke Timo Männikkö

Luento 2: Tiedostot ja tiedon varastointi

D B. Tietokannan hallinta kertaus

Algoritmit 1. Luento 3 Ti Timo Männikkö

Java-kielen perusteita

D B. Harvat hakemistot. Harvat hakemistot

Anna Kuikka Pyöräkatu 9 B Kuopio GSM: Opiskelijanro: 60219K. Prioriteettijonot

Algoritmit 2. Luento 11 Ti Timo Männikkö

Ohjelmoinnin peruskurssi Y1

Algoritmit 2. Luento 14 Ke Timo Männikkö

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Algoritmit 2. Demot Timo Männikkö

1.4 Funktioiden kertaluokat

4. Kyselyjen käsittely ja optimointi

Numeeriset menetelmät

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Algoritmit 2. Luento 13 Ti Timo Männikkö

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003

Ohjelmoinnin perusteet Y Python

Transkriptio:

Esim yhteinen attribuutti C Liitosesimerkki T() = 10,000 riviä T() = 5,000 riviä S() = S() = 1/10 lohkoa Puskuritilaa = 101 lohkoa 1 2 Vaihtoehdot Sisäkkäiset silmukat Liitosjärjestys:, Liitosalgoritmit: Sisäkkäiset silmukat Sort-merge liitos Hakemistoliitos Hajautusliitos for each r do for each s do if r.c = s.c then output {r,s} pair 3 4 1

Sort-merge liitos (1) Jos tai ei ole lajiteltu, lajittele se (2) i 1; j 1; While (i T()) (j T()) do if { i }.C = { j }.C then outputtuples else if { i }.C > { j }.C then j j+1 else if { i }.C < { j }.C then i i+1 Procedure Output-Tuples While ({ i }.C = { j }.C) (i T()) do [jj j; while ({ i }.C = { jj }.C) (jj T()) do [output pair { i }, { jj }; i i+1 ] jj jj+1 ] 5 6 Esimerkki i {i}.c {j}.c j 1 10 5 1 2 20 20 2 3 20 20 3 4 30 30 4 5 40 30 5 50 6 52 7 Hakemistoliitos For each r do [ X index (, C, r.c) for each s X do output {r,s} pair] Huom: X index(rel, attr, value) thenx = set of rel tuples with attr = value Oletus.C hakemistossa 7 8 2

Hajautusliitos Hajautusfunktio h, arvoalue 0 k Solut : G0, G1, Gk Solut : H0, H1, Hk Algoritmi (1) Hajauta tietueet soluihin G (2) Hajauta tietueet soluihin H (3) For i = 0 to k do vertaa tietueita soluissa Gi, Hi Esimerkkihajautus Solut 2 5 Parilliset 4 4 3 12 Parittomat 5 3 8 13 9 8 11 14 2 4 8 4 12 8 14 3 5 9 5 3 13 11 9 10 Esim 1(a): sisäkkäiset silmukat Relaatiot eivät ole peräkkäisiä T() = 10,000 T() = 5,000 S() = S() =1/10 lohkoa Muistia=101 lohkoa Voidaanko tehdä paremmin? Käytetään muistia (1) Luetaan 100 lohkoa R:tä (2) Luetaan kokonaan (1 lohko) + liitos (3) Toistetaan kunnes valmista Kustannus: jokaiselle :n tietueelle [lue tietue + lue ] Yhteensä =10,000 [1+5000]=50,010,000 I/O:ta 11 12 3

Kustannus: jokaiselle lohkolle Lue lohkot: 1000 IOs Lue : 5000 IOs 6000 Voidaanko parantaa? Vaihdetaan järjestys: Yht = 5000 x (1000 + 10,000) = 1000 Yht = 10,000 x 6000 = 60,000 IOs 1,000 5 x 11,000 = 55,000 IOs 13 14 Esim 1(b): sisäkkäiset silmukat Relaatiot peräkkäisiä Kustannus jokaiselle palalle: Lue lohkot: 100 IOs Lue : 1000 IOs 1,100 Yhteensä= 5 palaa x 1,100 = 5,500 IOs Esim 1(c): Lomitusliitos (Merge Join) Molemmat, järjestetty C:n mukaan ; relaatiot peräkkäisiä Muisti.... Kustannus: Lue + Lue = 1000 + 500 = 1,500 IOs 15 16 4

Esim 1(d): Sort-Merge liitos, eivät järjestettyjä, mutta peräkkäisiä --> Lajitellaan, ensin. Kuinka? Merge Sort (i) Jokaiselle 100 lohkon palalle R:ää - Lue lohkot - Lajittelele muistissa - Kirjoita levylle Muisti lajitellut palat 17 18 (ii) Lue kaikki palat + liitä + kirjoita Lajiteltu Muisti Lajiteltu pala Kustannus: Lajittelu Jokainen tietue luetaan, kirjoitetaan, luetaan, kirjoitetaan siis lajittelukustannus: 4 x 1,000 = 4,000 lajittelukustannus: 4 x 500 = 2,000 19 20 5

Esim 1(d): Sort-Merge liitos jatkoa Oletetaan = 10,000 lohkoa peräkkäin = 5,000 lohkoa, ei järjestetty Kokonaiskustannus = järjestys + liitos = 6,000 + 1,500 = 7,500 IOs Silmukat: 5000 x (100+10,000) = 50 x 10,100 100 = 505,000 IOs Sort-Merge: 5(10,000+5,000) = 75,000 IOs Mutta: sisäkkäiset silmukat = 5,500 ei kannata siis! Sort-Merge parempi! 21 22 Esim 1(e): Hakemistoliitos Oletetaan.C hakemisto; 2 tasoa Oletetaan peräkkäin, järjestämätön Oletetaan.C hakemisto mahtuu muistiin Kustannus: Lukeminen: 500 IOs jokaiselle tietueelle: - läpikäy hakemisto - ilmaista - jos löytyy, lue tietue: 1 IO 23 24 6

Kuinka monta yhteistä tietuetta? Kuinka monta yhteistä arvoa? (a) Olkoon.C avain ja.c viiteavain, tällöin = 1 (b) Olkoon V(,C) = 5000, T() = 10,000 tasaisen jakauman oletuksella keskimäärin = 10,000/5,000 = 2 ( V(R,C) = C attribuutin arvojen lkm R:ssä) (c) Olkoon DOM(, C)=1,000,000 T() = 10,000 tällä oletuksella yhteisiä = 10,000 = 1 1,000,000 100 ( DOM(R,C) = C:n arvoalue R:ssä ) 25 26 Hakemistoliitoksen kokonaiskustannus (a) Yhteensä = 500+5000(1)1 = 5,500 (b) Yhteensä = 500+5000(2)1 = 10,500 (c) Yhteensä = 500+5000(1/100)1=550 Entä jos hakemisto ei mahdu muistiin? Esim: Olkoon.C hakemiston koko 201 lohkoa Pidä juuri + 99 lehtitason solmua muistissa Jokaisen läpikäynnin odotettu kustannus E = (0) 99 + (1) 101 0.5 200 200 27 28 7

Kokonaiskustannus Eli tähänmennessä tiedetään että = 500+5000 [läpikäynti + tietueen luku] = 500+5000 [0.5+2] tasainen jakauma oletuksena = 500+12,500 = 13,000 (tapaus b) ei peräkkäin Sisäkkäin 55,000 (paras) Lomitusliitos Sort-Merge liitos.c hakemisto.c hakemisto Tapaus (c): = 500+5000[0.5 1 + (1/100) 1] = 500+2500+50 = 3050 IOs peräkkäin Sisäkkäin 5500 Lomitusliitos 1500 Sort-Merge liitos 7500 4500.C hakemisto 5500 3050 550.C hakemisto 29 30 Esim 1(f):, peräkkäisiä, järjestämättömi Käytetään 100 solua Lue, hajauta, + kirjoita solut Hajautusliitos 100 -> Samoin -> Lue yksi solu; rakenna solutaulukko -> Lue vastaavat solut + hajauta + tutki muisti 10 lohkoa Toista kaikille soluille 31 32 8

Kustannus: Soluittain: Lue + kirjoita Lue + kirjoita Liitos: Lue, Yhteensä = 3 x [1000+500] = 4500 Yhteenveto Sisäkkäiset silmukat menetelmä sopii pienille relaatioille (verrattuna keskusmuistiin). Hajautusliitos yleensä paras yhtäsuuruusliitokseen, missä relaatiot eivät ole järjestetty eikä hakemistoja ole. Sort-Mege on hyvä jos ehtona ei yhtäsuuruus (esim,.c >.C). Jos relaatiot jo järjestetty, käytä lomitusliitosta. Jos hakemistoja on, ovat yleensä hyödyllisiä (riippuu siitä kuinka rajaava liitosehto on). 33 34 9