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

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

D B. Tiedostojen käsittely

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

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

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

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

3. Tietokannan hakemistorakenteet

3. Tietokannan hakemistorakenteet

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja

Luento 2: Tiedostot ja tiedon varastointi

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

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

Transaktiopalvelimen rakenne, s. 43. Levyjaksot, sivut ja tiedostot, s. 46. Tietokantasivujen puskurointi, s. 53. Tietokannan tila, s. 57.

Hakemistotyypeistä. Hakemistorakenteet. Hakemiston toteutuksesta. Hakemiston toteutuksesta

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. Tietokannan hallinta kertaus

2. Tietokannan tallennusrakenteet

D B. Harvat hakemistot. Harvat hakemistot

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

B-puu. 3.3 Dynaamiset hakemistorakenteet

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

2. Tietokannan tallennusrakenteet

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

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

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

HELIA 1 (15) Outi Virkki Tiedonhallinta

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

Tietorakenteet, laskuharjoitus 7, ratkaisuja

D B. Harvat hakemistot

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti. Ohjelman muistiosoitteet (3) Virtuaalimuisti (3) Virtuaalimuistin toteutus.

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

Luento 9 Järjestelmän ulkoinen muisti

Tietokanta (database)

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

Algoritmit 1. Luento 5 Ti Timo Männikkö

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

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

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

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

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

HELIA 1 (17) Outi Virkki Tiedonhallinta

Tietokantojen suunnittelu, relaatiokantojen perusteita

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

Ohjelmoinnin perusteet Y Python

Tiedonhallintajärjestelmän rakenne ja Suorituskyky

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti. Ohjelman muistiosoitteet (3) Virtuaalimuisti (3) Virtuaalimuistin toteutus (2)

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

Tieto ohjelmassa ja tietokoneella

Ohjelmoinnin perusteet Y Python

Algoritmit 2. Luento 3 Ti Timo Männikkö

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Liitosesimerkki. Esim R1 R2 yhteinen attribuutti C. Vaihtoehdot

Puuhakemistoista flash-levyllä

Algoritmit 2. Luento 2 To Timo Männikkö

Lokin ylläpito ja puskurinhallinta

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 7 Ti Timo Männikkö

Ohjelmoinnin perusteet Y Python

T Transaktionhallinta tietokantajärjestelmissä

HELIA 1 (11) Outi Virkki Tiedonhallinta

Taulukot. Jukka Harju, Jukka Juslin

Algoritmit 2. Luento 6 To Timo Männikkö

Luento 9 Järjestelmän ulkoinen muisti

Algoritmit 2. Luento 4 To Timo Männikkö

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

B + -puut. Kerttu Pollari-Malmi

Ohjelmoinnin perusteet Y Python

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

Ohjelmoinnin peruskurssi Y1

Algoritmit 2. Luento 7 Ti Timo Männikkö

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki

Tietokantakurssit / TKTL

On autoja, henkilöitä, Henkilöllä on nimi Autolla on omistaja, joka on henkilö. Taulu AUTO(rekno, malli) Taulu HENKILO(nimi, )

u saantimenetelmät Kenttä (field) u bittien / tavujen muodostama looginen kokonaisuus u yksi arvo, jolla tyyppi ja pituus Tietue (record)

Luento 5: YKSINKERTAINEN SEGMENTOINTI JA SIVUTUS

RJESTELMÄ Stallings, Luku KJ-I I S2005 / Tiina Niklander, kalvot Auvo HäkkinenH

Algoritmit 2. Luento 6 Ke Timo Männikkö

Tietokantarakenteet ja -algoritmit 3. harjoitus

Stallings, Luku

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

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

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 relaatiomalli Harri Laine 1.

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

ltöä (Luennot 5&6) Luento 5: YKSINKERTAINEN SEGMENTOINTI JA SIVUTUS Pikakertaus: : a) b) c) Dyn.. part.: sijoitus Kuva Buddy System: esimerkki

Ohjelmoinnin perusteet Y Python

Sivupalvelin- ja yhteislevyjärjestelmät

Algoritmit 2. Luento 13 Ti Timo Männikkö

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2006 Tiedon mallinnus ja tietokannat. Harri Laine 1. Tietokanta.

Algoritmit 2. Luento 4 Ke Timo Männikkö

Esimerkkejä vaativuusluokista

Elvytys. R & G Chapter Tietokannan hallinta, kevät 2006, J. Li 1

Transkriptio:

