Luento 2: Tiedostot ja tiedon varastointi



Samankaltaiset tiedostot
Tieto ohjelmassa ja tietokoneella

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

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

HELIA 1 (15) Outi Virkki Tiedonhallinta

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

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja

OpenOffice.org Base 3.1.0

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

D B. Tiedostojen käsittely

Java-kielen perusteet

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

Tieto- ja tallennusrakenteet

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

Java-kielen perusteet

HELIA 1 (1) Outi Virkki Tiedonhallinta :43

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

Suurten asiakasriskien ilmoittamiseen liittyvät konekielisen tietojenvälityksen ohjeet

A TIETORAKENTEET JA ALGORITMIT

Tiedonhallintajärjestelmän rakenne ja Suorituskyky

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

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

Algoritmit 2. Luento 4 To Timo Männikkö

Algoritmit 2. Luento 4 Ke Timo Männikkö

3. Tietokannan hakemistorakenteet

3. Tietokannan hakemistorakenteet

Käsiteanalyysi prosessina ja tarveanalyysi

KÄSITEANALYYSI PROSESSINA JA TARVEANALYYSI

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

CSE-A1200 Tietokannat

Tietokannanhallintajärjestelmä (DBMS)

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

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

18. Abstraktit tietotyypit 18.1

Ohjelmoinnin perusteet Y Python

D B. Harvat hakemistot. Harvat hakemistot

HELIA 1 (17) Outi Virkki Tiedonhallinta

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

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

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

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

HELIA 1 (11) Outi Virkki Tiedonhallinta

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Tietokanta (database)

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

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

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Hakemistotyypeistä. Hakemistorakenteet. Hakemiston toteutuksesta. Hakemiston toteutuksesta

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

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Java-kielen perusteet

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

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

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

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

2. Tietokannan tallennusrakenteet

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Taulukot. Jukka Harju, Jukka Juslin

5.6. C-kielen perusteet, osa 6/8, Taulukko , pva, kuvat jma

FYYSINEN SUUNNITTELU

Tiedon esitysmuodot. Luento 6 (verkkoluento 6) Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

6. Muuttujat ja Java 6.1

ECDL Tietokannat. Copyright 2015 ECDL Foundation ECDL Tietokannat Sivu 1 / 7

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

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

A TIETORAKENTEET JA ALGORITMIT

TIETOKANTOJEN PERUSTEET MARKKU SUNI

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

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

HELIA TiKo-05 1 (10) Outi Virkki ICT03D Tieto ja tiedon varastointi yrityksessä

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


Ylläpitopalvelu. Tietuekuvaus. Tietuekuvaus 1 (8) Ylläpitopalvelu. Julkinen - Public

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

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

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Nr FINANSSIVALVONTA Ohje/Liite (5) PL 103, Helsinki Dnro 6/179/96

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit:

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

6. Muuttujat ja Java 6.1

Pikaohje formaatin valmistamiseen

Ryhmäkirjeen hyödyntäminen

Tietokantojen suunnittelu, relaatiokantojen perusteita

Tietokoneen muisti nyt ja tulevaisuudessa. Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu

Listarakenne (ArrayList-luokka)

Tietorakenteet ja algoritmit - syksy

Päivityspalvelu. Tietuekuvaus. Tietuekuvaus 1 (5) Päivityspalvelu. Julkinen - Public

Työasema- ja palvelinarkkitehtuurit (IC130301) Apumuistit. Kiintolevyt. 5 opintopistettä. Petri Nuutinen

Nelli kaukopalvelutyössä

Liitosesimerkki. Esim R1 R2 yhteinen attribuutti C. Vaihtoehdot

Transkriptio:

HELIA 1 (19) Luento 2: Tiedostot ja tiedon varastointi Muistit... 2 Päämuisti (Primary storage)... 2 Apumuisti (Secondary storage)... 2 Tiedon tallennuksen yksiköitä... 3 Looginen taso... 3 Fyysinen taso... 4 Yhteensovitus... 5 Tietueen koko... 6 Kentän koko... 6 Tietotyyppi... 7 Tiedosto-organisaatio ja saantimenetelmät... 8 Järjestämätön peräkkäistiedosto (Sequential file / Heap file)... 9 Järjestetty peräkkäistiedosto (Sorted file)... 10 Hajarakenne (Hash file)... 11 Indeksointi... 13 Päähakemisto (Primary index)... 15 Ryhmähakemisto / Järjestyshakemisto (Clustering index)... 16 Toisiohakemisto (Secondary index)... 17 Indeksoidut Peräkkäistiedostot (Indexed sequential files) 18 Tehtävä... 19

HELIA 2 (19) Muistit Päämuisti (Primary storage) Keskusmuisti 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 3 (19) Tiedon tallennuksen yksiköitä Looginen taso Tiedosto Joukko tietoja, jotka on tallennettu samaan paikkaan tietovälineellä ja jolla on nimi Esim. Osoitetiedosto Tiedosto koostuu yhdestä tai useammasta tietueesta Tietue Yhteen yksilöön, tapahtumaan tms. Liittyvät tiedot samassa yhteydessä esitettynä Esim. osoitetiedot Tietue koostuu yhdestä tai useammasta kentästä Kenttä Kenttä sisältää tietoalkion Tietoalkio = Pienin merkityksen omaava tiedon yksikkö Esim. postinumero

