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

Samankaltaiset tiedostot
Lisätään avainarvo 6, joka mahtuu lehtitasolle:

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

D B. Tietokannan hallinta kertaus

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

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja

Liitosesimerkki. Esim R1 R2 yhteinen attribuutti C. Vaihtoehdot

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

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

Sisältö. 2. Taulukot. Yleistä. Yleistä

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Sisältö. 22. Taulukot. Yleistä. Yleistä

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

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

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

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

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

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

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

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

Kuva 7.2 vastaustaulu harjoitukseen 7.2

XQuery tietokannan kyselykielenä

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

Algoritmit 1. Luento 13 Ti Timo Männikkö

811120P Diskreetit rakenteet

Tietorakenteet ja algoritmit - syksy

Algoritmit 1. Luento 1 Ti Timo Männikkö

D B. Kyselypuut ja ekvivalenssi

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, , H.Laine

Helsingin yliopisto /TKTL Tietokannan hallinta Harri Laine 1 D B. Harvat hakemistot. Harvat hakemistot

FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: Tuloksena on taululistassa lueteltujen taulujen rivien

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto

11. Javan toistorakenteet 11.1

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2006 Tietokantaoperaatioiden toteutuksesta 3. Harri Laine 1

D B. Harvat hakemistot

jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja

Algoritmit 1. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

Algoritmi on periaatteellisella tasolla seuraava:

Lataa Sigma 1. Lataa. Lataa kirja ilmaiseksi suomalainen Sigma 1 Lataa Luettu Kuunnella E-kirja Suomi epub, Pdf, ibook, Kindle, Txt, Doc, Mobi

Rinnakkaistietokoneet luento S

HELIA 1 (15) Outi Virkki Tiedonhallinta

Kirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi

Hohde Consulting 2004

12. Javan toistorakenteet 12.1

Lataa Biologia (cd) - Pasi Tolonen. Lataa

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

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

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

HELIA 1 (14) Outi Virkki Tiedonhallinta

Contents AdsML ympäristö... 2 AdsML Testi ympäristö... 2 AdsML tuotantoympäristö... 2 AdsML käyttöliittymä... 3 Kirjautuminen...

Tietokanta (database)

Yhdiste, leikkaus, erotus ym.

Määrittelydokumentti

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

CSE-A1200 Tietokannat

Algoritmit 1. Luento 13 Ma Timo Männikkö

Kyselyn yleisrakenne:

D B. Harvat hakemistot. Harvat hakemistot

Access-kyselyt. Luetteloinnin kehittämispäivä Mia Kujala

12. Javan toistorakenteet 12.1

Fyysinen suunnittelu

Liitokset - haut useaan tauluun

SELECT-lauseen perusmuoto

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

Paikkatiedon käsittely 6. Kyselyn käsittely

ITKP102 Ohjelmointi 1 (6 op)

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

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

Vinkkejä musiikin tiedonhakuun OUTI-verkkokirjastossa

Algoritmit 2. Luento 2 Ke Timo Männikkö

KANSALLINEN MAASTOTIETOKANTA

Rinnakkaistietokoneet luento S

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

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi.

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

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

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

Käsiteanalyysi prosessina ja tarveanalyysi

Algoritmit 1. Luento 5 Ti Timo Männikkö

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Lataa Rentoutuen elinvoimaa 1 (cd) - Jarmo Liukkonen. Lataa

FYYSINEN SUUNNITTELU

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

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

Taulukkolaskenta 1 (12 pistettä)

2 Konekieli, aliohjelmat, keskeytykset

Ohjelmoinnin perusteet Y Python

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

Tietorakenteet, laskuharjoitus 10, ratkaisuja. 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

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

Esimerkki. pankkien talletus- ja lainatietokanta: Yhdiste, leikkaus, erotus ym. Leikkaus (intersect) Yhdiste (Union) Erotus (except/minus) Leikkaus

ITKP102 Ohjelmointi 1 (6 op)

