1 / 33

3.3. Fyysisen tietokannan suunnittelu

3.3. Fyysisen tietokannan suunnittelu. Fyysisen tason suunnitteluun liittyviä kysymyksiä: Muistilaitteet Tiedosto-organisaatiot Hakemistorakenteet Suunnittelutekniikat. Muistityypeistä.

Download Presentation

3.3. Fyysisen tietokannan suunnittelu

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 3.3. Fyysisen tietokannan suunnittelu Fyysisen tason suunnitteluun liittyviä kysymyksiä: • Muistilaitteet • Tiedosto-organisaatiot • Hakemistorakenteet • Suunnittelutekniikat 4-3-FyysSuunn Teuhola 2012

  2. Muistityypeistä • Tietokoneen muistilaitteiden päätyypit:keskusmuisti(primary storage) ja oheismuisti (secondary & tertiary storage). • Muistihierarkia nopeimmasta hitaimpaan: • Välimuisti (cache, useita tasoja: L1, L2, L3) • Päämuisti (main memory) • Flash-muisti (SSD, solid state drive) • Magneettinen levymuisti (HDD, hard disk drive) • Optinen levymuisti • Magneettinen nauhamuisti 4-3-FyysSuunn Teuhola 2012

  3. Muistityypeistä (jatk.) • Muistit jaetaan edelleen: • Pysyvät (nonvolatile) vs. ‘haihtuvat’ muistit (volatile) • Online- vs. offline-muistit • Tietokannat talletetaan tyypillisesti pysyvään, online-tyyppiseen oheismuistiin. • Muistihierarkian käsittely edellyttää puskurointia eli siirtoa tasolta toiselle isommissa paloissa. 4-3-FyysSuunn Teuhola 2012

  4. Magneettiset levymuistit • Yleisin tietokantojen tallennusväline (toistaiseksi) • Mekaaninen laite: • 1 tai useampia levypintoja (‘levypakka’), jossa tyypillisesti tuhansia uria/pinta. Päällekkäiset urat muodostavat sylinterin. • Liikkuva hakuvarsi, jossa luku-/kirjoituspää;tyypillinen hakuaika (seek) noin 3-10 ms. • Pyörimisnopeus n. 5000-15000 kierrosta/min;pyörähdysviive eli latenssi vastaavasti keskim. 2-6 ms. • Teoreettinen siirtonopeus satoja MB/sek; formatoidulle tiedolle käytännössä noin 50-100 MB/sek. 4-3-FyysSuunn Teuhola 2012

  5. Levymuistin tallennusyksiköt • Perusyksikkö on sektori, yleensä 512 tavua. • Toisaalta levymuisti jakautuu blokkeihin (‘lohko’, ‘jakso’, ‘sivu’), joiden koko kiinnitetään alustuksessa; yleensä 512 - 8192 tavua. • Blokki on siirtoyksikkö oheismuistin ja keskus-muistin välillä. Joissain järjestelmissä useamman lohkon ryväs eli klusterivoidaan siirtää yhtä-jaksoisesti. Blokki on tärkeä yksikkö oheismuistin tietorakenteissa. 4-3-FyysSuunn Teuhola 2012

  6. Puskurointi • Puskuri on keskusmuistin alue, johon levydataa siirretään käsittelyä varten ja josta se kirjoitetaan takaisin päivityksen jälkeen. • Ideana rinnakkaisuus: Puskuria voidaan täyttää/ tyhjentää samalla kun prosessori tekee jotain muuta. Tarvitaan erillinen levyohjain (kontrolleri). • Kaksoispuskurointi: Prosessori käsittelee puskurin A sisältöä ja samanaikaisesti dataa siirretään puskurista/puskuriin B. 4-3-FyysSuunn Teuhola 2012

  7. RAID-levyjärjestelmät • Engl. Redundant Array of Independent Disks • Usean fyysisen levyn muodostama järjestelmä • Rinnakkainen siirto moninkertaistaa nopeuden. • Datan sijoittelussa voidaan soveltaa viipalointia (striping) joko blokkitasolla (yhteenkuuluvat blokit eri levyillä) tai bittitasolla (saman tavun eri bitit eri levyillä). • Redundantti data (esim. ylimääräinen pariteettilevy tai hajautettu pariteettidata) mahdollistaa virheenkorjauksen ja toiminnan jatkumisen, vaikka yksi levy rikkoutuu. 4-3-FyysSuunn Teuhola 2012

  8. Tiedostot ja tietueet • Tietue on looginen (ja usein myös fyysisesti yhtenäinen) tietoalkioiden kokoelma. • Tietoalkiot voivat olla kiinteän tai vaihtelevan mittaisia; erikoistapauksena pitkät tietoalkiot (BLOB = Binary Large OBject), jotka talletetaan yleensä erillisinä. • Relaatiotietokannoissa relaation rivi muodostaa yleensä tietueen. • Tiedosto on samantyyppisten tietueiden kokoelma, esim. relaatio. 4-3-FyysSuunn Teuhola 2012

  9. Tiedoston tietueiden sijoittelu • Peräkkäiskäsittelyn kannalta tietueiden fyysinen vierekkäisyys (samalla uralla/sylinterillä) on edullista. • Päivitysten kannalta hajasijoittaminen on joustavampaa. Tällöin tietueet (blokit) linkitetään osoittimilla loogisesti peräkkäin. • Välimuoto: Peräkkäisten blokkien ryvästys ns. klustereiksi (eli segmenteiksi), jotka ovat varausyksikköjä. Tiedostoon kuuluvat klusterit linkitetään osoittimilla peräkkäin. 4-3-FyysSuunn Teuhola 2012

  10. Tiedosto-organisaatioista:Järjestämättömät tietueet • Engl. heap tai pile • Nopea lisäys: tiedoston loppuun. • Tietueen haku hidasta (peräkkäin) ellei ole apuhakemistoa. • Poisto synnyttää aukon; hoidetaan yleensä merkkaamalla poistot ja suorittamalla silloin tällöin tiedoston uudelleenorganisointi. 4-3-FyysSuunn Teuhola 2012

  11. Tiedosto-organisaatioista:Järjestetyt tietueet • Tietueet voidaan tallettaa jonkin avaimen (esim. relaation pääavaimen) arvojen mukaan nousevaan/ laskevaan järjestykseen. • Haku järjestysavainta käyttäen on selvästi peräkkäis-hakua nopeampaa (puolitushaulla). • Lisäys hankalaa: pitää tehdä oikeaan väliin. • Huom! Järjestettyjä tiedostoja ei tietokannoissa käytetä juuri koskaan ilman ns. primäärihakemistoa, joka tehostaa hakuja entisestään ja mahdollistaa joustavat lisäykset ja poistot. 4-3-FyysSuunn Teuhola 2012

  12. Tiedosto-organisaatioista:Hajautus eli hashing • Tietueen avainarvosta lasketaan jollain hajauttavalla funktiolla sen lohkon (bucket; block) järjestysnumero, johon tietue sijoitetaan. • Edut: Nopea haku, lisäys ja poisto. • Ongelmia: tehoton tilankäyttö (lohkoihin jää tyhjää), toisaalta lohkojen ylivuoto (overflow; hoidetaan ylivuotolohkoilla, joihin linkitys). • Perusmuodossa tilanvaraus on staattinen; dynaamisia hash-organisaatioita on myös olemassa. 4-3-FyysSuunn Teuhola 2012

  13. Hakemistorakenteista • Hakemistot (indeksit) ovat keskeisessä asemassa tietokannan fyysisessä optimoinnissa. • Hakemisto perustuu tiedoston (relaation) jonkin kentän (attribuutin) arvoihin, joiden suhteen hakemisto on yleensä järjestetty. • Hakemisto nopeuttaa ko. kentän perusteella tapahtuvaa hakua, mutta hidastaa päivityksiä. Turhia hakemistoja ei pidä luoda. 4-3-FyysSuunn Teuhola 2012

  14. Hakemistot ja SQL • SQL-standardi ei määrittele hakemistojen luontia tai poistoa, mutta useimmat tietokantajärjestelmät (kuten PostgreSQL) tukevat CREATE INDEX ja DROP INDEX –komentoja (ovat osa skeemanmäärittelykieltä). • Hakemistoja voidaan luoda ja poistaa myös dynaamisesti tietokannan luonnin jälkeen. 4-3-FyysSuunn Teuhola 2012

  15. Hakemistojen päätyypit:1) Primäärihakemisto • Avain-osoitin-pareista muodostuva tiedosto, joka on avainarvojen mukaan järjestetty, kuten varsinainen tiedostokin. • Avainarvojen on oltava yksikäsitteisiä(vrt. relaation pääavain.) • Primäärihakemisto on yleensä harva (sparse; non-dense) eli sisältää vain tiedoston kunkin blokin ensimmäisen/viimeisen avaimen ja osoittimen ko. blokkiin. 4-3-FyysSuunn Teuhola 2012

  16. PostgreSQL ja primäärihakemistot • Taulun luonnin yhteydessä määriteltävä PRIMARY KEY saa aikaan automaattisesti primäärihakemiston luonnin pääavain-sarakkeelle/-sarakkeille. • Muille avaimille (skeemassa määre UNIQUE) luodaan myös automaattisesti hakemisto,jonka avulla järjestelmä valvoo arvojen yksikäsitteisyyttä. 4-3-FyysSuunn Teuhola 2012

  17. Hakemistojen päätyypit:2) Ryvästävä hakemisto • Engl. ‘clustering index’ • Itse tiedosto on järjestetty ryvästävän avaimen arvojen mukaan, eli saman arvon omaavat tietueet peräkkäin. • Avainarvot eivät ole välttämättä yksikäsitteisiä. • Hakemisto sisältää kunkin erillisen avainarvon ja osoittimen sen ensimmäiseen esiintymään tiedostossa (loput esiintymät peräkkäin sen jälkeen). • Tämäkin on ‘harva’ hakemisto (duplikaateilla vain yksi edustaja hakemistossa). 4-3-FyysSuunn Teuhola 2012

  18. PostgreSQL: Ryvästys hakemiston perusteella • PostgreSQL järjestää relaation rivit annetun hakemiston mukaiseen järjestykseen, jos määritelläänCLUSTERrelnimiUSING hakemistonimi; • Hakemisto pitää luoda ensin; relaation automaattisen pääavainhakemiston nimi on relaationimi_pkey. • Ryvästystä ei ylläpidetä dynaamisesti, vaan käsky pitää tarvittaessa toistaa. • Lisäksi kannattaa antaa ANALYZE-komento, jotta optimoija noteeraa ryvästyksen antamat mahdollisuudet. 4-3-FyysSuunn Teuhola 2012

  19. Hakemistojen päätyypit:3) Toisio- eli sekundäärihakemisto • Hakemistoavaimen arvojen ei tarvitse olla erisuuria eri tietueissa. • Hakemisto on avainarvojen mukaan järjestetty, mutta tiedosto ei. • Sekundäärihakemisto on tiheä, eli jokaisella tiedoston avainesiintymällä on jonkilainen vastine hakemistossa. Toteutusvaihtoehdot: • (avainarvo, osoitin) –pari jokaiselle arvoesiintymälle • (avainarvo, osoitinlista) jokaiselle erisuurelle arvolle. 4-3-FyysSuunn Teuhola 2012

  20. PostgreSQL ja toisiohakemistot • Eksplisiittinen luonti, esim.CREATE INDEXnimihakONasiakas(animi); • Myös useamman sarakkeen yhteinen hakemisto:CREATE INDEXosoitehakONasiakas(katu, katunro); • Hakemiston poisto:DROP INDEXnimihak; 4-3-FyysSuunn Teuhola 2012

  21. Monitasohakemistot • Hakemistot ovat avaimen mukaan järjestettyjä tiedostoja, joten niille voi rakentaa ylemmän tason (harvan) hakemiston, joka on oleellisesti pienempi. • Tätä voidaan toistaa, kunnes päädytään riittävän pieneen (esim. yhden levyblokin kokoiseen) hakemistotasoon. • Syntyy puurakenne, jonka solmut ovat levyblokkeja ja tasot avainarvojen mukaan järjestyksessä; ylemmät tasot ‘harvempia’. 4-3-FyysSuunn Teuhola 2012

  22. B-puuhakemisto • Dynaaminen monitasohakemisto • Yleisin versio ns. B+-puu, jolla on seuraavia rakenteellisia ominaisuuksia: • Tasapainoinen (kaikki lehdet samalla tasolla) • Leveä (suuri haarautumisaste) • Puussa yleensä vain 2-4 tasoa; solmut levyblokkeja. • Solmuissa pelivaraa: täyttösuhde 50-100% • Solmuissa avaimia ja osoittimia lapsiin 4-3-FyysSuunn Teuhola 2012

  23. B-puuhakemiston toiminnasta • Tehokas haku: Yksi polku juuresta lehteen, haarautuminen avainarvojen perusteella;2-4 levysaantia (vrt. puun korkeus) • Tehokas peräkkäiskäsittely: lehtisolmut linkitetty järjestykseen. • Lisäysten yhteydessä mahdollisesti ylivuoto ja solmun jako kahdeksi uudeksi. Jakotarve voi siirtyä isäsolmuun  jopa puun korkeuden kasvu. • Poistojen yhteydessä mahdollisesti alivuoto ja solmujen yhdistäminen; jopa puun korkeuden lasku. 4-3-FyysSuunn Teuhola 2012

  24. 29 77 … 7 19 50 54 … 51 54 3 7 12 14 19 24 29 37 44 50 Dataosoittimet tietueisiin/blokkeihin Esimerkki B+-puusta 4-3-FyysSuunn Teuhola 2012

  25. PostgreSQL:n tarjoamat hakemistorakenteet • B-puu oletuksena • Käyttö sekä yhtäsuuruus- että suuremmuus-/pienemmyys-kyselyehdoissa • Hash-hakemisto • Hyödyllinen vain yhtäsuuruusehdoille • Luonti:CREATE INDEXhakON asiakas USING hash (animi); • Lisäksi erikoishakemistoja 4-3-FyysSuunn Teuhola 2012

  26. Havaintoja PostgreSQL:n hakemistoista • Valinta yhtäsuuruusehdolla nopeutuu jopa yli 95% kun ehtoon liittyvälle attribuutille luodaan hakemisto. • Jos liitoskyselyssä on myös valintaehtoja, saadaan lähes vastaavansuuruinen nopeutus. • Sen sijaan relaatioiden täydellinen liitos pää- ja viiteavainten suhteen ei hyödynnä hakemistoja. • Pääavainten perusteella tapahtuva liitos käyttää primäärihakemistoja, ja nopeutuu, jos relaatiot ryvästetään (CLUSTER) pääavainten mukaan. 4-3-FyysSuunn Teuhola 2012

  27. Fyysisen tason tietokantasuunnittelusta • Perustana tietokantaan kohdistuvat käsittely-operaatiot (kyselyt, päivitykset) • Optimointitehtävä: Minimoitava operaatioiden yhteissuoritusaika (painotettuna niiden esiintymistiheyksillä) • Lisäksi joillakin operaatioilla voi olla rajoitettu maksimisuoritusaika. • Kyseessä on vaikea kombinatorinenoptimointi-tehtävä; sille ei useinkaan löydetä tarkkaa (globaalista) optimia. 4-3-FyysSuunn Teuhola 2012

  28. Fyysisen suunnittelun lähestymistapoja • Analyyttinensuunnittelu:Muodostetaan malli ja kustannusfunktio jokaiselle vaihtoehtoiselle talletusrakenteelle, ja suoritetaan likimääräinen optimointi. • Kokeellinensuunnittelu:Kokeillaan erilaisia fyysisen tason ratkaisuja, käyttäen olemassaolevaa tietokannan hallinta-järjestelmää. Monet kyselynoptimoijat antavat SQL-lauseille kestoarvion, vaikkei varsinaista dataa vielä olisi käytettävissäkään.Esim. PostgreSQL: EXPLAIN <SQL-lause>; 4-3-FyysSuunn Teuhola 2012

  29. Fyysisen tason suunnittelupäätöksiä • Tiedosto-organisaation valinta (järjestämätön, järjestetty, hash) & mahdollinen järjestysavain/ hash-avain • Hakemistovalinta (primääri-/sekundääri-hakemistot; hakemisto-organisaatio) • Levyblokin koko (jos voidaan valita) • Sijoittelu eri levy-yksiköille; datan mahdollinen viipalointi RAID-levyille 4-3-FyysSuunn Teuhola 2012

  30. Relaatiotietokannan tehostuskeinoja • Horisontaalinen partitiointi: Erotetaan relaation usein käsiteltävät monikot omaan tiedostoonsa. • Vertikaalinen partitiointi: Erotetaan relaation usein käsiteltävät lyhyet attribuutit omaan tiedostoonsa. • Replikointi eli moninkertainen talletus, esim. tukemaan eri käsittelyjärjestyksiä. • Denormalisointi eli luopuminen korkeammista normaalimuodoista liitosten välttämiseksi; suositeltavaa vain staattisten tietojen yhteydessä 4-3-FyysSuunn Teuhola 2012

  31. Esimerkki horisontaalisesta partitioinnista Esimiehet (käsitellään usein): Muut työntekijät (käsitellään harvemmin): 4-3-FyysSuunn Teuhola 2012

  32. Avain & lyhyet attribuutit Avain & pitkät attribuutit Esimerkki vertikaalisesta partitioinnista 4-3-FyysSuunn Teuhola 2012

  33. Esimerkki denormalisoinnista • Normalisoitu: • Denormalisoitu: FD, staattinen 3NF 4-3-FyysSuunn Teuhola 2012

More Related