HELIA 4 (19) 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 5 (19) Yhteensovitus Tiedosto Tietue Sivu Kenttä Tavu 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 6 (19) 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 7 (19) Tietotyyppi Tietokoneessa kaikki tiedot, esitetään bittijonoina ja koneen kannalta bittijono on vain bittijono. Ihmisen / ohjelmoijan kannalta tietyt bittijonot esittävät kokonaislukuja, toiset desimaalilukuja, eräät merkkejä, siis tiedoilla on jokin tyyppi (type). Tietotyyppi määrittää millaisia arvoja tieto voi saada ja millaisilla operaatioilla sitä voi käsitellä Eri tiedonhallintajärjestelmät, sovelluskehittimet ja ohjelmointikielet tuntevat hieman erilaisia tietotyyppejä Tavallisimmat tietotyypit Teksti / merkkijono varchar / char/ Luku number Kokonaisluku integer Desimaaliluku decimal Päivämäärä date Totuusarvo boolean

HELIA 8 (19) 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 Käytettävissä olevat saantimenetelmä riippuvat tiedoston organisointitavasta

HELIA 9 (19) Järjestämätön peräkkäistiedosto (Sequential file / Heap file) Yksinkertaisin organisointitapa Tietueet varastoidaan siinä järjestyksessä kuin ne ilmaantuvat Uusi tietue sijoitetaan tiedoston loppuun (viimeiselle sivulle) Jos sivulla ei ole tilaa, lisätään tiedostoon uusi sivu Poistetun tiedoston 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

HELIA 10 (19) 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 11 (19) Hajarakenne (Hash file) Tietueita ei kirjoiteta tiedostoon peräkkäin Tietueet sijaitsevat satunnaisesti talletusalueella eli hajautusalueella Hajautusfunktio (Hash Function) laskee sivun johon tietue tallennetaan hajautuskentän perusteella (hash field) Hajautusalue on jaettu sankoihin (bucket) Bucketti koostuu yhdestä tai useammasta peräkkäisestä lohkosta Yhteen buckettiin mahtuu useampi tietue Hajautusfunktio valitaan siten, että tietueet jakautuvat tiedostossa mahdollisimman tasaisesti Ongelma on, että hajautusfunktiot eivät takaa uniikkiosoitetta Yhteentörmäys (Collision) syntyy, kun tietueilla on sama kotiosoite Myöhemmin tullut tietue, joka ei mahdu ko. bucketosoitteeseen sijoitetaan yleensä ylivuotoalueelle (overflow) Yhteentörmäyksien käsittelyyn on kehitetty erilaisia tekniikoita Vapaa osoitus (1 vapaa paikka) Ketjuttamaton ylivuoto Ketjutettu ylivuoto Monihajautus Autotiedosto Hajautin (=funktio)

HELIA 12 (19) 3 0011 Renault 4 0551 Toyota 1 0235 Audi Param. Os. 2 1011 Volvo Osoitin ylivuoto- 0551 alueelle 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 13 (19) 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 1011 Volvo 0011 3 2 0235 Audi 0235 2 3 0011 Renault 0551 4 4 0551 Toyota 1011 1

HELIA 14 (19) Indeksitiedosto on yleensä huomattavasti pienempi kuin datatiedosto Indeksitiedostoa (tai osia siitä) voidaan säilyttää väliaikaisesti keskusmuistissa Joissakin ympäristöissä indeksi voidaan tallentaa puurakenteena (haku tehokkaampaa) Haku indeksoidun kentän mukaan nopeaa Uusien tietueiden lisäys ja poisto työläämpää Datatiedoston lisäksi päivitettävä indeksitiedostoa

HELIA 15 (19) Päähakemisto (Primary index) Datatiedosto on lajiteltu peräkkäistiedosto joka on järjestetty pääavaimen mukaan Pääindeksin hakukenttänä on datatiedoston 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...

HELIA 16 (19) Ryhmähakemisto / Järjestyshakemisto (Clustering index) Indeksin hakukenttä >< tiedostonavainkenttä Datatiedosto on järjestetty klusteri-indeksin hakukentän mukaan (ei siis pääavaimen mukaan) Klusteri-indeksin hakukentän ei tarvitse sisältää uniikkiarvoja, ts. useampi kuin yksi tietue voi vastata indeksin hakukentän arvoa Autotiedosto Klusteri-indeksi 1 0235 Audi Audi 1 2 0011 Renault Renault 2 3 1200 Renault Renault 3 4 0551 Toyota Toyota 4 5 1011 Volvo Volvo 5... Datatiedostolla voi olla vain yksi päähakemisto tai ryhmähakemisto!

HELIA 17 (19) Toisiohakemisto (Secondary index) Indeksi on määritelty datatiedoston kentästä, jonka mukaan datatiedostoa ei ole järjestetty (ei pääavaimen eikä klusteriavaimen mukaisesti) Toisiohakemiston hakukentän ei tarvitse sisältää uniikkiarvoja Toisioavaimeksi valitaan kenttä / kenttiä, joiden perusteella tietoa haetaan usein Esim. Henkilön nimi Autotiedosto Hakemisto 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 18 (19) Indeksoidut Peräkkäistiedostot (Indexed sequential files) Datatiedosto, jolle on määritelty pääindeksi Rakenne yhdistää peräkkäistiedoston ja suoratiedoston (hash file) saantimenetelmät 1. Peräkkäiskäsittely 2. Suorasaanti kohdistus suoraan yksittäiseen tietueeseen avaimen ja indeksin avulla

HELIA 19 (19) Tehtävä Dataa (järjestämätön peräkkäistiedosto) Lohkoosoite hlo_id sukunimi etunimi... 1 1001 Sato Satu... 1 4004 Neli Niilo... 2 2002 Kakkonen Pikku... 2 3003 Kolmonen Jaakko...... 1. Tee päähakemisto (-indeksi) (Miten käy datatiedostolle?) 2. Tee toisiohakemisto (-indeksi) sukunimen mukaan (Miten käy datatiedostolle?) 3. Tee klusterihakemisto (-indeksi) sukunimen mukaan (Miten käy datatiedostolle?)