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

Samankaltaiset tiedostot
Liitosesimerkki. Esim R1 R2 yhteinen attribuutti C. Vaihtoehdot

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

Algoritmit 1. Luento 10 Ke Timo Männikkö

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

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

Algoritmit 1. Luento 12 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ke Timo Männikkö

Relaatioalgebra. Kyselyt:

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

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

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

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

4 Tehokkuus ja algoritmien suunnittelu

11. Javan toistorakenteet 11.1

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

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

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

12. Javan toistorakenteet 12.1

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

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

Algoritmit 1. Luento 11 Ti Timo Männikkö

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

Tarkennamme geneeristä painamiskorotusalgoritmia

Dynaaminen ohjelmointi ja vaikutuskaaviot

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

Algoritmit 1. Luento 5 Ti Timo Männikkö

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

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

4.3. Matemaattinen induktio

8. Lajittelu, joukot ja valinta

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

12. Javan toistorakenteet 12.1

Algoritmit 2. Luento 8 To Timo Männikkö

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

Algoritmi on periaatteellisella tasolla seuraava:

HELIA 1 (15) Outi Virkki Tiedonhallinta

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)

Algoritmit 1. Luento 13 Ma Timo Männikkö

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

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

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

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

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

Ohjausrakenteet. Valinta:

Algoritmit 1. Luento 13 Ti Timo Männikkö

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

Algoritmit 1. Luento 9 Ti Timo Männikkö

A TIETORAKENTEET JA ALGORITMIT

Sisällys. 15. Lohkot. Lohkot. Lohkot

9 Erilaisia tapoja järjestää

Algoritmit 2. Luento 4 Ke Timo Männikkö

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

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

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

Relaation ominaisuuksia. Ominaisuuksia koskevia lauseita Sulkeumat. Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,

Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,

Ohjelmoinnin perusteet Y Python

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

Algoritmit 1. Luento 3 Ti Timo Männikkö

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

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

Luento 2: Tiedostot ja tiedon varastointi

Algoritmit 2. Luento 4 To Timo Männikkö

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ää

SQL - STRUCTURED QUERY LANGUAGE

Luento 5. Timo Savola. 28. huhtikuuta 2006

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

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

Tietorakenteet, laskuharjoitus 7, ratkaisuja

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

1 + b t (i, j). Olkoon b t (i, j) todennäköisyys, että B t (i, j) = 1. Siis operaation access(j) odotusarvoinen kustannus ajanhetkellä t olisi.

Algoritmit 2. Luento 2 To Timo Männikkö

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja

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

811120P Diskreetit rakenteet

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

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

Algoritmit 1. Luento 14 Ke Timo Männikkö

D B. Tietokannan hallinta kertaus

Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus.

(1) refleksiivinen, (2) symmetrinen ja (3) transitiivinen.

Java-kielen perusteita

D B. Harvat hakemistot. Harvat hakemistot

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Algoritmit 2. Luento 11 Ti Timo Männikkö

6.4. Järjestyssuhteet

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

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Ohjelmoinnin peruskurssi Y1

1.4 Funktioiden kertaluokat

Algoritmit 2. Luento 14 Ke Timo Männikkö

Numeeriset menetelmät

Transkriptio:

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

Esim R1 R2 yhteinen attribuutti C T(R1) = 10,000 riviä T(R2) = 5,000 riviä S(R1) = S(R2) = 1/10 lohkoa Puskuritilaa = 101 lohkoa 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 2

Vaihtoehdot Liitosjärjestys: R1 R2, R2 R1 Liitosalgoritmit: Sisäkkäiset silmukat Sort merge liitos Hakemistoliitos Hajautusliitos 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 3

Sisäkkäiset silmukat for each r R1 do for each s R2 do if r.c = s.c then output {r,s} pair 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 4

Sort merge liitos (1) Jos R1 tai R2 ei ole lajiteltu, lajittele se (2) i 1; j 1; While (i T(R1)) (j T(R2)) do if R1{ i }.C = R2{ j }.C then outputtuples else if R1{ i }.C > R2{ j }.C then j j+1 else if R1{ i }.C < R2{ j }.C then i i+1 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 5

Procedure Output Tuples While (R1{ i }.C = R2{ j }.C) (i T(R1)) do [jj j; while (R1{ i }.C = R2{ jj }.C) (jj T(R2)) do [output pair R1{ i }, R2{ jj }; jj jj+1 ] i i+1 ] 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 6