Transkriptio:

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Kyselykielet, s 2006, Harjoitus 5 (7.12.2006) Tietokannassa on tietoa tavaroista ja niiden toimittajista: Supplier(sid,sname,city,address,phone,etc); [300 riviä, a 400B] Supply(sid->Supplier, pid->part, price); [20000 riviä. a 40B] Part(pid,pname,descr,etc); [2000 riviä, a 1000B] Tarkastellaan kyselyä: SELECT S.sname, P.pname FROM Supplier S, Part P, Supply Y WHERE S.sid = Y.sid AND Y.pid = P.pid AND S.city = 'Espoo' AND P.price > 1000; Taulut on toteutettu järjestämättöminä peräkkäisrakenteina. Sivuille ei lisättäessä jätetä kasvuvaraa. Kasvuvaraa ei jätetä. Sivukoko on 4KB (~4000B). Olkoon taululla Part hajauttamalla toteutettu tiheä oheishakemisto sarakkeen pid perusteella ja taululla Supply hajauttamalla toteutetut tiheät oheishakemistot sarakkeiden pid ja sid perusteella. Oletetaan että toimittajia toimii 10 paikkakunnalla ja yli 1000 rahan hintaisia osia on 1% osista). Muistitilaa on käytettävissä 200 sivun verran. Tee tarvittavat lisäoletukset. 1. a) Laadi suoraviivaisesti kyselyä vastaava optimoimaton kyselypuu.

b) Sovella heuristisia sääntöjä kyselypuun uudelleen järjestämiseksi tehokkaampaa suoritusta varten. Vaihtoehtoja 1: Vaihtoehto2: Vaihtoehto 3:

2. a) Arvioi yllä olevan kyselyn vastauksen koko Lasketaan vaihtoehdosta 1: Toimittajia (Supplier) 300 10 kaupungissa, joten Espoossa 30. Saatavuuksia 20000/300 = 67 yhtä toimittajaa kohden Espoolaisten toimittajien ja saatavuuksien liitos tuottaa 30*67 =2000 riviä Osista 1% yli 1000 rahan hintaisia, joten valinta tuottaa 20 riviä Espoolaisten toimittajienkin saatavuuksista 1% kohdistuu yli 1000 rahan tuotteisiin, joten liitos tuottaa 20 riviä Yli 1000 rahan hintaisia on 20 kpl, joten lopputulos selvästi alle 20.. b) Laadi kyselylle toteutussuunnitelma ja arvioi sen suorituskustannus (sivuhakujen määränä) Lasketaan aluksi taulujen koot sivuina: supplier 300/(4000/400) = 30 sivua supply 20000/(4000/40) = 200 sivua part 2000/(4000/1000)= 500 sivua Vaihtoehdossa 1: Valitut toimittajat vaativat 3 sivua.. Toimittajien ja saatavuuksien liitoksen tulosrivin koko 340B (näitä mahtuu sivulle n. 11) eli 2000 riviä vaatisi noin 180 sivua, mutta tilantarvetta voisi karsia projisoimalla jatkoon vain tarvittavan tiedon (pid) n.10b, jolloin tuloksen taltiointiin riittäisi 10 sivua. Tulos kuitenkin mahtuisi myös täysinä tietueina käytössä olevaan 200 sivuun. Jos Supplier&Supply liitos tehdään sisäkkäisten silmukoiden menetelmällä käyttäen ulompana Espoolaisia topimittajia riittää käydä Sypply-taulu läpi kertaalleen. Seuraavaa liitosta varten voidaan pitää edellisen tulos keskusmuistissa joten riittää käydä taulu parts kertaalleen läpi tehdä ensin valinnat ja sitten liitos. Tarvitaan 30+200+500 =730 sivun lukeminen ja tuloksen kirjoitus. Hajautusindeksin käyttö toimittajien ja saatavuuksien liitoksessa vaatii teoriassa 30*(1+67) hakua eli yli 2000 (samoja sivuja haetaan moneen kertaan). Paljonko sivuhakuja todellisuudessa tarvitaan, riippuu käytettävissä olevan muistin määrästä. Tämä on kuitenkin hitaampi ratkaisu kuin sisäkkäiset silmukat. Vaihtoehdossa 2 valinnan nostaminen osien liitoksen jälkeen mahdollistaisi hajautusindeksin käytön. Koska haettavia on kuitenkin 2000, tämä vaatii enemmän hakuja kuin sisäkkäiset silmukat. Vaihtoehdossa 3 löytyy 20 kallista osaa., eli muistitilaa tarvitaan tulokselle 5 sivua. Osien ja niiden saatavuuden liitos tuottaa 200 riviä, eli kokonaisilla tietueillakin laskettuna n 70 sivua ja vain tarpeelliseen projisoituna (name+sid) korkeintaan 4 sivua. Sisäkkäisillä silmukoilla toteutettaessa pitää lukea Supply kertaalleen. (200 sivua). Indeksiliitosta käytettäessä tarvittaisiin (20*(1+10)) =220 teoreettista hakua, eli samaa kokoluokkaa, mutta ei kyetä hyödyntämään peräkkäisyyttä. Toinen liitos hoituu sisäkkäisillä silmukoilla. Sivuhakujen määrä sisäkkäisiä silmukoita käytettäessä on sama kuin vaihtoehdossa 1, mutta muistitilan tarve on selvästi vähäisempi.

