Tiedostorakenteet. Tiedostorakenteet. Tiedostorakenteet. Tiedostorakenteet

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

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

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

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

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja

D B. Harvat hakemistot. Harvat hakemistot

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

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

D B. Harvat hakemistot

Hakemistotyypeistä. Hakemistorakenteet. Hakemiston toteutuksesta. Hakemiston toteutuksesta

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

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

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

D B. Tietokannan hallinta kertaus

Algoritmit 1. Luento 5 Ti Timo Männikkö

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

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

Tietorakenteet, laskuharjoitus 7, ratkaisuja

D B. Levykön rakenne. pyöriviä levyjä ura. lohko. Hakuvarsi. sektori. luku-/kirjoituspää

D B. B+ -puun tasapainotus poistossa. B+ -puun tasapainotus poistossa. Poistot. B+ -puun tasapainotus poistossa. B+ -puun tasapainotus poistossa

D B. Tiedostojen käsittely

Algoritmit 2. Luento 5 Ti Timo Männikkö

D B. Levytiedostojen käsittely. Levytiedostojen käsittely

3. Tietokannan hakemistorakenteet

3. Tietokannan hakemistorakenteet

Algoritmit 2. Luento 4 Ke Timo Männikkö

Algoritmit 2. Luento 6 Ke Timo Männikkö

Luento 2: Tiedostot ja tiedon varastointi

Algoritmit 2. Luento 4 To Timo Männikkö

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

58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen)

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

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

HELIA 1 (15) Outi Virkki Tiedonhallinta

B-puu. 3.3 Dynaamiset hakemistorakenteet

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.

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

Algoritmit 2. Luento 3 Ti Timo Männikkö

2. Tietokannan tallennusrakenteet

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

2. Tietokannan tallennusrakenteet

Algoritmit 1. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

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

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

Ohjelmoinnin perusteet Y Python

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

Algoritmit 2. Luento 6 To Timo Männikkö

Tarkennamme geneeristä painamiskorotusalgoritmia

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 7 Ti Timo Männikkö

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

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

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

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

4 Tehokkuus ja algoritmien suunnittelu

Tietorakenteet ja algoritmit - syksy

Fyysinen suunnittelu

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

Pikalajittelu: valitaan ns. pivot-alkio esim. pivot = oikeanpuoleisin

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

Tietokanta (database)

HELIA 1 (11) Outi Virkki Tiedonhallinta

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

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

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

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

HAAGA-HELIA Heti-09 1 (17) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Suorituskyky

Liitosesimerkki. Esim R1 R2 yhteinen attribuutti C. Vaihtoehdot

Algoritmit 2. Luento 2 Ke Timo Männikkö

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

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

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

PALKKA-AINEISTON SIIRTOTIEDOSTO

Tietokantakurssit / TKTL

Tiedon talletuspaikkoja. Levymuisti. Vaihtoehtoisia talletusrakenteita. Tietokantojen säilytys. R&G Chapter 8 & 9. Useita vaihtoehtoja:

FYYSINEN SUUNNITTELU

Tietokantojen suunnittelu, relaatiokantojen perusteita

Ohjelmoinnin perusteet Y Python

17 BUDJETOINTI. Asiakaskohtainen Budjetti Ylläpito-ohjelma. Dafo Versio 10 BUDJETOINTI. Käyttöohje. BudgCust Yleistä

Algoritmit 1. Luento 12 Ti Timo Männikkö

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Algoritmit 1. Luento 10 Ke Timo Männikkö

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1

Ohjelmoinnin perusteet Y Python

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

TIETOJEN TUONTI TIETOKANNASTA + PIVOT-TAULUKON JA OLAP-KUUTION TEKO

Jouni Huotari OLAP-ohjetekstit kopioitu Microsoftin ohjatun OLAP-kuution teko-ohjeesta. Esimerkin kuvaus ja OLAP-määritelmä

Tiedonhallintajärjestelmän rakenne ja Suorituskyky

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

B. 2 E. en tiedä C ovat luonnollisia lukuja?

S: siirtää listan ensimmäisen luvun viimeiseksi V: vaihtaa keskenään listan kaksi ensimmäistä lukua

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Transkriptio:

R&G Chapter 9 Tiedostojen tehokkuutta yhtä kyselyä kohti arvioidaan usein tarvittavien levyhakujen määrällä. kuten levykäsittelyn yhteydessä todettiin levyhakuja on kahden tyyppisiä: satunnaishakuja ja peräkkäishakuja 1 2 Kokonaistehokkuuteen vaikuttaa myös puskureiden määrä oikean levyhaun tarpeen todennäköisyys vähenee puskureiden määrän kasvaessa. Myös levyjen ominaisuudet ja verkkoyhteyksien nopeus vaikuttavat kokonaistehokkuuteen. Levyhakujen määrä on yksinkertainen ja selkeä tehokkuusmitta: ei riipu laitteistosta riippuu tiedostorakenteesta arvioinnissa voi käyttää keskiarvoja, maksimia, jne. vrt. tietorakenteiden analyysi 3 4 1

