D B. Harvat hakemistot

Samankaltaiset tiedostot
D B. Harvat hakemistot. Harvat hakemistot

Helsingin yliopisto /TKTL Tietokannan hallinta Harri Laine 1 D B. Harvat hakemistot. 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

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

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja

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

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

3. Tietokannan hakemistorakenteet

3. Tietokannan hakemistorakenteet

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

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

B-puu. 3.3 Dynaamiset hakemistorakenteet

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

Algoritmit 2. Luento 5 Ti Timo Männikkö

D B. Tietokannan hallinta kertaus

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

Algoritmit 2. Luento 6 Ke Timo Männikkö

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

Algoritmit 2. Luento 5 Ti Timo Männikkö

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

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 1. Luento 6 Ke Timo Männikkö

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

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.

B + -puut. Kerttu Pollari-Malmi

Algoritmit 1. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

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

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 4 To Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Tietorakenteet, laskuharjoitus 7, ratkaisuja

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

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

Algoritmit 1. Luento 4 Ke Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

D B. Tiedostojen käsittely

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 2. Luento 4 Ke Timo Männikkö

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

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

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

Algoritmit 1. Luento 7 Ti Timo Männikkö

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

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

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

Algoritmit 1. Luento 8 Ke Timo Männikkö

4 Tehokkuus ja algoritmien suunnittelu

A TIETORAKENTEET JA ALGORITMIT

811312A Tietorakenteet ja algoritmit II Perustietorakenteet

Luento 2: Tiedostot ja tiedon varastointi

Binäärihaun vertailujärjestys

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

Algoritmit 1. Luento 12 Ti Timo Männikkö

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

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

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

Algoritmit 1. Luento 12 Ke Timo Männikkö

Tietorakenteet, laskuharjoitus 6,

Tietorakenteet ja algoritmit

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

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

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

Ohjelmoinnin perusteet Y Python

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

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

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

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

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

Tietorakenteet ja algoritmit Hakurakenteet Ari Korhonen

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

Algoritmit 1. Luento 9 Ti Timo Männikkö

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Ohjelmoinnin perusteet Y Python

Liitosesimerkki. Esim R1 R2 yhteinen attribuutti C. Vaihtoehdot

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

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

Tietorakenteet ja algoritmit

2. Perustietorakenteet

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia

Algoritmit 2. Luento 10 To Timo Männikkö

Miten käydä läpi puun alkiot (traversal)?

Paikkatiedon hallinta ja analyysi 4. Paikkatiedon indeksointi

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

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

18. Abstraktit tietotyypit 18.1

Ohjelmoinnin perusteet Y Python

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

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

A TIETORAKENTEET JA ALGORITMIT KORVAAVAT HARJOITUSTEHTÄVÄT 3, DEADLINE KLO 12:00

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

Tarkennamme geneeristä painamiskorotusalgoritmia

4. Joukkojen käsittely

Tietokannan indeksointi: B puun ja hajautusindeksin tehokkuus

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

1.1 Tavallinen binäärihakupuu

Transkriptio:

Harvat hakemistot 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 1

Harvat hakemistot pienin mahdollinen hakemistossa alarajat sivulle kuuluville avaimille ja osoitteet sivuille 00 70 110 kaikki tietueet, joissa 70 avain < 110 kuuluvat sivulle 2 20 40 50 70 80 90 100 110 110 120 130 1 2 3 perustietueet järjestettynä peräkkäisrakenteena 2

Harvat hakemistot pienin mahdollinen hakemistossa alarajat sivulle kuuluville avaimille (Voidaan toteuttaa myös ilman osoitteita, hakemistomerkinnän indeksi vastaa sivunumeroa) 00 70 110 1 2 3 kaikki tietueet, joissa 70 avain < 110 kuuluvat sivulle 2 20 40 50 70 80 90 100 110 110 120 130 1 2 3 perustietueet järjestettynä peräkkäisrakenteena 3

Harvat hakemistot 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 4

Harvat hakemistot 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. 5

Harvat hakemistot 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 6

Harvat hakemistot Jos datasivuille mahtuu useita tietueita muodostuu harva hakemisto tiheää pienemmäksi, joten haku on nopeampaa Esimerkki työntekijätietueen keskipituus oli 300, 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 400 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

Harvat hakemistot 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

Harvat hakemistot 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

Harvat hakemistot - ISAM 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

Harvat hakemistot - ISAM Tiedosto luodaan järjestetyn aineiston pohjalta Tietueita lisätään tiedoston loppuun (järjestyksessä) Sivuille jätetään tilaa lisäyksille, esim. 30 % - 50%. 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 arvo, muille sivuille sivun ensimmäisen tietueen avain Hakemistosivut voidaan laittaa täyteen, sillä niitä ei päivitetä. 11