3. Tarkastellaan kyselyä SELECT S.sname, S.city, P.price FROM Supplier S, Part P, Supply Y WHERE P.pid=22645 and S.sid = Y.sid AND Y.pid = P.pid Laadi kyselylle toteutussuunnitelma ja arvio kustannuksista. Haku osanumeron perusteella voidaan tehdä indeksiä käyttäen, joten tarvitaan 1+1 sivuhakua. Liitos Supply-tauluun hakemistoliitoksena tuottaa 1*(1+10) sivuhakua. 20 rivin liittäminen Supplier-tauluun vaatisi hakemistoliitoksena 20*(1+1) < 40 sivuhakua ja sisäkkäisten silmukoiden tekniikalla 30 peräkkäisyyttä hyödyntävää hakua. Eli yhteensä vähintään 2+11+30=43 sivuhakua. 4. Tarkastellaan XML-tiedostoa osoitteessa http://www.w3schools.com/xml/cd_catalog.xml a) Hahmottele algoritmi, miten sarjallisella tapahtumapohjaisella XML-käsittelyllä selvittäisit Dolly Partonin levyjen nimet ja hinnat. Muuttuja vuorossa ilmaisee minkä tyyppinen elementti on käsittelyssä Tallenne[elementtityyppi] säilyttää elementin datan. Käynnistä lukusilmukka kunnes tiedosto käsitelty tapahtumakäsittelijät (oletetaan saatavan alku, loppu ja data ilmoituksia alku( CD ): {tyhjennä tietorakenteet vuorossa= CD } alku(muu elementti kuin CD) {vuorossa=elementin nimi} loppu( CD ). {if (tallenne[ ARTIST ]== Dolly Parton ) print(tallenne[ TITLE ],tallenne[ PRICE ]);

tyhjennä tietorakenteet;} loppu(muu kuin CD) {vuorossa=nill} data; {tallenne[vuorossa]=data_arvo} b) Hahmottele saman ongelman ratkaisu käyttäen dokumenttipuun käsittelymetodeja ja solmujen ominaisuuksia (esimerkkejä dokumenttipuun käsittelystä löytyy esim. jättämällä yllä olevasta linkistä viimeinen osa pois). doc= Load( http://www.w3schools.com/xml/cd_catalog.xml ) var x= doc.getelementsbytagname( ARTIST ) for (var i=0,i++,i>x.length) { if x[i].childelement[0].nodevalue= Dolly Parton { var p=x.parent var title=p.getelementsbytagname( title ); var price=p. getelementsbytagname( price ); output(title.childelement[0].nodevalue, price.childelement[0].nodevalue) } } 5. a) Miten Dolly Partonin levyjen nimet ja hinnat haetaan XPath:n polkulausekkeilla //CD[ARTIST= Dolly Parton ]/TITLE //CD[ARTIST= Dolly Parton ]/PRICE Jos Dolly Partonita olisi momta levyä kokoelmassa tässä ei saataisi otsaketta ja hintaa pareina. c) Ratkaise a-kohdan ongelma XQuery kielellä. let $d=doc('http://www.w3schools.com/xml/cd_catalog.xml ) for $x in $d/catalog/cd[artist= Dolly Parton ] return <SCD>{$x/TITLE}{$x/PRICE}</SCD>