Tiedostorakenteen tasolla vaikuttavia tekijöitä ovat mm. tietueiden järjestys tietueiden sijainti suhteessa toisiinsa miten tietueita kytketään tiedoston sisällä tiedostojen välillä käytetäänkö suoria osoitepohjaisia kytkentöjä vaiko relaatiokantojen avainperustaisia epäsuoria kytkentöjä tarjoavat tiedostojen käsittelyyn varsinaisten datatietueiden sijoittelun lisäksi erilaisia apurakenteita (indeksejä), joilla pyritään nopeuttamaan käsittelyä. Relaatiotietokantojen avainperusteiset kytkennät vaativat apurakenteita toimiakseen tehokkaasti. Apurakenteet vaativat levytilaa, puskuritilaa, omia ylläpitotoimia lisäysten ja muutosten yhteydessä. 5 6 kannan kokonaistehokkuuteen vaikuttaa myös erilaisten tietokantaoperaatioiden osuus ja jakautuma kokonaiskuormassa. paljonko on tietyn tyyppisiä kyselyjä, milloin paljonko on lisäyksiä, miten ne jakautuvat Operaatioiden tarpeet voivat olla ristiriitaisia. Kuorma ei välttämättä pysy samanlaisena vaan muuttuu ajan myötä. Järjestämättömässä peräkkäisrakenteessa eli kasassa (heap) tietueet sijoitetaan peräkkäin tiiviisti tiedoston sivuille lisäysjärjestyksessä - uusi tietue lisätään aina tiedoston loppuun. Rakenne on useissa tkhj:ssä taulujen toteutuksen perusrakenne. Rakenne soveltuu hyvin peräkkäiskäsittelyyn, jossa tietueiden järjestyksellä ei ole merkitystä. 7 8 2

Taulun perustaminen create table lauseella luo tyhjän kasan Yleensä tämä tarkoittaa yhtenäisen sivualueen varaamista tiedostolle, alueen koko voi olla järjestelmän päättämä tai siihen voi vaikuttaa esim. järjestelmäparametreilla tai create table lauseella. Oraclen käyttää tästä alkuvarauksesta nimitystä initial extent ja sen koon voi määritellä taulukohtaisesti. jos tiedosto kasvaa niin suureksi, ettei se enää mahdu alkuperäiselle sivualueelle otetaan käyttöön jatkoalueita. Tyypillisesti alueet kytketään ketjurakenteeksi. Lisäys kasarakenteessa on nopeaa. Haetaan tiedoston viimeinen sivu ja lisätään tietue sinne. Ellei tietue mahdu sivulle otetaan käyttöön seuraava sivu. Korkeintaan 2 levyhakua (oletetaan kuvaajan olevan muistissa). 9 10 Jos tiedostossa on N sivua, vaatii tietueen haku avaimen perusteella keskimäärin N/2 levyhakua. Yleensä kasarakennetta ei käytetäkään yksinään, vaan sen päälle rakennetaan tiheitä indeksejä tehostamaan hakuja. esimerkiksi Oraclessa avaimen määrittely luo automaattisesti avainperustaisen indeksin. Tietueen poisto edellyttää: 1. Tietueen hakua rakenteesta. 2. Tietueen poistamista haetulta sivulta, joko merkitsemällä tietue poistetuksi tai tiivistämällä sivu. 3. Muuttuneen sivun vientiä takaisin levylle. Poistojen seurauksena sivuille tulee tyhjää tilaa ja tiedoston täyttösuhde pienenee. 11 12 3

Jos poisto tyhjentää koko sivun, voidaan sivu liittää vapaiden sivujen ketjuun uudelleenkäytettäväksi. Vaihtuvapituisten tietueiden muutokset voivat kasvattaa tietueen pituutta. Tietueiden pituuden kasvuun voidaan varautua jättämällä sivuille kasvuvaraa eli sivuja ei täytetä heti aluksi tiiviisti vaan vaikkapa vain 70 prosenttisesti. Voi käydä myös niin, että kasvanut tietue ei enää mahdu sivulle. Tällöin käytetään tyypillisesti ylivuotosivuja tietueiden ylivuotaneiden osien tallennukseen. Tietueita ei siirretä kokonaan toiselle sivulle, koska silloin jouduttaisiin ylläpitämään indeksejä. Ylivuotosivut ovat huonoja peräkkäiskäsittelyn kannalta. Poistot ja muutokset degeneroivat rakennetta rakenteesta tulee harva ja epäyhtenäinen rakenne voidaan korjata ajoittaisin uudelleenorganisoinnein uudelleenorganisoinnissa luodaan uusi kasarakenne ja korvataan sillä vanha kaikki vanhan rakenteen varaan rakennetut indeksit on rakennettava uudelleen. 13 14 Kasarakenne listana Kasarakenne hakemistona Otsikko sivu Sivu 1 Sivu 1 Sivu 2 Sivu 2 Sivu N Sivu K Käytetyt sivut Vapaat sivut Otsikko sivu sivu 1 sivu 2 hakemisto sivu N 15 16 4

