D B. Harvat hakemistot. Harvat hakemistot

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

D B. Harvat hakemistot

Hakemistotyypeistä. Hakemistorakenteet. Hakemiston toteutuksesta. Hakemiston toteutuksesta

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

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

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja

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

3. Tietokannan hakemistorakenteet

3. Tietokannan hakemistorakenteet

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

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

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

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

D B. Tietokannan hallinta kertaus

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

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

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

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

B-puu. 3.3 Dynaamiset hakemistorakenteet

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 1. Luento 5 Ti Timo Männikkö

v 1 v 2 v 3 v 4 d lapsisolmua d 1 avainta lapsen v i alipuun avaimet k i 1 ja k i k 0 =, k d = Sisäsolmuissa vähint. yksi avain vähint.

Algoritmit 1. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 4 To Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 4 Ke Timo Männikkö

B + -puut. Kerttu Pollari-Malmi

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

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

Algoritmit 2. Luento 3 Ti Timo Männikkö

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

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 2. Luento 4 Ke Timo Männikkö

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Algoritmit 1. Luento 12 Ti Timo Männikkö

D B. Tiedostojen käsittely

Algoritmit 1. Luento 7 Ti Timo Männikkö

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

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

Luento 2: Tiedostot ja tiedon varastointi

Algoritmit 1. Luento 12 Ke Timo Männikkö

811312A Tietorakenteet ja algoritmit II Perustietorakenteet

private TreeMap<String, Opiskelija> nimella; private TreeMap<String, Opiskelija> numerolla;

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

A TIETORAKENTEET JA ALGORITMIT

58131 Tietorakenteet (kevät 2008) 1. kurssikoe, ratkaisuja

4 Tehokkuus ja algoritmien suunnittelu

Binäärihaun vertailujärjestys

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

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

Liitosesimerkki. Esim R1 R2 yhteinen attribuutti C. Vaihtoehdot

Tietorakenteet, laskuharjoitus 6,

Algoritmit 1. Luento 8 Ke Timo Männikkö

811312A Tietorakenteet ja algoritmit V Hash-taulukot ja binääriset etsintäpuut

Tietorakenteet, laskuharjoitus 3, ratkaisuja

Algoritmit 2. Luento 10 To Timo Männikkö

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

Tietorakenteet ja algoritmit

Ohjelmoinnin perusteet Y Python

Algoritmit 1. Demot Timo Männikkö