Tiedon talletuspaikkoja Levymuisti R&G Chapter 8 & 9 Levy: Pystytään noutamaan satunnainen sivu kiinteällä kustannuksella Useiden sivujen noutaminen halvempaa kuin satunnaisen sivun Nauha: Sivuja käsiteltävä peräkkäishaulla Halvempia kuin levyt, käytetään varakopiointiin Tiedostojen organisointi: Menetelmä tiedostojen tietueiden tallentamiseen massamuistiin. Tietuetunnus (rid) on riittävä tietueen fyysiseen osoittamiseen Hakemisto on tietorakenne, jonka avulla voidaan etsiä tietueiden tietuetunnuksia hakemiston hakuavaimessa annetuilla arvoilla. 1 2 Vaihtoehtoisia talletusrakenteita Tietokantojen säilytys Useita vaihtoehtoja: Kasa (satunnaisjärjestys): Sopii erityisesti kun haetaan kaikki tietueet tiedostosta. Järjestetty tiedosto: Paras vaihtoehto jos tietueet haetaan järjestyksessä tai vain tietyn välin tietueet haetaan. Hakemistot: tietueiden organisointiin puuhun tai hajautukseen liittyvä tietorakenne. Tietokantojen tietoja säilytetään yleensä apumuistissa, lähinnä levymuisteissa Apumuistiin tallentamisen merkittäviä etuja keskusmuistiin nähden ovat tiedon säilyvyys (virtakatkon yli) säilytyskapasiteetin edullisuus keskusmuistiin verrattuna, ja suuremmat tallennusvolyymit keskusmuistiakin mitataan nykyään jo gigatavuissa mutta tietokantoja jopa teratavuissa 3 4 1

Hakemistot Hakemisto tiedostoon nopeuttaa hakuja hakemiston hakuavainkenttiin. Mikä tahansa relaation kenttien osajoukko voi olla hakuavaimena relaatioon perustettavassa hakemistossa. Hakuavain ei ole sama kuin avain (minimaalinen joukko kenttiä relaation tietueen identifioimiseen). Hakemisto sisältää joukon tietoalkioita ja tarjoaa tehokkaan tavan hakea kaikki tietoalkiot k* annetulla avainarvolla k. Tietoalkon k* avulla voidaan löytää avaimen k tietoalkio korkeintaan yhdellä levyhaulla. Hakemiston yleinen malli Olkoon F tiedosto, jonka tietueet ovat sivuilla P1, P2,, Pn Indeksointikenttä (index field) eli hakemistoavain (indexing key) K on yhden tai useamman kentän yhdistelmä, jonka arvoihin hakemisto perustuu. Hakemisto muodostuu tietueista (v,p), missä v on indeksointikentän arvo ja p on osoitin tiedostoon F. 5 6 B+-puu hakemistona Esimerkki B+-puusta Juuri Hakemistosivut 17 Arvot <= 17 Arvot > 17 Lehtisivut (avaimen mukaan järjestettynä) 5 13 27 30 vlehtisivut sisältävät tietoalkioita ja ovat ketjutettu vhakemistosivut sisältävät hakemistoalkioita index entry P 0 K 1 P 1 K 2 P 2 K m P m 7 2* 3* 5* 7* 8* 14* 16* 22* 24* 27* 29* 33* 34* 38* 39* Hae 28*? 29*? Hae > 15* and < 30* Lisäys/poisto: Etsitään oikea sivulehtitasolta ja tehdään muutos siellä. Joskus muutos periytyy hakemistosivulle. 8 2

Hajautukseen perustuvat hakemistot Sopivat yhtäsuuruusvertailuun Hakemisto on joukko soluja. Solu = pääsivu ja yksi tai useampia ylivuotosivuja. Solut sisältävät tietoalkioita. Hajautusfunktio h: h(r) = solu, mihin (tietoalkio) tietue r kuuluu. h tarkastelee hakukenttiä r:ssä. Tietoalkio Tietoalkioon k* voidaan tallettaa: Tietue ja avainarvo k, tai <k, tietueen rid, jonka avainarvo on k>, tai <k, joukko rid:tä, joiden avainarvo on k> 9 10 Hakemistomalleja 1/2 Ryvästetty/ ryvästämätön Päähakemisto tai toisiohakemisto: Jos hakuavain sisältää relaation pääavaimen, silloin kutsutaan päähakemistoksi. Yksikäsitteinen hakemisto: hakemisto sisältää avainehdokkaan Ryvästetty tai ryvästämätön: jos tietueiden järjestys sama tai lähes sama kuin tietoalkioiden, kutsutaan ryvästetyksi. Tiedosto voidaan ryvästää vain yhden avaimen perustella. Tietueen haun kustannus vaihtelee paljon riippuen onko tiedosto ryvästetty vai ryvästämätön. Ryvästetty Hakemistoalkiot Tietoalkiot Tietoalkiot (Hakemisto) (datatiedosto) Tietosivut Tietosivut Ryvästämätön 11 12 3