Harvat hakemistot - ISAM 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

Harvat hakemistot - 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ä. 13

Harvat hakemistot - ISAM 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. 14

Harvat hakemistot - 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, jolloin levyhakuja olisi luokkaa: lisäysten määrä/sivukoko 15

Dynaamiset hakemistorakenteet B+ -puu 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 16

Dynaamiset hakemistorakenteet B+ -puu hakemisto voi laajeta ja kutistua harva hakemisto Datasivut (sequence set) datasivujen joukko voi laajeta ja kutistua 17

Dynaamiset hakemistorakenteet B+ -puu B+ -puun hakemisto on rakenteeltaan ISAM:in kaltainen, mutta hakemistosivujen täyttöaste ylintä sivua lukuunottamatta on välillä 50-100% hakemiston alaisuuteen kuuluvan ensimmäisen sivun pienin avainarvo jää pois 10 100 200 300 10 100 200 300 18

Dynaamiset hakemistorakenteet B+ -puu 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 19

Dynaamiset hakemistorakenteet B+ -puu 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 20

Dynaamiset hakemistorakenteet B+ -puu 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 21

Dynaamiset hakemistorakenteet B+ -puu 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 22

Tasapainotus lisäyksessä lisättävä ei mahdu sivulle 30 60 60 30 40 50 55 35 23

Tasapainotus lisäyksessä otetaan käyttöön uusi datasivu 30 60 60 30 40 50 55 35 24

Tasapainotus lisäyksessä kytketään uusi datasivu sivuketjuun 30 60 60 30 40 50 55 35 25

Tasapainotus lisäyksessä Siirretään puolet ylivuotavan sivun sisällöstä uudelle sivulle 30 60 60 30 35 40 50 55 26

Tasapainotus lisäyksessä tehdään uudelle sivulle hakemistotietue ja lisätään se hakemistosivulle, jonka alaisuuteen tietue lisättiin 30 60 40 60 30 35 40 50 55 27

Tasapainotus lisäyksessä Hakemistotietue mahtui sivulle lisäys on valmis 30 40 60 60 30 35 40 50 55 28

Tasapainotus lisäyksessä 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. 29

Tasapainotus lisäyksessä Rakenne on nyt hieman kasvanut, kyseessä kertaluvun 2 B+- puu 30 40 60 100 100 60 30 35 36 39 40 50 55 lisätään 38 30

Tasapainotus lisäyksessä nouseva hakemistotietue ei mahdu hakemistosivulle 30 40 60 100 100 36 60 30 35 40 50 36 38 39 31

Tasapainotus lisäyksessä keskimmäinen avain nousee ylöspäin 30 36 40 60 100 uusi sivu, jonne puolet 100 60 30 35 40 50 36 38 39 32

Tasapainotus lisäyksessä keskimmäinen nousee seuraavalle tasolle 40 osoitin uuteen sivuun 30 36 60 100 100 60 30 35 40 50 36 38 39 33

Tasapainotus lisäyksessä Jos jaettiin juuri, niin lisätään uuteen juureen vanhan osoite 40 30 36 60 100 100 60 30 35 40 50 36 38 34

Tasapainotus lisäyksessä Edellä kuvatulla tasapainotuksella hakemistosivuilla on aina vähintään d hakemistotietuetta (ei juuressa). 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 35

Erottimet lyhyempiä kuin avaimet Alkuosa erottelu - Prefix key compression K vain riittävästi alusta, jotta haku voidaan ohjata oikealle sivulle lisätään Anttila Asko Autoliike Bil Bookstore KansaMarket Kyläkauppa 36

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

B+ -puun tasapainotus poistossa Poistot Alkuperäisen B+ -puun idean mukaisesti tasapainotusta tehdään myös poistossa Jos datasivun täyttösuhde laskee alle puoleen ja sivun ja sen velisivun (sibling, saman isäsivun alla oleva vierussivu) yhteenlaskettu tietomäärä ylittää ylittää sivukoon, järjestetään sivuparin tietueet uudelleen siirtämällä täydemmältä sivulta tietue vajaalle sivulle. 38

B+ -puun tasapainotus poistossa 30 50 30 40 50 60 70 80 poistetaan kohdesivu velisivu 39

B+ -puun tasapainotus poistossa tätä ei tarvitse vaihtaa vaikka tietue katosikin 30 50 40 50 60 70 80 kohdesivu Täyttösuhde liian pieni velisivu siirretään vajaalle 40

B+ -puun tasapainotus poistossa 30 50 korvataan erotin sivun pienimmällä tunnuksella 40 50 60 70 80 Siirretty datatietue 41

