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

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

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

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

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

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

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

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 4 To Timo Männikkö

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja

B-puu. 3.3 Dynaamiset hakemistorakenteet

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

D B. Tietokannan hallinta kertaus

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

Algoritmit 2. Luento 4 Ke Timo Männikkö

D B. Harvat hakemistot. Harvat hakemistot

5. Hajautus. Tarkastellaan edelleen sivulla 161 esitellyn joukkotietotyypin toteuttamista

Luento 2: Tiedostot ja tiedon varastointi

A TIETORAKENTEET JA ALGORITMIT

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

Algoritmit 2. Luento 5 Ti Timo Männikkö

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

Hakemistotyypeistä. Hakemistorakenteet. Hakemiston toteutuksesta. Hakemiston toteutuksesta

Hajautus. operaatiot insert ja search pyritään tekemään erittäin nopeiksi

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.

Tietorakenteet ja algoritmit. Hajautus. Ari Korhonen Tietorakenteet ja algoritmit - syksy

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 1. Luento 5 Ti Timo Männikkö

D B. Harvat hakemistot

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

Luku 8. Aluekyselyt. 8.1 Summataulukko

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

Tietokannan indeksointi: B puun ja hajautusindeksin tehokkuus

A TIETORAKENTEET JA ALGORITMIT

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

Liitosesimerkki. Esim R1 R2 yhteinen attribuutti C. Vaihtoehdot

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 2. Demot Timo Männikkö

4. Hajautus. Hajautus (hashing) on vaihtoehto tasapainoisille puille dynaamisen joukon toteuttamisessa:

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

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 1. Luento 9 Ti Timo Männikkö

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

Tietorakenteet, laskuharjoitus 7, ratkaisuja

2. Tietokannan tallennusrakenteet

Esimerkki A1. Jaetaan ryhmä G = Z 17 H = 4 = {1, 4, 4 2 = 16 = 1, 4 3 = 4 = 13, 4 4 = 16 = 1}.

Algoritmit 1. Luento 11 Ti Timo Männikkö

Lineaarinen optimointitehtävä

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

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

811120P Diskreetit rakenteet

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 1. Luento 4 Ke Timo Männikkö

Tietorakenteet, laskuharjoitus 8, malliratkaisut

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

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

Tietorakenteet ja algoritmit - syksy

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

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

D B. Tiedostojen käsittely

Ohjelmoinnin perusteet Y Python

2. Tietokannan tallennusrakenteet

HELIA 1 (15) Outi Virkki Tiedonhallinta

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

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

Algoritmit 1. Luento 6 Ke Timo Männikkö

. Kun p = 1, jono suppenee raja-arvoon 1. Jos p = 2, jono hajaantuu. Jono suppenee siis lineaarisesti. Vastaavasti jonolle r k+1 = r k, suhde on r k+1

4. Joukkojen käsittely

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

2017 = = = = = = 26 1

CUDA. Moniydinohjelmointi Mikko Honkonen

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

Viimeistely Ajourien huomiointi puutiedoissa ja lopullinen kuviointi. Metsätehon tuloskalvosarja 5/2018 LIITE 4 Timo Melkas Kirsi Riekki Metsäteho Oy

Algoritmit 2. Luento 13 Ti Timo Männikkö

Tietorakenteet, laskuharjoitus 8,

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

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

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.

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

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

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Algoritmit 2. Luento 2 Ke Timo Männikkö

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

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

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

Algoritmit 2. Luento 12 To Timo Männikkö

Datatähti 2019 loppu

Mat Lineaarinen ohjelmointi

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Kirjoita ohjelma jossa luetaan kokonaislukuja taulukkoon (saat itse päättää taulun koon, kunhan koko on vähintään 10)

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

A TIETORAKENTEET JA ALGORITMIT

Laskuharjoitus 9, tehtävä 6

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

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

Viikon aiheet. Funktion lineaarinen approksimointi

Kierros 5: Hajautus. Tommi Junttila. Aalto University School of Science Department of Computer Science

Transkriptio:

Indeksin luonti ja hävitys TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto Komentoa ei ole standardoitu ja niinpä sen muoto vaihtelee järjestelmäkohtaisesti Indeksi voidaan luoda milloin tahansa taulun luonnin jälkeen siis tyhjälle taululle tai olemassa olevalle taululle jos tauluun ladataan suuri määrä dataa voi olla kannattavaa luoda indeksit vasta latauksen jälkeen saadaan aikaan parempi rakenne eikä jouduta jatkuviin rakenteen tasapainotuksiin Tietueet järjestetään ensin ja lisätään järjestyksessä 1

Indeksin luonti ja hävitys Indeksit voidaan myös tiputtaa pois drop index komennolla halutaan uudelleen organisoida indeksi tiputetaan se pois ja luodaan uudelleen suoritetaan iso päivityserä (lisäyksiä/poistoja/indeksointiavaimen muutoksia) on yleensä nopeampaa ja indeksien rakenteen kannalta parempi tiputtaa indeksit ja luoda ne uudelleen erän jälkeen 2