Hakemistomalleja 2/2 Tiheä (dense) hakemisto Jokaiselle tietueelle on oma hakemistotietue eli parissa (v,p) p on tietuosoite. Tietueosoite tid on muotoa (sivunumero, tietuenumero). Harva (non-dense, sparse) hakemisto Hakemistotietue identifioi vain sivun eli p on sivunumero. Hakemistotietue yleensä perustietuetta lyhyempi. Harva hakemisto nimi sivu Aalto p1 Eerola p2 Ketola p3 Harva / Tiheä hakemisto p1: p2: p3: ssn nimi dno 5588 Aalto 2 9595 Aaltonen 3 7777 Eerola 2 1122 Frank 4 3333 Hakala 4 1111 Ketola 1 4242 Vainio 1 Tiheä hakemisto ssn rid 1111 (p3,1) 1122 (p2,2) 3333 (p2,3) 4242 (p3,2) 5588 (p1,1) 7777 (p2,1) 9595 (p1,2) 13 14 Fyysinen tietokanta Osoitteista Fyysinen tietokanta (physical database) on levymuistiin sijoitettu kokoelma sivuja, jotka sisältävät tietueita. Sivu (page) on vakiokokoinen alue, joka on sijoitettu levymuistin yhteen jaksoon. Tietue (record) jakaantuu yhteen tai useampaankenttään (field), joka voi sisältää atomisen arvon tai osoittimen. Fyysisen tietokannan tietue osoitetaan parilla (p,i), missä p on tietueen sisältävän sivun tunniste ja i identifioi tietueen paikan sivun p sisällä. Fyysisen tietokannan operaatioihin kuuluu sivun tuonti keskusmuistiin ja sivun vienti keskusmuistista levyllä Sekä tuonti että vienti toteutetaan yhdellä levyoperaatiolla, joka koostuu hakuvarren asetuksesta ja levyjakson luvusta tai kirjoituksesta. 15 16 4

Levyn rakenne 1/2 Levyn rakenne 2/2 Hakuvarsi ura jakso sektori luku-/kirjoituspää Levyjakso eli lohko (disk block) on yhdestä tai usemamasta peräkkäisestä sektorista koostuva levypinnan uralla. Esim: jos jakson koko on 8KB ja sektorin koko 512KB sisältää jakso 16 peräkkäistä sektoria. Levyllä yksittäinen sektori on pienin osoitettavissa oleva yksikkö. 17 18 Levyltä haku Lohkon sisällön hakemiseksi Siirretään luku/kirjoituspäät halutulle sylinterille (kaikki siirtyvät yhdessä). Odotetaan, että haluttu lohko pyörähtää luku/kirjoituspään kohdalle (pyörimisnopeus luokkaa 100 kierrosta sekunnissa). Aktivoidaan halutulla pinnalla oleva luku/kirjoituspää lukemaan dataa yleensä vain yksi pää voi olla samanaikaisesti aktiivinen. I/O prosessori siirtää luetun datan hakupyynnön yhteydessä annettuun puskuriin. Levymuistin merkittävin huono puoli keskusmuistiin nähden on tiedon hidas saantiaika Keskusmuistissa saantiaika on kymmeniä nanosekunteja, luokkaa 10-50 ns Levymuistista saantiaika on luokkaa 5-10 millisekuntia (ms) eli 5,000,000-10,000,000 ns eli 100 000 1M hakua keskusmuistista yhtä levyhakua kohti 19 20 5