B+ -puun tasapainotus poistossa 30 60 40 50 60 70 80 rakenne tasauksen jälkeen 42

B+ -puun tasapainotus poistossa Jos poiston kohteena olevan sivun ja sen velisivun yhteenlaskettu tietomäärä jää alle sivun kapasiteetin yhdistetään sivut ja poistetaan niiden välinen erotin hakemistosta. 30 60 y 40 50 60 70 80 poistetaan 43

B+ -puun tasapainotus poistossa 30 60 y 40 60 70 80 siirretään kaikki velisivun tietueet kohdesivulle, vapautetaan tyhjentynyt sivu, poistetaan erotin hakemistosivulta 44

B+ -puun tasapainotus poistossa 30 y 40 60 70 80 45

B+ -puun tasapainotus poistossa Hakemistomerkinnän poiston takia hakemistosolmu voi jäädä vajaatäyttöiseksi Sivun täyttösuhdetta korjataan samalla periaatteella kuin datasivujenkin eli siirtämällä velisolmusta täydennystietue, siirto tehdään isäsolmun kautta vyöryttämällä Vyörytys: Olkoon kyseessä oikeanpuoleinen veli eli velisolmussa on isompia avaimia. Vyörytys tapahtuu tällöin seuraavasti Lisätään isäsolmusta kopioitu kohdesolmun ja velisolmun välinen avain kohdesolmun avainlistan loppuun Lisätään velisolmun ensimmäinen osoitin p 0 kohdesolmun osoitinlistan loppuun Korvataan isäsolmussa ollut kohdesolmun ja velisolmun välinen erotin velisolmun erotinlistan pienimmällä avaimella Poistetaan velisolmun avain- ja osoitinlistojen alkupäästä ensimmäinen avain ja osoitin Sivuja yhdistettäessä vyörytetään kaikki velisolmun tietueet kohdesolmuun ja poistetaan isäsolmusta erotin sekä osoitin velisolmuun Puun korkeus alenee, jos poistettavana on juurisolmun ainoa erotin. 46

Vyörytys kohde 96 45 120 300 sen veli kohde 120 45 96 300 sen veli 47

B+ -puun tasapainotus poistossa Kaikki toteutukset eivät käytä tasapainotusta poistojen yhteydessä, vaan antavat täyttöasteen laskea. B+ puun hakemistosivujen keskimääräiseksi täyttöasteeksi muodostuu lisäys- ja poistotasapainotusta käytettäessä noin 67% 48

B+ -puun ominaisuuksia Olkoon B+ -puun korkeus h haettaessa indeksointiavaimen perusteella joudutaan tutkimaan h sivua ( h levyhakua) lisättäessä joudutaan lukemaan h sivua ja kirjoittamaan vähintään 1 ja enintään h+2 sivua poistettaessa joudutaan lukemaan vähintään h ja enintään 2h-1 ja kirjoittamaan vähintään 1 ja enintään 2h-1 sivua Indeksointiavaimen arvon muuttaminen täytyy B+ - puun yhteydessä hoitaa poisto ja lisäys operaatioina. 49

B+ -puut tietokantatoteutuksessa Useimmat tietokannan hallintajärjestelmät mahdollistavat B+ -puun käytön joko taulun toteutusrakenteena datasivuilla on taulun rivejä vastaavia tietueita ratkaisun huono puoli on se, että rivit voivat vaihtaa sivua, mikä tekee oheishakemistojen käytön työlääksi, kaikki osoitteet sivua vaihtaneeseen tietueeseen on vaihdon yhteydessä päivitettävä Oraclessa tämä on ratkaistu siten, että B+ -puu rakenteisen tiedoston oheishakemisto ei käytäkään osoittamiseen tietueen osoitetta vaan tietueen pääavainta (haku hidastuu) tiheän hakemiston toteutusrakenteena datasivuilla on tiheän hakemiston hakemistomerkintöjä tämä on yleisin B+ -puun käyttötilanne. taulun rivit ovat tällöin yleensä kasarakenteena 50

B+ -puu Edellä käsitellyt B+ -puun haku- ja lisäystoiminnot perustuvat indeksointiavaimen yksikäsitteisyyteen tietyllä avaimella varustettu tietue on tietyllä sivulla. Rakennetta voi kuitenkin käyttää myös toistuvien avainarvojen yhteydessä (indeksointi vaikkapa henkilön nimen perusteella) vaihtoehto: datasivukohtaiset ylivuotolistat yleisesti käytetty vaihtoehto (esim. Oracle, DB2): Otetaan rivitunnus (rid) mukaan indeksointiavaimeen tällöin avaimet ovat aina yksikäsitteiset 51