Tietokannan hallinta Kevät 2004 Jan Lindström R&G Chapter 1
Tietokannan hallinta 1. Johdanto (käsitteitä) 2. Tietokannan talletusrakenteet 3. Tietokannan hakemistorakenteet 4. Kyselyiden käsittely ja optimointi 5. Tapahtumien hallinta Tietokannan hallinta, kevät 2004, Jan 2
Abstraktiotasot tietoon KÄSITETASO Sisältö ja merkitys ER malli, oliomallit RAKENNETASO Looginen rakenne relaatiomalli, oliomallit FYYSINEN TASO Tekninen rakenne Tietokannan hallinta, kevät 2004, Jan 3
Rakennetaso KÄSITETASO Rakennetasolla näkyvä data on näkymä fyysisellä tasolla tallennettuun dataan RAKENNETASO FYYSINEN TASO Tietokannanhallintajärjestelmän hallinnassa Tietokannan hallinta, kevät 2004, Jan 4
Fyysinen taso KÄSITETASO Tietokannan fyysinen taso voidaan edelleen jakaa useisiin abstraktiotasoihin RAKENNETASO tiedostorakennetaso FYYSINEN TASO Tietokannanhallintajärjestelmän hallinnassa puskuritaso levynhallintataso Tietokannan hallinta, kevät 2004, Jan 5
Käsitteitä Looginen tietokanta (logical database) on loogisen tietokantamallin mukainen kokoelma tietoalkioita. Looginen tietokanta on kokoelma relaatioita (relation) eli tauluja (table), jotka ovat monikoiden (tuple) eli rivien (row) monijoukkoja. Monijoukko (multiset) on järjestämätön joukko, jossa alkio voi esiintyä useita kertoja. Tietokannan hallinta, kevät 2004, Jan 6
Relaatiot Relaation monikot ovat kaikki saman kaavion mukaisia eli samantyyppisiä. Relaatiokaavio (relation schema) R(X) sisältää kaavion nimen R, attribuuttien nimi ja tyyppimääritykset X kaavioon asetettuine rajoitteineen (avain ja viite eheys ym. rajoitteet). Tietokannan hallinta, kevät 2004, Jan 7
Tietokannan hallintajärjestelmä jäsentäjä kustannuslaskenta kyselyn käsittelijä optimoija suorittaja toipumishallinta pääsynvalvonta transaktioiden hallinta tiedostorakenteet puskurien hallinta lukkojen hallinta rinnakkaisuuden hallinta levyjen hallinta Tietokannan hallinta, kevät 2004, Jan 8
Komponentteja 1/2 Jäsentäjä (parser) purkaa SQL kyselyn rakennetason käsittelyoperaatioiksi (vrt. relaatioalgebra) Kustannuslaskenta (operation evaluation) tuottaa arvioita operaatioiden kustannuksista Optimoija (optimizer) laatii kyselylle toteutussuunnitelman (plan) Suorittaja (plan executor) toteuttaa kyselyn suunnitelman mukaisesti Tietokannan hallinta, kevät 2004, Jan 9
Komponentteja 2/2 Oikeuksien hallinta (authorization) varmistaa käyttäjän oikeudet operaatioihin. Transaktioiden hallinta (transaction manager) ja lukkojen hallinta (lock manager) huolehtivat tietokannan rinnakkaiseen käyttöön ja peruutuksiin liittyvistä ongelmista. Toipumisen hallinta (recovery manager) huolehtii häiriötilanteisiin varautumisesta, varmistuksista ja elvytyksestä. Tietokannan hallinta, kevät 2004, Jan 10
Data metadata Tietokantaan tallennettu tieto jakautuu varsinaiseen dataan metadataan = varsinaista dataa ja sen käsittelyä kuvaavaa dataa kaikki tietokantaan liittyvä kuvaustieto tallennetaan erityiseen metatietokantaan tietohakemistoon (data dictionary, catalog) relaatiotietokantojen tapauksessa metatietokanta on myös rakenteeltaan relaatiotietokanta ja siihen voi kohdistaa kyselyjä kuten tavalliseen tietokantaan. Tietokannan hallinta, kevät 2004, Jan 11
Metadata Relaatiotietokannan tietohakemiston rakenne on määritelty tietohakemistonäkyminä SQL 92 standardissa. Kuitenkin esimerkiksi Oracle käyttää yhä omia taulurakenteitaan. Oracle tietohakemistossa user_ alkuiset taulut kuvaavat lähinnä käyttäjän omistamia rakenteita, esimerkiksi user_tables kuvaa käyttäjän taulut (lyhenne tabs) user_tab_columns käyttäjän taulujen sarakkeet user_views käyttäjän määrittelemät näkymät all_ alkuiset taulut kuvaavat kohteita, joihin käyttäjällä on pääsy dba_ alkuiset taulut sisältävät tiedot kaikista tietokannan kohteista. Näihin tauluihin on pääsy vain tietokannan hoitajilla (DBA, database administrator) Tietokannan hallinta, kevät 2004, Jan 12
Esimerkki metadatatasta SQL> desc ALL_TABLES Name Null? Type OWNER NOT NULL VARCHAR2(30) TABLE_NAME NOT NULL VARCHAR2(30) // tilan hallintaan liittyvää tietoa TABLESPACE_NAME VARCHAR2(30) CLUSTER_NAME VARCHAR2(30) IOT_NAME VARCHAR2(30) PCT_FREE PCT_USED // tapahtumien hallintatietoa INI_TRANS MAX_TRANS Tietokannan hallinta, kevät 2004, Jan 13
Esimerkki metadatatasta // jälleen tilanhallintaa INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE FREELISTS FREELIST_GROUPS // elvytystietoa LOGGING BACKED_UP VARCHAR2(3) VARCHAR2(1) Tietokannan hallinta, kevät 2004, Jan 14
Esimerkki metadatatasta SQL> desc all_tab_columns Name Null? Type OWNER NOT NULL VARCHAR2(30) TABLE_NAME NOT NULL VARCHAR2(30) COLUMN_NAME NOT NULL VARCHAR2(30) DATA_TYPE VARCHAR2(30) DATA_TYPE_MOD VARCHAR2(3) DATA_TYPE_OWNER VARCHAR2(30) DATA_LENGTH NOT NULL DATA_PRECISION DATA_SCALE NULLABLE VARCHAR2(1) COLUMN_ID NOT NULL Tietokannan hallinta, kevät 2004, Jan 15
Metadatan käytöstä Metadataa tarvitaan monessa eri yhteydessä jäsentäjä tarvitsee tietoja taulujen ja sarakkeiden nimistä ja tietotyypeistä kustannuslaskenta tarvitsee tietoja esim. taulun rivien lukumäärästä, sarakkeiden arvojen jakautumisesta, taulun sijoittelusta tiedostoihin, hakemistojen olemassaolosta, jne pääsynvalvonta tarvitsee tietoja käyttäjistä ja heidän oikeuksistaan transaktion hallinta tarvitsee dynaamista tietoa istunnoista ja operaatioista lukkojen hallinta tarvitsee tietoja tapahtumien suorittamista operaatioista samoin toipumisen hallinta. Tietokannan hallinta, kevät 2004, Jan 16