Apumuistiin tallennettuja tietoja ei siirretä suoraan apumuistista ohjelman työtilaan vaan siirto tapahtuu puskureiden (buffer) kautta. Kun ohjelma haluaa hakea tietyn tietueen on tietueen sisältävä sivu (page) haettava ensin johonkin puskuriin (buffer frame), jonka jälkeen tietue voidaan siirtää puskurista ohjelman työtilaan. Puskurien koon ja tiedoston sivukoon on vastattava toisiaan. Tiedoston käsittelyä varten on yleensä käytössä usean puskurin puskuriallas (buffer pool). Puskurointi Fyysisen tietokannan ollessa avoinna siihen liittyy keskusmuistissa sijaitseva puskuri. Puskuri (buffer) eli puskuriallas (buffer pool) on sivun kokoisista puskurikehyksistä (buffer frame) koostuva taulukko B[1,2,,N]. Jotta tietokanna sivun p sisältöä voitaisiin lukea tai kirjoittaa on sivu tuotava levylta johonkin vapaaseen puskurikehykseen B[i]. 21 22 Puskurin käsittely Sivun p käsittelyn ajaksi tietokantaa käsittelevä prosessi naulitsee (fix, pin) sivun puskuriin. Jos sivu p ei ole ennestään puskurissa, naulintakutsu fix(p) tuo p:n ensin levyltä puskuriin. Naulittua sivua puskurinhallitsijalla ei ole lupa poistaa puskurista eikä siirtää toiseen paikkaan. Sivun käsittelyn jälkeen prosessi vapauttaa naulinnan kutsumalla unfix(p) kutsulla. Sivu voidaan poistaa puskurista vasta, kun se ei ole enää naulittuna yhdellekkään prosessille. 23 Tiedostorakennetason näkemys: osoitettavissa olevia tietueita 1 2 3 4 5 6 7 puskurinhallintatason näkemys: tietueet sijoitettu sivuille, sivuja käsitellään puskureiden kautta sivu 1 sivu 2 sivu 3 1 2 3 4 5 6 7 puskuri 1 puskuri 2 sivun 2 kopio puskurissa 2 4 5 6 allas tietueen 6 kopio työtilassa 6 24 6

tiedostorakenne.hae_tietue(6) { tiedostorakenne.päättele_sivu_tietueelle(6) -> 2 puskurinhallinta.anna_sivu(2) { jos sivu 2 ei ole missään puskurissa puskurinhallinta.valitse_vapaa_puskuri -> 2 puskurinhallinta.lataa_sivu(puskuriin 2 sivu 2) puskurinhallinta.naulitse_sivu_puskuriin puskurinhallinta.palauta_osoitin puskuriin 2 muuten puskurinhallinta.naulitse_sivu_puskuriin puskurinhallinta.palauta_osoitin_puskuriin } tiedostorakenne.päättele_tietueen_sijainti(6) tiedostorakenne.siirrä_tietue_ohjelmamuuttujaan } Myös kirjoitukset levylle tapahtuvat puskureiden kautta. Uusi tai muuttunut tietue siirretään puskuriin. Puskuri merkitään muuttuneeksi. Kun muuttaja on vapauttanut puskurin, puskurienhallinta siirtää puskurisa olevan sivun aikanaan levylle. Muutos voi kasvattaa sivun sisältöä niin, ettei se enää mahdu puskuriin. Tällöin otetaan tyypillisesti käyttöön ylivuotosivu, joka linkitetään alkuperäiseen sivuun. 25 26 Tietueen pituus kasvaa: Levyn tilanne hetkellisesti erilainen kuin puskureiden sivu 4 sivu 1 sivu 2 sivu 3 sivu 1 sivu 2 sivu 3 1 2 3 4 5 6 7 1 2 3 4 5 6 7 puskuri 1 puskuri 2 puskuri 1 puskuri 2 linkki allas 4 5 6 sivun 2 kopio puskurissa 2 korvaava: 6* 27 allas 6B sivun 4 kopio (2:n ylivuoto) 4 5 6A sivun 2 kopio puskurissa 2 puskurissa 1 6A jaettu 6B 28 7

