Tietokannan hallinta, s. 2001

Lukuun 2 liittyviä kommentteja (HE 18.9.01)

Peruskäsitteet:

Sivu, jakso (ja lohko) esiintyvät usein likimain synonyymeinä. Yhteydestä riippuen tulee aina pitää mielessä, tarkoitetaanko levyjaksoa tietokannan jonkin sivun tallennuspaikkana vai sivua itseään sisältöineen. (s. 3)

Vastaavasti tietueen sijoittaminen sivulle t. jaksoon: korostettaessa tietueen paikkaa (säilytystilaa) tulisi oikeastaan puhua 'tietueen paikasta', jolle ei kuitenkaan ole hyvää suomenkielistä termiä. Eräissä oppikirjoissa käytetään termiä 'slot' ("a page is a collection of slots, each of which contains a record"). (s. 9-11)

Tietueen osoitteeksi mainitaan (s. 3) sivunumero tai pari (sivu, tietue). Edellisessä tapauksessa tietue joudutaan etsimään sivulta (mutta se on keskusmuistioperaationa nopeaa levyhakuun verrattuna).

Puskurien käyttö:

Tätä käsitellään kurssilla epätarkasti (verrattuna esim. käyttöjärjestelmän puskurinhallintaan). Suorituskyvyn (kyselyn toteuttamiseen kuluvan ajan) kannalta olennaista on, onko sivu jo valmiiksi puskurissa vai tuleeko se juuri tätä kyselyä varten hakea levyjaksosta (levyn ja keskusmuistin nopeuksien kertaluokkaero!).

Bufferunfix-operaation kohdalla (s. 7) mainittu 'epämääräisyys' ("jaksoa ei välttämättä siirretä heti levylle" jne) jättää avoimeksi sen, millä perusteella ja missä vaiheessa jakso siirretään ja tila vapautetaan. Tähän palataan hakemistorakenteiden yhteydessä sekä kurssin loppupuolella tapahtumanhallinnan yhteydessä (menemättä silloinkaan aivan yksityiskohtiin). Puskurin koko on tärkeä suorituskyvyn parametri.

Tietokantasovelluksen suorituskyky (s. 12):

Laitteistosta riippumattomuus tarkoittaa sitä, että levyhakujen määrä perustuu rakenteen loogisiin ominaisuuksiin (mitä hakemistotasoja jne) ja sen käyttöönoton idea on pyrkimys laitteiston ominaisuuksista riippumattomaan arviointiin. Todellinen suoritusaika tietysti riippuu esim. levylaitteiston parametreista.

Binäärihaku (lienee käsitelty tietorakenteissa ja jopa ohjelmointikurssilla?): Käy kertauksen vuoksi läpi jokin esimerkki, esim. haku 100 tietueen (25 jakson) tiedostosta, jossa on järjestysavaimina sukunimiä, seuraavasti:

A-alkuisia 20, B- alkuisia 16, edelleen: C-: 12, D-: 4, E-: 1, F-: 5, G-: 2 sekä kirjaimilla H,I,J,K,L,M,N,O,P ja Q alkavia kutakin 4 kpl.

Jaksossa on siis 4 tietuetta. Millaisten vaiheiden jälkeen "Lahtinen" löytyy? Montako levyhakua tarvitaan?

Lomitusalgoritmi (s. 25) on tärkeä (ja yleinen). Se voi jäädä tässä vaiheessa "hautumaan" - palataan sovellustilanteiden yhteydessä.

Hajautus: ideana on jakaa tietueet B "osatiedostoon", joita voidaan käsitellä kutakin erikseen kuten kasarakenteista tiedostoa. (Järjetetty peräkkäisrakenne tietysti käy myös, mutta siitä tuskin on hyötyä, koska kasat (tässä solut) ovat yleensä pieniä eli jaksojen määrä on pieni.

Korjaus/tarkennus sivulle 29: poisto-operaatio muulla kuin avaimeen liittyvällä ehdolla: tässä rajoitutaan kuitenkin vain yhden solun läpikäyntiin eli solu olisi valittava ensin avaimeen perustuvalla hajauttimella. Tämä kohta on siten epäselvä/keinotekoinen ja voidaan unohtaa.

s. 31: Jos soluilla on yhteiset ylivuotojaksot, onko tietueosoitteiden käyttö välttämätöntä (vai riittääkö jakso-osoite tässäkin tapauksessa)?