Esimerkki i R1{i}.C R2{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 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 7

Hakemistoliitos For each r R1 do [ X index (R2, C, r.c) Oletus R2.C hakemistossa for each s X do output {r,s} pair] Huom: X index(rel, attr, value) then X = set of rel tuples with attr = value 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 8

Hajautusliitos Hajautusfunktio h, arvoalue 0 k Solut R1: G0, G1,... Gk Solut R2: H0, H1,... Hk Algoritmi (1) Hajauta R1 tietueet soluihin G (2) Hajauta R2 tietueet soluihin H (3) For i = 0 to k do vertaa tietueita soluissa Gi, Hi 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 9

Esimerkkihajautus R1 R2 Solut 2 5 Parilliset 4 4 R1 R2 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 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 10

Esim 1(a): sisäkkäiset silmukat R1 R2 Relaatiot eivät ole peräkkäisiä T(R1) = 10,000 T(R2) = 5,000 S(R1) = S(R2) =1/10 lohkoa Muistia=101 lohkoa Kustannus: jokaiselle R1:n tietueelle [lue tietue + lue R2] Yhteensä =10,000 [1+5000]=50,010,000 I/O:ta 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 11

Voidaanko tehdä paremmin? Käytetään muistia (1) Luetaan 100 lohkoa R:tä (2) Luetaan kokonaan R2 (1 lohko) + liitos (3) Toistetaan kunnes valmista 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 12

Kustannus: jokaiselle R1 lohkolle Lue lohkot: 1000 IOs Lue R2: 5000 IOs 6000 Yht = 10,000 x 6000 = 60,000 IOs 1,000 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 13

Voidaanko parantaa? Vaihdetaan järjestys: R2 R1 Yht = 5000 x (1000 + 10,000) = 1000 5 x 11,000 = 55,000 IOs 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 14

Esim 1(b): sisäkkäiset silmukat R2 R1 Relaatiot peräkkäisiä Kustannus jokaiselle R2 palalle: Lue lohkot: 100 IOs Lue R1: 1000 IOs 1,100 Yhteensä= 5 palaa x 1,100 = 5,500 IOs 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 15

Esim 1(c): Lomitusliitos (Merge Join) Molemmat R1, R2 järjestetty C:n mukaan ; relaatiot peräkkäisiä Muisti R1.. R1 R2.. R2 Kustannus: Lue R1 + Lue R2 = 1000 + 500 = 1,500 IOs 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 16

Esim 1(d): Sort Merge liitos R1, R2 eivät järjestettyjä, mutta peräkkäisiä > Lajitellaan R1, R2 ensin. Kuinka? 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 17

Merge Sort (i) Jokaiselle 100 lohkon palalle R:ää R1 R2 Lue lohkot Lajittelele muistissa Kirjoita levylle Muisti... lajitellut palat 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 18

(ii) Lue kaikki palat + liitä + kirjoita Lajiteltu Muisti Lajiteltu pala...... 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 19

Kustannus: Lajittelu Jokainen tietue luetaan, kirjoitetaan, luetaan, kirjoitetaan siis... R1 lajittelukustannus: 4 x 1,000 = 4,000 R2 lajittelukustannus: 4 x 500 = 2,000 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 20

Esim 1(d): Sort Merge liitos jatkoa Kokonaiskustannus = järjestys + liitos = 6,000 + 1,500 = 7,500 IOs Mutta: sisäkkäiset silmukat = 5,500 ei kannata siis! 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 21

Oletetaan R1 = 10,000 lohkoa peräkkäin R2 = 5,000 lohkoa, ei järjestetty Silmukat: 5000 x (100+10,000) = 50 x 10,100 100 = 505,000 IOs Sort Merge: 5(10,000+5,000) = 75,000 IOs Sort Merge parempi! 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 22

Esim 1(e): Hakemistoliitos Oletetaan R1.C hakemisto; 2 tasoa Oletetaan R2 peräkkäin, järjestämätön Oletetaan R1.C hakemisto mahtuu muistiin 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 23

Kustannus: Lukeminen: 500 IOs jokaiselle R2 tietueelle: läpikäy hakemisto ilmaista jos löytyy, lue R1 tietue: 1 IO 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 24

Kuinka monta yhteistä tietuetta? (a) Olkoon R1.C avain ja R2.C viiteavain, tällöin = 1 (b) Olkoon V(R1,C) = 5000, T(R1) = 10,000 tasaisen jakauman oletuksella keskimäärin = 10,000/5,000 = 2 ( V(R,C) = C attribuutin arvojen lkm R:ssä) 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 25

Kuinka monta yhteistä arvoa? (c) Olkoon DOM(R1, C)=1,000,000 T(R1) = 10,000 tällä oletuksella yhteisiä = 10,000 = 1 1,000,000 100 ( DOM(R,C) = C:n arvoalue R:ssä ) 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 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 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 27

Entä jos hakemisto ei mahdu muistiin? Esim: Olkoon R1.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 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 28

Kokonaiskustannus = 500+5000 [läpikäynti + tietueen luku] = 500+5000 [0.5+2] tasainen jakauma oletuksena = 500+12,500 = 13,000 (tapaus b) Tapaus (c): = 500+5000[0.5 1 + (1/100) 1] = 500+2500+50 = 3050 IOs 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 29

Eli tähänmennessä tiedetään että ei peräkkäin peräkkäin Sisäkkäin R2 R1 55,000 (paras) Lomitusliitos Sort Merge liitos R1.C hakemisto R2.C hakemisto Sisäkkäin R2 R1 5500 Lomitusliitos 1500 Sort Merge liitos 7500 4500 R1.C hakemisto 5500 3050 550 R2.C hakemisto 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 30

Esim 1(f): Hajautusliitos R1, R2 peräkkäisiä, järjestämättömi Käytetään 100 solua Lue R1, hajauta, + kirjoita solut R1...... 100 10 lohkoa 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 31

> Samoin R2 > Lue yksi R1 solu; rakenna solutaulukko > Lue vastaavat R2 solut + hajauta + tutki R2 R1 R1...... muisti Toista kaikille soluille 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 32

Kustannus: Soluittain: Lue R1 + kirjoita Lue R2 + kirjoita Liitos: Lue R1, R2 Yhteensä = 3 x [1000+500] = 4500 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 33

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, R1.C > R2.C). Jos relaatiot jo järjestetty, käytä lomitusliitosta. Jos hakemistoja on, ovat yleensä hyödyllisiä (riippuu siitä kuinka rajaava liitosehto on). 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 34