Sivulla voi olla useita tietueita tai Tietue voi jakautua useille sivuille. Sivukoko on ohjelmallisesti määriteltävä suure, olisi luontevaa että se olisi levyjakson koon monikerta. Jos tietue jakautuu useille sivuille käytetään usein edellisen kuvan mallin mukaista ylivuotosivua Yleensä tietoa levy-yksikön ja puskureiden välillä siirretään sivu kerrallaan yhteen puskuriin. Joissain järjestelmissä on mahdollista siirtää samassa operaatiossa useamman sivun ryväs (cluster) peräkkäisissä muistiosoitteissa oleviin puskureihin. hae tietue hae seuraava poista tietue tiedostorakennetaso hae sivu vie sivu puskurien hallinta 29 30 Salpauskäytäntö Tiedostorakennetason käsittelyssä haku operaation hakukriteerinä voi olla jonkin tietoalkion arvo. Puskuritason hakuoperaatiossa sivu haetaan sivuosoitteen perusteella. Puskureiden ja apumuistin väliseen tiedonsiirtoon käytetään erillistä I/Oprosessoria. Täten yhdessä puskurissa olevaa tietoa pystytään käsittelemään samanaikaisesti kun toiseen puskuriin kohdistuu tiedonsiirtoa. 31 Fyysisen tietokannan eheyden säilyttämiseksi tietokantasivua käsittelevän prosessin on aina salvattava (latch) naulitsemansa sivu käsittelyn ajaksi. Lukusalpa (read latch) oikeuttaa lukemaan sivua ja estää samanaikaisesti päivittämästä sivua. Kirjoitussalpa (write latch) oikeuttaa kirjoittamaan sekä lukemaan sivua ja estää samanaikaisen lukemisen sekä kirjoittamisen. Salvan haltijan on vapautettava (unlatch) salpa sivun käytön jälkeen. Salpa toteutetaan puskuroituun sivuun liittyvän semaforin avulla. 32 8

Hakuaika Levyltä hakemiseen kuluva aika muodostuu: hakuvarren siirtoajasta eli kohdistusajasta (seek time, st) (sylinterille siirtyminen). aika riippuu siitä millä sylinterillä päät ovat alunperin, lyhyt siirtymä vie vähemmän aikaa, 0 levykohtainen maksimi. Usein ilmoitetaan vain keskimääräinen kohdistusaika esim. 6 ms. pyörähdysviiveestä (rotational delay, rd). Jakson siirtoaika (block transfer time, btt). Pyörähdysviive Jos levyn pyörimisnopeus on p kierrosta minuutissa (rpm), niin keskimääräinen pyörähdysviive on rd = (1/2)*(1/p) min = (60 * 1000)/(2*p) ms Pyörimisnopeudella p=3600 rpm on rd = 8,3 ms. 33 34 Jakson siirtoaika 1/2 Jakson siirtoaika 2/2 Aika, joka kuluu jaksoon kuuluvien sektoreiden kulkemiseen luku-/kirjoituspään ohitse. Vaihtelee jakson koon, uran koon ja pyörimisnopeuden perusteella. = levyn täyden kierroksen pyörähdysaika kerrottuna jakson pituuden suhteella koko uran pituuteen. Jos uran koko on 50 KB ja p on 3600 rpm, siirtonopeus (transfer rate, tr) on tr = (50 * 1000) / (60 * 1000/3600) = 3000 tavua/ms Jakson siirtonopeus on tällöin btt = B / tr ms ( B on jakson koko) Jakson saannin koko kustannus on siis hakuajan, pyörähdysviiveen ja siirtoajan summa st + rd + btt 35 36 9

k-lohkon siirtoaika Haettaessa k lohkoa, lohkojen yhteenlaskettu saantiaika on enintään k*(st+rd+btt), jos lohkot sijaitsevat satunnaisesti levyllä st+k*(rd+btt), jos lohkot sijaitsevat satunnaisesti samalla sylinterillä ja minimissään st+ rd + k * btt, jos lohkot ovat peräkkäin samalla sylinterillä Kaavojen tekijöistä st ja rd ovat samaa millisekunneissa mitattavaa kokoluokkaa ja btt noin tuhannesosa niistä (mikrosekunteja) Jos st=5ms, rd=5ms ja btt=0.02 ms ja k=1000, niin kokonaissaantiajan vaihteluväli olisi 0.030s - 10.02s Massasiirtoaika Jos G on jaksoväli tavoissa, peräkkäisten jaksojen massasiirtonopeus (bulk-transfer rate, btr) ilmaisee hyödyllisten tavujen siirtonopeuden. btr = (B / ( B + G)) * tr tavua/ms 37 38 Tiedostot Sivun sisäinen rakenne Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa tiedot tiedostoon kuuluvista lohkoista esim. taulukkona, joka voi muodostua ketjutetuista osista tietoja tietueiden rakenteesta muuta hallintatietoa Sivulla on ainakin: otsikkotietue sivun hallintaan tarvittavaa tietoa tietuealue itse tietueet ja vapaata tilaa tietuehakemisto tietueiden sijaintitiedot sivulla 39 40 10