Indeksin luonti ja hävitys Pelkästään Create index komennolla voi luoda lähinnä tiheitä oheishakemistoja. Harvat hakemistot edellyttävät lisäksi taulumäärittelyn yhteydessä annettuja lisämääreitä. Harvojen hakemistojen tiputtaminen ja uudelleen perustaminen ei ole yhtä yksinkertaista kuin tiheiden hakemistojen käsittely. 3

Dynaamiset hajautusratkaisut Aiemmin käsitelty hajautusrakenne perustui siihen, että tietueelle laskettiin soluosoite hajautusavaimen perusteella. Hajautusfunktio oli kiinteä ja sen arvoalue (osoiteavaruus) piti kiinnittää funktiota määriteltäessä. Tällöin ei välttämättä ole riittävää tietoa siitä, miten hajautusfunktio jakaa tietueet todellisessa käyttötilanteessa eikä välttämättä edes tietoa siitä, miten nopeasti tietueiden määrä kasvaa. Solua laajentavan ylivuotoketjun pituutta ei voida hallita ja ainakin alussa täytyy varata tilaa paljon yli todellisen tarpeen. 4

Dynaamiset hajautusratkaisut B+ -puussa hakupolun pituus pidetään hallinnassa puolittamalla sivu ja pitämällä kummatkin puolikkaat samanmittaisen hakupolun päässä. Sivun puolituksen ideaa sovelletaan myös dynaamisissa hajautusrakenteissa. Tunnetuimpia näistä ovat laajeneva hajautus (extendible hashing) ja lineaarinen hajautus (linear hashing) 5

Laajeneva hajautus Laajenevassa hajautuksessa on käytössä kiinteä hajautusfunktio h ja sillä kiinteä osoiteavaruus osoiteavaruutta ei kuitenkaan suoraan vastaa mikään tilavaraus, joten se voi olla hyvinkin suuri tilavarauksessa lähdetään liikkeelle pienestä varauksesta ja sitä kasvatetaan tarpeen mukaan Rakenteessa käytetään soluhakemistoa, jonka koko on 2 d soluosoitetta. Eksponentti d ( 1) kasvaa tiedoston kasvaessa. Sitä kutsutaan rakenteen globaaliksi syvyydeksi (global depth). 6

Laajeneva hajautus Soluhakemiston koko on siis 2, 4, 8,. solua Olkoon rakenteen globaali syvyys d. Tällöin avaimen k solu (siis soluhakemiston indeksi) saadaan eristämällä hajautusfunktion antaman osoitteen lopusta d bitin pituinen osa tail_bits(h(k),d). Jos d=1 otetaan viimeinen bitti => {0,1} Jos d=2 otetaan 2 viimeistä bittiä => {00,01,10,11} 7

Laajeneva hajautus Lisäysten käsittely Jos soluhakemistosta löytyvässä kotilohkossa on tilaa tietue lisätään sinne kuten aiemmin käsitellyssä hajautuksessa Jos kotilohko (olkoon sen solutunnus binäärisenä {b}) on täynnä, otetaan käyttöön uusi lohko ja jaetaan ylivuotavan kotilohkon tietueet kotilohkon ja uuden lohkon välillä kotilohkolla on paikallinen syvyys (local depth) p (monenko bitin perusteella tietueet on sijoitettu lohkoon) 8

Laajeneva hajautus Lisäyksen käsittely jatkuu tietueille tehdään uusi sijoittelu ottamalla käyttöön hajauttimen tuottaman osoitteen lopusta päin p+1:s bitti ne tietueet, joilla tämä bitti on 0, jäävät kotilohkoon ja muut siirtyvät (oletetaan, että kaikki eivät menneet samaan lohkoon, näinkin voisi käydäl) kotilohkon ja uuden lohkon paikalliseksi syvyydeksi asetetaan p+1 soluhakemiston alkiot, joiden indeksin p+1 viimeistä bittiä ovat 1{b} asetetaan osoittamaan uuteen lohkoon 9

Laajeneva hajautus 000 001 010 011 100 101 110 111 3 globaali syvyys 1000 1001 0101 0011 0010 0001 0101 1110 1 3 3 2 lokaali syvyys monenko bitin perusteella sijoitettu lisätään: 0010 10

Laajeneva hajautus 000 001 010 011 100 101 110 111 3 globaali syvyys lisätään: 0010 1000 1001 0101 0011 0010 0001 0101 1110 1 3 3 2 täynnä 11

Laajeneva hajautus 000 001 010 011 100 101 110 111 3 globaali syvyys lisätään: 0010 1000 1001 0101 0011 0010 0001 0101 1110 1 3 3 2 siirretään ne, joilla 2. viimeinen bitti on 1 12