(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun:

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

2. Perustietorakenteet

58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 1, , vastauksia

Algoritmit 1. Demot Timo Männikkö

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Ohjelmoinnin perusteet Y Python

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

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

Tietorakenteet ja algoritmit Hakurakenteet Ari Korhonen

Algoritmit 1. Luento 11 Ti Timo Männikkö

Algoritmit 1. Luento 9 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

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

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

Algoritmit 1. Demot Timo Männikkö

Tietorakenteet ja algoritmit - syksy

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

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe ratkaisuja (Jyrki Kivinen)

A TIETORAKENTEET JA ALGORITMIT

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

Tarkennamme geneeristä painamiskorotusalgoritmia

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut

18. Abstraktit tietotyypit 18.1

4. Joukkojen käsittely

3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin.

Algoritmit 1. Demot Timo Männikkö

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

Transkriptio:

Harvassa hakemistossa on ei ole hakemistomerkintöjä jokaista tietuetta kohden vaan yksi merkintä jotain isompaa kokonaisuutta esimerkiksi sivua tai sivujoukkoa (esim. saman uran sivut) kohti Harvan hakemiston käyttö edellyttää, että tietueet on järjestetty pienin mahdollinen 00 70 110 hakemistossa alarajat sivulle kuuluville avaimille ja osoitteet sivuille kaikki tietueet, joissa 70 avain < 110 kuuluvat sivulle 2 20 70 80 90 110 110 120 1 1 2 3 perustietueet järjestettynä peräkkäisrakenteena 1 2 pienin mahdollinen 00 70 110 1 2 3 hakemistossa alarajat sivulle kuuluville avaimille (Voidaan toteuttaa myös ilman osoitteita, hakemistomerkinnän indeksi vastaa sivunumeroa) kaikki tietueet, joissa 70 avain < 110 kuuluvat sivulle 2 20 70 80 90 110 110 120 1 1 2 3 perustietueet järjestettynä peräkkäistiedostona hakemistoon alarajat (tai ylärajat) sivulle kuuluvien tietueiden avaimille (+osoitteet sivuille) kaksi peräkkäistä hakemistoavainta määrää sivulle i kuuluvat avaimet h(i) sivulle i kuuluva avain < h(i+1) hakemisto voi olla monitasoinen jos alin hakemistotaso tulee liian isoksi, tehdään sille samoin harva hakemisto perustietueet järjestettynä peräkkäisrakenteena 3 4 ylempi hakemistotaso alin hakemistotaso hakemistotasoja voisi olla useitakin mutta yleensä 2 tai 3 riittää siihen, että ylimmän tason hakemisto on niin pieni, että se voidaan pitää jatkuvasti keskusmuistissa.... Haku: etsi hakemistosivulta suurin hakemistoavain, joka on pienempi tai yhtä suuri kuin etsittävän avain, jos ollaan hakemistosivulla, siirry löydetyn alkion indeksin osoittamalle sivulle seuraavalla tasolla (jos hakemistomerkintöihin liittyy sivuosoite käytetään sitä indeksin tilalla) tässä joudutaan suorittamaan levyhaku (ellei sivu ole puskurissa) jos ollaan datasivulla, etsi tietue sivulta 5 6

Jos datasivuille mahtuu useita tietueita muodostuu harva hakemisto tiheää pienemmäksi, joten haku on nopeampaa Esimerkki työntekijätietueen keskipituus oli 0, joten yhdelle datasivulle voitaisiin sijoittaa vaikkapa 10 tietuetta (jätetty hieman tilaa lisäyksille) Tiedosto mahtuu 800 sivulle Kunkin sivun pienin avain viedään hakemistoon, jolloin hakemistosivulle menee keskimäärin 0 avainta (tässä muunnelmassa ei käytetä osoitteita) Tarvitaan 2 hakemistosivua alimmalla tasolla, Koko hakemisto (yht. 8K) voidaan pitää keskusmuistissa, joten tietueen hakuun työntekijänumeron perusteella tarvitaan noin 1 levyhaku 7 Etuja pieni hakemisto - tehokas haku jos tietueita on N ja hakemistosivulle mahtuu X merkintää tarvitaan hakemistoon roof(log X N) tasoa tukee myös arvovälihakuja hakuja avaimen alkuosalla (osoite like Helsingin% ) 8 - ISAM Ongelmia tiedostolla voi olla vain yksi harva hakemisto sillä perustietueet voidaan järjestää vain yhteen järjestykseen lisäykset voivat aiheuttaa ongelmia jos lisäykset hoidetaan sivukohtaisilla ketjutetuilla ylivuotosivuilla, voi ketjusta tulla pitkä, jos lisäykset kasautuvat usein jätetään sivuille tilaa lisäyksille täyttösuhde huononee eikä tämä välttämättä hidasta kovin paljon rakenteen degeneroitumista tietueiden lisääminen satunnaisessa järjestyksessä on erityisen ongelmallista 9 ISAM (indexed sequential access method) indeksoitu peräkkäisrakenne harva monitasoinen staattinen hakemisto staattinen: hakemisto pysyy luontinsa jälkeen muuttumattomana kunnes tiedosto organisoidaan uudelleen ja sille luodaan uusi hakemisto tiedosto jakautuu perussivuihin ja ylivuotosivuihin ylivuotosivuille viedään lisäykset, jotka eivät mahdu perussivuille, ylivuotosivut ketjutetaan 10 - ISAM - ISAM Tiedosto luodaan järjestetyn aineiston pohjalta Tietueita lisätään tiedoston loppuun (järjestyksessä) Sivuille jätetään tilaa lisäyksille, esim. % - %. Hakemistomerkinnässä avainarvo ja sivuosoite Viedään merkintä hakemistosivulle aina kun aloitetaan uusi datasivu ensimmäisen hakemistosivun kohdalla viedään hakemisto-avaimeksi low-value = pienin mahdollinen, muille sivun ensimmäisen tietueen avain Hakemistosivut voidaan laittaa täyteen, sillä niitä ei päivitetä. 11 Rakenne sopii hyvin tiedostoille, joihin tulee vain vähän lisäyksiä. Jos lisäyksiä tulee runsaasti tarvitaan ajoittaisia uudelleenorganisointeja. Ylivuotoketjut hidastavat läpilukuaikaa samoin kuin järjestetyssä peräkkäisrakenteessa. Koska hakemistosivut eivät muutu, ei niitä myöskään tarvitse lukita rinnakkaisessa käsittelyssä prosessin ei tarvitse jonottaa hakemistosivua 12

- ISAM - ISAM Poistot kun ylivuotosivu tyhjenee poiston seurauksena sivu irrotetaan ketjusta ja voidaan ottaa uudelleen käyttöön kun datasivu tyhjenee poiston seurauksena se jätetään tyhjäksi. Sivu tarjoaa tällöin lisäyspaikan, jos sen avainalueelle sattuisi tulemaan lisäyksiä. Alkuperä: IBM.n ISAM rakenteessa oli alunperin kaksi hakemistotasoa alimpana urahakemisto (uran suurin avain), ja seuraavalla tasolla sylinterihakemisto (sylinterin suurin avain) Muunnelmia ISAM rakennetta voidaan käyttää hakemistorakenteena, siten että datatietueina eivät olekaan oikeat datatietueet vaan tiheän hakemiston hakemistomerkinnät. 13 14 - ISAM ISAM on keskimäärin hyvin tehokas rakenne hakemistoavaimen avulla tehtävissä hakuoperaatioissa (yhtäsuuruus, alkuosa, arvoväli) Rakenne ei kykene takaamaan kasvavalle tiedostolle kovin pientä ylärajaa levyhakujen määrälle pahimmassa tapauksessa, pahin tapaus levyhakuja luokkaa: lisäysten määrä/sivukoko B+ -puut ovat laajalti tietokantojen yhteydessä käytetty tiedostorakenne Rakenne on oikeastaan ISAM rakenteen dynaaminen muunnelma Rakenteen alimmalla tasolla ovat datatietueet järjestettynä rakenteena kuten ISAM:ssa, Datasivut eivät kuitenkaan ole välttämättä fyysisesti peräkkäisiä vaan ne on usein kytketty kaksisuuntaiseksi linkitetyksi listaksi. Erillisiä ylivuotosivuja ei ole, vaan listarakennetta ylläpidetään dynaamisesti. Datasivujen päällä on monitasoinen harva hakemisto, joka ISAM:ista poiketen on dynaaminen 15 16 hakemisto voi laajeta ja kutistua harva hakemisto B+ -puun hakemisto on rakenteeltaan ISAM:in kaltainen, mutta hakemistosivujen täyttöaste ylintä sivua lukuunottamatta on välillä -% hakemiston alaisuuteen kuuluvan ensimmäisen sivun pienin avainarvo jää pois 10 200 0 Datasivut (sequence set) datasivujen joukko voi laajeta ja kutistua 17 10 200 0 18

hakemistosivut eivät ole staattisia, niihin voi tulla uusia hakemistomerkintöjä, merkintöjä voidaan poistaa, sivuja voidaan jakaa ja yhdistää. B+ -puun tasapainovaatimuksena on, että jokainen hakupolku on yhtä pitkä, eli jokaisen tietueen hakemiseen tarvitaan yhtä monta levyhakua (elleivät sivut ole puskureissa) lisäys- ja poisto-operaatiot säilyttävät hakurakenteen tasapainon Tarkastellaan kertaluokan (order) d B+ -puuta Tällaisen puun jokaisessa hakemistosolmussa paitsi juuressa (ylin taso) on d m 2d hakemistomerkintää ja lisäksi yksi osoite hakemistosivulla ovat siis osoitteet p 0,...,p m ja avaimet K 1,...,K m Kuten ISAM:ssa tietue kuuluu osoitteessa p i (i=1,...m) olevan sivun alaisuuteen, jos sen avaimelle pätee K i avain < K i+1 Tietue kuuluu osoitteessa p 0 olevan sivun alaisuuteen, jos sen avain < K 1 19 20 Haku (oletetaan että avaimet yksikäsitteisiä) function search(node, key) { if (node is leaf) return node; else if (key<k[1]) return search(p[0],key); else if (key>=k[m]) return search(p[m],key); else { find i such that K[i]<=key<K[i+1]; return search(p[i],key]; } } Palauttaa datasivun osoitteen Lisäykset: Lisättäessä tietuetta B+ -puuhun sille haetaan sijoituspaikka edellä kuvatulla hakuoperaatiolla Jos sivulla on tilaa, tietue lisätään järjestyksessä oikealle paikalleen sivulla Jos tietue ei mahdu sivulle se sijoitetaan loogisesti oikealle paikalleen ja jaetaan ylivuotanut sivu: Otetaan käyttöön uusi sivu ja kytketään se linkitettyyn listaan Siirretään puolet alkuperäisen sivun tietueista uudelle sivulle Muodostetaan hakemistomerkintä (K new,p new ) uuden sivun ensimmäisen tietueen avaimesta ja sivun osoiteesta ja lisätään tämä siihen hakemistotietueeseen, jonka alaisuuteen jaettu sivu kuului 21 22 lisättävä ei mahdu sivulle otetaan käyttöön uusi datasivu 23 24

kytketään uusi datasivu sivuketjuun Siirretään puolet ylivuotavan sivun sisällöstä uudelle sivulle 25 26 tehdään uudelle sivulle hakemistotietue ja lisätään se hakemistosivulle, jonka alaisuuteen tietue lisättiin Hakemistotietue mahtui sivulle lisäys on valmis 27 28 Hakemistomerkinnän lisääminen hakemistosivulle voi aiheuttaa ylivuodon hakemistosivulla. Lisätään aluksi hakemistomerkintä oikealle kohdalleen. Sivulla olisi nyt 2d+1 avainta ja 2d+2 osoitetta Otetaan käyttöön uusi hakemistosivu X. Siirretään sinne avaimet K d+2...k 2d+1 ja osoitteet p d+1... p 2d+2 Muodostetaan nouseva hakemistotietue keskimmäisestä avaimesta K d+1 ja uuden sivun osoitteesta X. Tämä lisätään siihen hakemistosivuun, jonka alaisuuteen jaettu hakemistosivu kuului. Jos jaettu sivu oli juuri, lisätään sen osoitteeksi p 0 edellisen juuren osoite. Rakenne on nyt hieman kasvanut, kyseessä kertaluvun 2 B+- puu 36 29 lisätään 38

nouseva hakemistotietue ei mahdu hakemistosivulle keskimmäinen avain nousee ylöspäin 36 uusi sivu, jonne puolet 36 31 32 keskimmäinen nousee seuraavalle tasolle osoitin uuteen sivuun Jos jaettiin juuri, niin lisätään uuteen juureen vanhan osoite 36 36 33 34 Erottimet lyhyempiä kuin avaimet Edellä kuvatulla tasapainotuksella hakemistosivuilla on aina vähintään d hakemistotietuetta. Käytännössä avaimet voivat olla vaihtuvapituisia ja jakokriteeri voisi olla puolet käytettävissä olevasta tilasta avainten lukumäärän sijasta. Mitä leveämpi hakupuu on, sitä matalampi se on ja sitä vähemmän levyhakuja tarvitaan sivun löytämiseksi. Puun leveyteen vaikuttaa se montako hakemistomerkintää mahtuu hakemistosivulle. Useissa järjestelmissä ei tallennetakaan hakemistoon täydellisiä avaimia vaan pelkästään riittävän pitkiä osia avaimen alusta ohjaamaan hakuja Alkuosa erottelu - Prefix key compression K Anttila Asko Autoliike Bil KansaMarket Kyläkauppa vain riittävästi alusta, jotta haku voidaan ohjata oikealle sivulle lisätään Bookstore 36

Erottimet lyhyempiä kuin avaimet Alkuosa erottelu - Prefix key compression Au K Anttila Asko Autoliike Bil Bookstore KansaMarket Kyläkauppa 37