Sivun sisältöä 1/2 Sivun alun otsikkotietue (header) sisältää vähintään seuraavat osiot: 1) Sivun tunniste 2) Sivun tyyppi (relaatiosivu, ryppään sivu, hakemistosivu, vapaata tilaa, tietohakemistosivu) 3) Relaation, hakemiston, tms. sisäinen tunniste. 4) Linkkejä muihin sivuihin (sivutunnisteita) 5) Sivun tietuehakemiston alkioiden lukumäärä 6) Sivun vapaan tilan hallintaan tarvittavaa tietoa 7) Sivun viimeisimmän päivityksen lokikirjauksen järjestysnumero (page log-sequence number, Page-LSN) Sivun sisältöä 2/2 Sivun tietuealue sisältää sivun varsinaisen tiedon, tietosivun tapauksessa sivulle sijoitetut loogisen tietokannan monikot. Tietuealuetta täytetään otsikkotietueen jälkeen sivun alusta lukien. Sivun tietuehakemisto on sivun lopussa sijaitseva taulukko r, jonka alkio r[i] sisältää tietuealueen i:nnen tietueen tavusiirtymän tietueen alusta lukien. Tietuehakemistoalue täytetään sivun lopusta alkuun päin. 41 42 Sivun rakenne Tietueen rakenne Tietueen tunnisteen (record identifier, RID) muodostaa pari sivutunniste tietueen indeksi (tietuehakemistossa) Tuple identifier (TID) = record identifier Samassa tiedostossa olevat tietueet voivat olla keskenään saman pituisia, eli kiinteäpituisia (fixed length) vaihtuvapituisia (variable length) Erityyppisiä esim. kurssitietueita ja osallistujatietueita. Saman tyyppisiä, mutta tietokenttien pituus tai määrä vaihtelee. Tietueessa voi olla kiinteäpituisia tai vaihtuvapituisia kenttiä, yksikin vaihtuvapituinen kenttä tekee tietueesta vaihtuvapituisen. 43 44 11

Tietueen rakenne Kiinteäpituinen kenttä on jokaisessa tietueessa saman pituinen smallint, integer, float, double, date ja timestamp tyyppiset arvot tallennetaan tyypillisesti (ei kuitenkaan välttämättä) kiinteäpituisiin kenttiin. SQL:n tietotyyppi char määrittelee kiinteänpituisen merkkijonon. Sillekin kiinteäpituinen kenttä soveltuisi Tietueen rakenne Vaihtuvapituisia kenttiä käytetään tyypillisesti tilanteissa, joissa tietoalkioiden arvot vaihtelevat merkittävästi pituudeltaan Esimerkiksi vaihtuvapituiset merkkijonot Yleensä vaihtuvapituisilla kentillä pyritään säästämään tilaa, mutta tilansäästöä voidaan saada muutenkin esimerkiksi tiivistämällä tietueet 45 46 Kiinteämittaiset kentät Vaihtuvanmittaiset kentät F1 F2 F3 F4 L1 L2 L3 L4 Kaksi mahdollista toteutusta (# kenttä on vakiomittainen): F1 F2 F3 F4 4 $ $ $ $ Kentät erotettu erikoismerkillä # kenttien lkm Alkuosoite (B) Osoite = B+L1+L2 F1 F2 F3 F4 i:nen kentän etsiminen ei vaadi peräkkäishakua. Siirtymätaulukko 47 48 12

Kiinteämittaiset kentät: sivun sisältö Vaihtuvanmittaiset kentät: sivun sisältö Paikka 1 Paikka 2 Paikka N Paikka 1 Paikka 2 Vapaata...... tilaa Paikka N Rid = (i,n) Rid = (i,2) Rid = (i,1) Pagei pakattu N tietueden lkm Paikka M * rid= <sivuid, paikka #>. 1... 0 1 1 M M... 3 2 1 Pakkaamaton, bittikartta Paikkojen lkm 20 16 24 N N... 2 1 # paikka Tietuehakemisto Osoite Vapaan Tilan alkuun 49 50 Oracle Oraclen tietuerakenteessa kaikki kentät ovat periaatteessa vaihtuvapituisia/valinnaisia Kentät esiintyvät tietueessa siinä järjestyksessä, missä ne on esitelty create table -lauseessa (myöhemmät lisäykset tietueen loppuun). Kunkin kentän alussa on pituus 1-3 tavuna alle 250 pituiset yhdellä tavulla yli 250 kolmella tavulla, ensimmäisen pituustavun arvo 255 kertoo, että 2 seuraavaa sisältävät pituuden Jos kenttä on tyhjä (null), niin pituus on 0. 51 13