Laajeneva hajautus 000 001 010 011 100 101 110 111 3 globaali syvyys 1000 1001 0101 0011 0001 0101 2 3 3 2 0010 0010 1110 2 siirretään ne, joilla 2. viimeinen bitti on 1 vanhan ja uuden paikallinen syvyys 2 vaihdetaan ne soluosoittimet, joiden indeksi loppuu..10 osittamaan uuteen 13

Laajeneva hajautus 000 001 010 011 100 101 110 111 3 globaali syvyys 1000 1001 0101 0011 0001 0101 2 3 3 2 0010 0010 1110 2 siirretään ne, joilla 2. viimeinen bitti on 1 vaihdetaan ne soluosoittimet, joiden indeksi loppuu..10 osittamaan uuteen 14

Laajeneva hajautus Jos jaettavan kotilohkon paikallinen syvyys on sama kuin rakenteen globaali syvyys, joudutaan tuplaamaan soluhakemiston koko, (jotta voitaisiin kirjata osoite soluun 1{b}) Tuplaus tapahtuu helposti kopioimalla nykyinen soluhakemisto Tuplaus nostaa rakenteen globaalia syvyyttä yhdellä, kotilohkojen syvyydet säilyvät ennallaan 15

Laajeneva hajautus Rakenne laajenee sykäyksittäin Jos jakokohtaan osuvissa avaimissa on yhtenäinen bittisekvenssi, voidaan joutua tekemään monta jakoa ennen kuin tietueet saadaan jaettua Jos soluhakemisto kasvaa isoksi eikä sitä voida pitää keskusmuistissa voidaan hakuun tarvita 2 levyhakua jako ja tuplaus voivat edellyttää useita hakuja 16

Lineaarinen hajautus Lineaarisessa hajautuksessa (kotimaista alkuperää Per Larsson) ei välttämättä tarvita soluhakemistoa Hajautusaluetta laajennetaan solu kerrallaan jakamalla jakovuorossa olevan solun sisältö solun itsensä ja uuden solun kesken Solut saavat jakovuoronsa järjestyksessä, eikä jaettava solu ole suinkaan välttämättä se jonka kohdalla ylivuoto tapahtuu soluihin voidaan ylivuotavia tietueita varten liittää ylivuotolista 17

Lineaarinen hajautus Solun osoitteen määräämiseksi käytössä on sarja hajauttimia h 0,h 1,h 2,... Nämä ovat muotoa h i = h(k) mod (2 i N). h i N voidaan valita kakkosen potenssiksi 2 d, tällöin h i eristäisi d+i bittiä perushajauttimen tuottaman arvon lopusta jos d=5, niin h 0 eristää 5 bittiä, h 1 6 bittiä jne tietueen haussa tarvitaan perushajauttimen lisäksi kahta hajautinta h taso ja h taso+1 18

Lineaarinen hajautus Haku laske osoite h taso (h(k)), eli ota d+taso bittiä lopusta jos kyseessä on jakamaton solu, etsi tietuetta solusta. jos kyseessä on jaettu solu muodosta uusi osoite h taso+1 (h(k)), eli ota d+1+taso bittiä lopusta etsi tietuetta saadusta solusta Solu on jakamaton, jos sen indeksi on suurempi tai yhtä suuri kuin jakovuorossa olevan solun indeksi 19

Lineaarinen hajautus Olkoon d=1, taso=2, eli h 2 antaa osoitteet 0..7 ja h 3 osoitteet 0..15 jaettuja jakovuorossa jaon tuloksena syntyneitä seuraavan tason soluja 20

Lineaarinen hajautus Lisäyksessä, solmu lisätään haun määräämään lohkoon jos solmu ei mahdu kotilohkoon, se lisätään ylivuotoketjuun. Ylivuoto käynnistää jako-operaation Olkoon jakovuorossa olevan solun taso+d bitistä muodostuva osoite {b} Otetaan käyttöön uusi solu jonka osoite on 1{b} jakovuorossa olevan solun tietueet jaetaan alkuperäisen soluun ja uuden solun kesken käyttäen hajautinta h taso+1 Jos jakovuorossa oli tason viimeinen solu siirtyy jakovuoro soluun 0 ja tasoa kasvatetaan yhdellä, muuten jakovuoro siirtyy seuraavaan soluun. 21

Lineaarinen hajautus Olkoon d=1, taso=2, eli h 2 antaa osoitteet 0..7 ja h 3 osoitteet 0..15 jakovuorossa jaettuja jaon vastaanottajat 22

Lineaarinen hajautus Kullakin tasolla jaetaan vuorollaan jokainen tason solu. Kun kaikki on jaettu, on hajautusalue tuplautunut ja siirrytään seuraavalle tasolle. Rakenteessa voi olla pitkiäkin ylivuotoketjuja, mutta ne lyhenevät kun taso kasvaa. 23