HELIA Tiko -05 1 (23) Tieto ohjelmassa ja tietokoneella Tiedon 3-tasomalli...2 Tieto käsitetasolla...3 Tieto loogisella tasolla...4 Tieto fyysisellä tasolla...5 Muistit...6 Päämuisti...6 Apumuisti...6 Tiedon tallennuksen yksiköitä...7 Looginen taso...7 Tiedosto...7 Tietue...7 Kenttä...7 Avain (pääavain)...7 Tietotyyppi...9 Merkistöt... 10 Fyysinen taso... 11 Yhteensovitus... 12 Tiedosto-organisaatio ja saantimenetelmät... 14 Järjestämätön peräkkäistiedosto... 15 Järjestetty peräkkäistiedosto... 16 Hajarakenne... 17 Indeksointi... 19 Päähakemisto... 21 Toisiohakemisto... 22 Indeksoitu peräkkäistiedosto... 23
HELIA Tiko -05 2 (23) Tiedon 3-tasomalli Tietoa käsiteltäessä tietoa voidaan tarkastella kolmella eri abstraktiotasolla: 1. Käsitetaso 2. Looginen taso 3. Fyysinen taso Käsitteellinen taso Mitä? Tiedon nimi, ja merkitys; arvoalue riippumaton toteutusratkaisuista Looginen taso Mitä & Miten? Tiedon esitys valitulla tietomallilla / ohjelmassa sidottu käytettävään tietomalliin / ohjelmaan Fyysinen taso Miten? Tiedon esitys fyysisellä tallennusvälineella sidottu käytettävään toteutusympäristöön
HELIA Tiko -05 3 (23) Tieto käsitetasolla Käsitetasosta käytetään myös nimitystä kohdetaso täysin ohjelmistoista riippumaton kohdealueen tietojen esitys käsitetasolla tärkeitä kysymyksiä ovat mm.: o Mistä kohteista tietoja tallennetaan? o Millaisia ominaisuuksia / tietoelementtejä ko.kohteilla on? o Miten tiedot liittyvät yhteen? o Millaisia arvoja ominaisuudet / tietoelementit voivat saada? o Mitä sääntöjä tietoihin liittyy? Esim: Kohde Asiakas ominaisuudet Asiakkaan nimi Yhteyshenkilön nimi Yhteyshenkilön puh PostiOsoite LaskutusOsoite Y-tunnus yhteydet Kohde: tilaus
HELIA Tiko -05 4 (23) Tieto loogisella tasolla Loogisesta tasolta käytetään myös nimitystä rakennetaso Millaisia rakenteita tiedot muodostavat? Esimerkiksi ohjelmointikielet näkevät tiedon tietynlaisina tietorakenteina ja tietotyyppeinä, joita ne voivat käsitellä. Tiedon rakenteiseen kuvaamiseen käytetään jotain tietomallia. (Tällä kurssilla opiskellaan mm. relaatiotietomallin perusteet.) Esim. relaatio Oppilas
HELIA Tiko -05 5 (23) Tieto fyysisellä tasolla Fyysisestä tasosta käytetään myös nimitystä talletustaso Millaisina fyysisinä rakenteina tieto on tallennettu tietokoneelle (sivut, tavut, bitit jne.)? Miten tehostaa tiedon hakua tietokoneen apumuistista (hakemistorakenteet l. indeksit)? Loogisen ja fyysisen tason raja on joskus häilyvä
HELIA Tiko -05 6 (23) Muistit Päämuisti Keskusmuisti, Primary Storage Nopea Pieni Kallis Epäluotettava: Sisältö säilyy sähkön avulla (volatile) Kaikki tiedon käsittely tapahtuu keskusmuistissa Käsittelyä varten tiedot on noudettava apumuistista keskusmuistiin Kehitteillä on myös uusia ratkaisuja, jossa koko tietokanta voisi sijaita keskusmuistissa Apumuisti Secondary storage Muistivälineet Magneettilevyt Optiset levyt Magneettinauhat Suuri Hidas Halpa Luotettava: Sisältö säilyy sähkön saannista riippumatta (non-volatile)
HELIA Tiko -05 7 (23) Tiedon tallennuksen yksiköitä Looginen taso Tiedosto Joukko tietoja, jotka on tallennettu samaan paikkaan tietovälineellä ja jolla on nimi Esim. Henkilötiedosto Tiedosto koostuu yhdestä tai useammasta tietueesta Tietue Yhteen yksilöön, tapahtumaan tms. liittyvät tiedot samassa yhteydessä esitettynä Esim. yhden henkilön tiedot Tietue koostuu yhdestä tai useammasta kentästä Kenttä Kenttä sisältää tietoalkion Tietoalkio = Pienin merkityksen omaava tiedon yksikkö Esim. postinumero Avain (pääavain) Tietueen yksilöivä tieto Voi koostua yhdestä tai useammasta kentästä
HELIA Tiko -05 8 (23) Esim: tietue Hlono Etunimi Sukunimi Katuosoite postino 2565 Seija Teikäläinen Ratapiha 3 56000 2566 Maija Heikälainen Puistokatu 3 B 2567 Matti Meikälainen Fredrikinkatu 32 H 1 02450 00150 kenttä
HELIA Tiko -05 9 (23) Tietotyyppi Tietueen kentälle määritellään tietotyyppi Tietokoneessa kaikki tiedot, esitetään bittijonoina ja koneen kannalta bittijono on vain bittijono. Ihmisen / ohjelmoijan kannalta tietyt bittijonot esittävät kokonaislukuja / desimaalilukuja /merkkejä siis tiedoilla on jokin tyyppi (type). Tietotyyppi määrittää 1. millaisia arvoja tieto voi saada 2. millaisilla operaatioilla sitä voi käsitellä Eri tiedonhallintajärjestelmät, sovelluskehittimet ja ohjelmointikielet tuntevat hieman erilaisia tietotyyppejä Järjestelmä pystyy tarjoamaan automaattisesti tiedon sisältöön ja siihen kohdistettuihin operaatioihin liittyviä tarkistuksia (ts. niitä ei tarvitse itse ohjelmoida) Tavallisimmat tietotyypit Teksti / merkkijono varchar / char/ Luku number Kokonaisluku integer Desimaaliluku decimal Päivämäärä date Totuusarvo boolean
HELIA Tiko -05 10 (23) Merkistöt Merkistö on sopimus, joka määrittelee, miten eri bittiyhdistelmät (binääriluvut) tulkitaan eri merkeiksi. Merkistöjä on käytössä useita erilaisia johtuen merkistösopimusten syntyhistoriasta. 7 bittinen ASCII 60-luvulla Yhdysvalloissa kehitetty merkistö soveltuu amerikanenglannin kirjoittamiseen, mutta siinä ei ole monissa muissa kielissä tarvittavia kirjaimia (esim. ä,ö). 8-bittiset ISO 8859 merkistöt: Länsi-Eurooppa, Itä-Eurooppa, Pohjois-Eurooppa, Arabia, Kreikka, Thai jne. Unicode merkistö (esim. 16 bittinen) kattaa suurimman osan maailman kirjoitettujen kielten merkeistä. yksilöivä koodiarvo yli 90 000 kirjoitusmerkille UTF-8, UTF-16, UTF-32 Unicode tuki laajenee eri käyttöjärjestelmissä, ohjelmistokehitysympäristössä (on esim. Windows XP:ssä, ei 9x-versioissa.) Unicode provides a unique number for every character, no matter what the platform, program, nor language.
HELIA Tiko -05 11 (23) Fyysinen taso Bitti (Bit) Tietokoneen sisällä kaikki tieto esitetään 0 ja 1 koostuvina sarjoina ns. binäärilukuina Bitti pystyy tallentamaan yhden binäärinumeron siis bitin arvo voi olla joko 0 tai 1 Tavu (Byte) 8 bittiä Merkin tallennus vaatii 1-2 tavua ( 8-16 bit) Muistien koko ilmoitetaan yleensä tavuina A4:lle mahtuu n. 2 kilotavua (2 * 1024 tavua); yhteen megaan mahtuu siis n. 500 A4-arkkia Sana 1 tavu 8-bittisissä ympäristöissä 2 tavua 16-bittisissä ympäristöissä 4 tavua 32 bittisissä ympäristöissä 8 tavua 64-bittisissä ympäristöissä Sivu / Lohko (Page / Block) Yksikkö, joka siirretään kerrallaan apumuistista keskusmuistiin (ja päinvastoin) Fyysinen tietue Koko vaihtelee käyttöjärjestelmän ja laitteistoalustan mukaan
HELIA Tiko -05 12 (23) Yhteensovitus TIEDOSTO 1 1 0..* TIETUE 0..* 1..* 1..* SIVU 1 1 1..* KENTTÄ 1 1..* * TAVU 1 * BITTI Sivuun voi mahtua 1 tai useampi tietue, joskus tietue voi olla niin suuri, että sen tallennukseen tarvitaan useampi sivu Tietueen koko muodostuu kenttien kooista Kenttien koko ilmoitetaan tietotyypin (ja pituuden) avulla Tietotyyppi ja pituus ratkaisevat kentän tallennukseen tarvittavien tavujen määrän Tiedoston kuvaaja (File Header, File Descriptor) Sivujen osoitteet Tietueen kuvaus (kentät, pituudet, tyypit, järjestys, mahd. erotinmerkit)
HELIA Tiko -05 13 (23) Tietueen koko Kiinteämittainen tietue Tiedoston kaikki tietueet ovat saman mittaisia Kaikissa tietueissa on sama määrä kenttiä Vaihtuvamittainen tietue Tiedoston tietueet ovat eri mittaisia se. Tietueissa voi olla eri määrä kenttiä Kentän koko Kiinteämittainen kenttä Kentälle on määritelty kiinteä pituus Esim. char(30) Vaihtuvamittainen kenttä Kentän pituus voi vaihdella Esim. varchar(200)
HELIA Tiko -05 14 (23) Tiedosto-organisaatio ja saantimenetelmät Tiedosto-organisaatio Miten tiedot on fyysisesti järjestetty tiedostoon Saantimenetelmä Miten tietoja voidaan hakea tiedostoista ja tallentaa tiedostoihin Perustyypit 1. Peräkkäishaku 2. Suorasaanti Indeksoitu peräkkäistiedosto Hajarakenne (hash file) Käytettävissä olevat saantimenetelmät riippuvat tiedoston organisointitavasta
HELIA Tiko -05 15 (23) Järjestämätön peräkkäistiedosto Sequential file/ Heap file Yksinkertaisin organisointitapa Tietueet varastoidaan siinä järjestyksessä kuin ne ilmaantuvat 1. Uusi tietue sijoitetaan tiedoston loppuun (viimeiselle sivulle) 2. Jos sivulla ei ole tilaa, lisätään tiedostoon uusi sivu Poistetun tietueen varaamaa tilaa ei käytetä uudestaan -> tiedostoalue reikiintyy Reikiintynyt tiedosto voidaan uudelleenorganisoida määräajoin Ainut saantimenetelmä on peräkkäishaku Lisääminen on tehokasta Tietyn tiedon haku hidasta (esim. tiedon lukua, päivitystä, poistoa varten) Suurten tietuemäärien luku nopeaa Autotiedosto 1 0011 Volvo 1 0235 Audi n 0551 Renault n 1011 Toyota
HELIA Tiko -05 16 (23) Järjestetty peräkkäistiedosto Sorted file Tietueet lajitellaan yhden tai useamman kentän arvojen perusteella Tyypillisesti lajitteluperusteena käytetään pääavainta Tietueiden lisääminen ja poistaminen on järjestetyssä peräkkäistiedostossa ongelmallista, koska tietueiden järjestys on ylläpidettävä Tietyn tiedon haku puolitushakuna (esim. tiedon lukua, päivitystä, poistoa varten) Yleensä nopeampi kuin peräkkäishaku 2 4 6 8 15 19 20 22 25 27 Suurten tietuemäärien luku nopeaa (peräkkäishakuna) Järjestettyyn peräkkäistiedostoon liitetään usein indeksi (ks. Indeksoitu peräkkäistiedosto)
HELIA Tiko -05 17 (23) Hajarakenne Hash file Tietueita ei kirjoiteta tiedostoon peräkkäin Tietueet sijaitsevat satunnaisesti talletusalueella eli hajautusalueella Hajautusfunktio (Hash Function) laskee osoitteen johon tietue tallennetaan hajautuskentän perusteella (hash field) Hajautusfunktio valitaan siten, että tietueet jakautuvat tiedostossa mahdollisimman tasaisesti Ongelma on, että hajautusfunktiot eivät takaa uniikkiosoitetta Tarvitaan menetelmiä yhteentörmäysten käsittelemiseksi Autotiedosto Hajautin (=funktio) 1 0235 Audi Param. O. 2 1011 Volvo Osoitin ylivuotoalueelle 0551 3 0011 Renault 4 0551 Toyota
HELIA Tiko -05 18 (23) Tietyn tietueen haku erittäin nopeaa, mikäli hajautusfunktion valinta on onnistunut (vain vähän yhteentörmäyksiä) Haku tietyn arvovälin mukaan hidasta Haku muun kuin hajautusavaimen mukaan hidasta Suuren tietuemäärän haku peräkkäishakuna
HELIA Tiko -05 19 (23) Indeksointi Indeksi on tietorakenne, joka mahdollistaa tietyn tietueen paikallistamisen nopeasti peräkkäistiedostosta Vrt. Kirjan hakemisto Datatiedosto (Data File) sisältää loogiset tietueet Hakemistotiedosto / Indeksitiedosto (Index File) sisältää indeksitietueet Indeksitiedoston tietueessa on 2 kenttää: 1. hakukenttä (Indexing Field) 2. osoitekenttä, jonka arvona on sen lohkon osoite, missä hakukenttää vastaava tietue sijaitsee Indeksitiedoston tietueet on järjestetty hakukentän (Indexing Field) mukaan (järjestetty peräkkäistiedosto) Autotiedosto Indeksi 1 0011 Volvo 0011 1 1 0235 Audi 0235 1 n 0551 Renault 0551 n n 1011 Toyota 1011 n
HELIA Tiko -05 20 (23) Indeksitiedosto on yleensä huomattavasti pienempi kuin datatiedosto Indeksitiedostoa (tai osia siitä) voidaan säilyttää väliaikaisesti keskusmuistissa Haku indeksoidun kentän mukaan nopeaa Uusien tietueiden lisäys ja poisto työläämpää Datatiedoston lisäksi päivitettävä indeksitiedostoa
HELIA Tiko -05 21 (23) Päähakemisto Primary Index Datatiedosto on lajiteltu peräkkäistiedosto joka on järjestetty pääavaimen mukaan Pääindeksin hakukenttänä on datatiedoston pääavain Pääindeksin hakukentän arvot ovat uniikkeja / yksilöiviä Autotiedosto Pääindeksi 1 0011 Renault 0011 1 2 0235 Audi 0235 2 3 0551 Toyota 0551 3 4 1011 Volvo 1011 4 5 1200 Renault 1200 5... Pääavain
HELIA Tiko -05 22 (23) Toisiohakemisto Secondary Index Indeksi on määritelty datatiedoston kentästä, jonka mukaan datatiedostoa ei ole järjestetty (ei pääavaimen mukaisesti) Toisiohakemiston hakukentän ei tarvitse sisältää uniikkiarvoja Toisioavaimeksi valitaan kenttä / kenttiä, joiden perusteella tietoa haetaan usein Esim. Henkilön nimi Autotiedosto Toisioindeksi 1 0011 Renault Audi 2 2 0235 Audi Renault 1 3 0551 Toyota Renault 5 4 1011 Volvo Toyota 3 5 1200 Renault Volvo 4...
HELIA Tiko -05 23 (23) Indeksoitu peräkkäistiedosto Indexed sequential files Datatiedosto, jolle on määritelty pääindeksi Rakenne yhdistää peräkkäiskäsittelyn ja suorasaannin saantimenetelmät Nykyään eniten käytetty tiedosto-organisaatio