Tarkastellaan taulua employee. Oletetaan että taulussa on 8000 riviä (ei ihan pikkufirma). Tehdään kysely select * from employee where ssn= 1234567 Joudutaan läpikäymään koko tiedosto ellei tiedetä, että ssn on avain ja keskimäärin puolet jos se on määritelty avaimeksi ja löytyy (ensimmäinen osuma on ainoa) siis keskimäärin 4000 riviä. Olkoon levyn pyörimisnopeus on 100 kierrosta sekunnissa, lohkokoko 4K tavua, uralla 50 lohkoa, levypintoja 12 sekä täyttösuhde 80%. Yhden Employee-tietueen keskipituus voisi olla 300 tavua. Lohkossa olisi tällöin keskimäärin 10 tietuetta, uralla 500 ja sylinterillä 6000, eli tarvitaan 2 sylinteriä ja yhteensä 16 kierrosta koko tiedoston siirtämiseen eli maksimissaan 16*10 ms=160 ms +kohdistusaika +pyörähdysviive (yht. 10ms), eli noin 170 ms ja avainpohjaisessa haussa keskimäärin puolet tästä eli n 85 ms (olettaen, että tietue löytyy). 17 18 Sequential file Tietueet sijaitsevat tiedostossa jonkin kentän (esimerkiksi työntekijänumeron) mukaan järjestettyinä. Tietueiden järjestys on jokin tyypillisesti käsittelyssä usein tarvittava järjestys Rakenne tukee tietueiden käsittelyä peräkkäin halutussa järjestyksessä Lisäykset pitää järjestetyssä peräkkäisrakenteessa sijoittaa oikealle kohdalleen järjestyksessä. 10 20 30 40 50 60 70 80 90 100 45 Pahimmassa tapauksessa pitäisi siirtää koko tiedoston loppuosa uusiin paikkoihin. Yleensä jätetään lisäyksille tilaa sivuille täyttösuhde jää alhaiseksi. Jos sivulle tulee lisäys, joka ei mahdu sinne, otetaan käyttöön ylivuotosivu, joka linkitetään sivuun. Lisäysten kasautuessa ylivuotoketjusta voi tulla pitkä. 19 20 5

Poistot ja muutokset tehdään kuten kasarakenteeseen. Tietueen haku tiedostosta järjestysavaimen perusteella vaatii tiedostoa läpilukemalla saman verran levyhakuja kuin kasarakenteessa, jos tietue löytyy eli N/2. Löytymättömyys voidaan todeta keskimäärin samalla levyhakujen määrällä. Tässä suhteessa rakenne on parempi kuin kasa. tukee myös järjestysavaimeen perustuvia arvovälihakuja sekä erisuuruusvertailuja!=,<,<= mahdollistaa myös binäärihaun käytön. Periaate: Etsi tietuetta tiedoston keskimmäiseltä (k=roof(n/2)) sivulta Jos ei löytynyt ja avain<sivun pienin avain, jatka samalla periaatteella sivuilta 1.. k-1. Jos ei löytynyt ja avain>sivun suurin avain, jatka samalla periaatteella sivuilta k+1.. N. Haku päättyy kun tietue löytyy tai tietuetta ei löydy sivulta mutta avain sijoittuu sivun pienimmän ja suurimman avaimen väliin (ei ole tiedostossa) tai etsintää pitäisi jatkaa tyhjästä sivujoukosta 21 22 Binäärihaussa tarvitaan enintään roof(log 2 N) levyhakua. (roof(x) = pienin kokonaisluku, joka on suurempi kuin x) Aiemman esimerkin 8000 employee-tietueen tiedostossa oli 800 lohkoa, eli tietueen haku järjestysavaimen perusteella vaatisi enintään roof(log 2 800) = 10 levyhakua, joka satunnaishakuajalla laskettuna samalla n 10 ms satunnaishakuajan levyllä olisi samaa luokkaa kuin keskimääräinen saantiaika kasarakenteesta (100ms vs 85 ms). ei ole tyypillinen tietokantojen yhteydessä käytetty tiedostorakenne Vanhanaikaisissa eräsovelluksissa se oli laajasti käytetty soveltuu erityisen hyvin tilanteisiin, jossa pitää tahdistaa usean laajan aineiston käsittely 23 24 6