Databasedesign HVA? ???? HVORDAN? E/R diagram. Begrepsmessig databasedesign. Logisk databasedesign. Tabeller. Fysisk databasedesign



Like dokumenter
Flerveis søketrær og B-trær

UNIVERSITETET. Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Hashliknende strukturer.

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved

ALGORITMER OG DATASTRUKTURER

Hashing. INF Algoritmer og datastrukturer HASHING. Hashtabeller

DBS16: Disklagring, filstrukturer, hashing

Lars Vidar Magnusson

Dagens temaer. Dagens emner er hentet fra Englander kapittel 11 (side ) Repetisjon av viktige emner i CPU-design.

Flerveis søketrær og B-trær

Forelesning 9 mandag den 15. september

TDT4225 Lagring og behandling av store datamengder

Andre sett obligatoriske oppgaver i INF3100 V2013

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!

1. SQL datadefinisjon og manipulering

Mesteparten av kodingen av Donkey Kong skal du gjøre selv. Underveis vil du lære hvordan du lager et enkelt plattform-spill i Scratch.

Kapittel 14, Hashing. Tema. Definere hashing Studere ulike hashfunksjoner Studere kollisjonsproblemet 17-1

Oppgave 1 a. INF1020 Algoritmer og datastrukturer. Oppgave 1 b

Dagens tema. Flere teknikker for å øke hastigheten

Ordliste. Obligatorisk oppgave 1 - Inf 1020

MAT1030 Forelesning 30

Filsystemet fra innsiden

La oss først se på problemet med objektorientert tankegang. Se figuren under. Konto

Avansert bruk av SQL. Avanserte spørringer Valguttrykk Spørring på spørring Unionspørringer Delspørringer, vekselvirkende delspørringer Kvantorer

Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Trestrukturer Hashliknende strukturer Bitmapindekser

Databaser. Relasjonsmodellen 1 Læreboka: Kap. 2 Relasjonsmodellen Faglærere: Tore Mallaug, Kjell Toft Hansen

Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Trestrukturer Hashliknende strukturer Bitmapindekser

Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Treliknende strukturer Hashliknende strukturer Bitmapindekser

Introduksjon til fagfeltet

Datamodellering med E/R

UNIVERSITETET I OSLO. Indeksering. Hvordan finne et element raskt? Institutt for Informatikk. INF Ellen Munthe-Kaas

Innhold. Virtuelt minne. Paging i mer detalj. Felles rammeverk for hukommelseshierarki Hukommelseshierarki-2 1

Dagens tema. Dagens tema hentes fra kapittel 3 i Computer Organisation and Architecture. Sekvensiell logikk. Flip-flop er. Tellere og registre

Repetisjon: høydepunkter fra første del av MA1301-tallteori.

Fag TDT4145 Datamodellering og databasesystemer Løsningsforslag til øving 3: Algebra og SQL

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Labyrint Introduksjon Scratch Lærerveiledning. Steg 1: Hvordan styre figurer med piltastene

Vekst av planteplankton - Skeletonema Costatum

Eksamen i Algoritmer og Datastrukturer Torsdag 12. januar 1995, Kl

while-økker while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt Eksempel 1: en enkel while-løkke

Eksamensoppgave i TDT4225 Lagring og behandling av store datamengder Kontinuasjonseksamen

Obligatorisk oppgave 1 INF1020 h2005

MAT1030 Diskret matematikk. Kompleksitetsteori. Forelesning 29: Kompleksitetsteori. Dag Normann KAPITTEL 13: Kompleksitetsteori. 7.

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

1. Relasjonsmodellen Kommentarer til læreboka

Dagens temaer. Kort repetisjon. Mer om cache (1) Mer om cache (2) Read hit. Read miss. Write hit. Hurtig minne. Cache

TDT4225 Lagring og behandling av store datamengder

Mer om likninger og ulikheter

Uendelige rekker. Konvergens og konvergenskriterier

STATISTIKK FRA A TIL Å

INF2220: Forelesning 2

Uttrykket 2 kaller vi en potens. Eksponenten 3 forteller hvor mange ganger vi skal multiplisere grunntallet 2 med seg selv. Dermed er ) ( 2) 2 2 4

Algoritmer og Datastrukturer

Visma Enterprise - Økonomi

ENC ENKEL AKSE og KLIPPE LENGDE KONTROLLER for PLATESAKSER

Datamodellering og databaser SQL, del 2

Fortsettelses kurs i Word

Oversikt. INF1000 Uke 6. Objekter, pekere og null. Lese og skrive fra/til fil. Litt om objekter, pekere og null Filer og easyio. Litt mer om tekster

Miniverden og ER- modell

Emnekode: LV121A Dato: Alle skrevne og trykte hjelpemidler

Forelesning 28: Kompleksitetsteori

Oppgave 1 ER- og relasjonsmodell 10 %

PRIMTALL FRA A TIL Å

Generelt om permanent lagring og filsystemer

GAUS - Søketjeneste for godkjenning av utenlandsk utdanning

UNIVERSITETET. Indeksering. Hvordan finne et element raskt? Vera Goebel, Ellen Munthe-Kaas

Sigbjørn Hals. Nedenfor har vi tegnet noen grafer til likningen y = C, der C varierer fra -2 til 3, med en økning på 1.

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

ENC ENKEL AKSE og KLIPPE LENGDE KONTROLLER for PLATESAKSER

Kap 9 Tre Sist oppdatert 15.03

Algoritmeanalyse. (og litt om datastrukturer)

TDT4225 Lagring og behandling av store datamengder

Rev.: 3 Brukerveiledning Teknisk Regelverk og Adobe Acrobat Reader Side: 1 av 10

Normalisering. ER-modell

Matematisk julekalender for trinn, 2008

INF2220: Gruppe me 2. Mathias Lohne Høsten 2017

Leksjon 3. Kontrollstrukturer

Filsystemet fra innsiden

Tabeller og enkle spørringer

Definisjon: Et sortert tre

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1

KONTINUASJONSEKSAMEN

Del 2 Tabeller, arrays, strenger

Innhold. Oversikt over hukommelseshierakiet. Ulike typer minne. Innledning til cache. Konstruksjon av cache Hukommelseshierarki-1 1

Grunnkurs i. Windows Utforsker. Nordre Land kommune IKT-avdelingen

EKSAMEN 6102 / 6102N DATABASER

Dagens tema: Realiseringsalgoritmen (også kalt "grupperingsalgoritmen") fra ORM-diagram til relasjonsskjema

Hefte med problemløsingsoppgaver. Ukas nøtt 2008/2009. Tallev Omtveit Nordre Modum ungdomsskole

UNIVERSITETET I OSLO

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.4

TMA4140 Diskret matematikk Høst 2011 Løsningsforslag Øving 7

TrioVing Solo. Elektronisk, programmerbar høysikkerhetssylinder. for intelligent og fleksibel sikkerhet

Hva har vi gjort? SQL og Databasedesign

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

Notater til INF2220 Eksamen

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Tyngdekraft og luftmotstand

Resonnerende oppgaver

Hva er en fil logisk sett?

Filhåndtering. Fysisk organisering av filer. Hva er en fil logisk sett? Eksempel: Post (record) orientert fil. Kjell Åge Bringsrud INF 103

Transkript:

Databasedesign HVA? Begrepsmessig databasedesign E/R diagram Logisk databasedesign Tabeller HVORDAN? Fysisk databasedesign???? Databaser Leksjon 9: Fysisk databasedesign - 1

Fysisk databasedesign Fysiske lagringsstrukturer Lagringsmedier Egenskaper og bruksområder Oppbygging av en harddisk Filstrukturer Representasjon av tabeller: Fil, post, felt Blokker Heap-filer, sekvensielle filer, hashing Beregning av plassforbruk Aksessteknikker Sekvensielt søk, binærsøk Indekser Tette og ikke-tette indekser Flernivå-indekser og B + -trær Lage indekser med SQL Valg under fysisk databasedesign Pensum: Kapittel 9 Databaser Leksjon 9: Fysisk databasedesign - 2

Introduksjon Fysisk databasedesign innebærer å tilpasse logisk skjema til et konkret DBHS. En database vil fysisk være lagret på et antall filer. DBA kan velge «filstrukturer». DBHS bruker forskjellige «aksessteknikker» for lagring og gjenfinning av data. DBA kan styre hvilke teknikker som DBHS benytter. DBA kan overvåke databasen og endre fysisk design for å oppnå bedre ytelse. Valg av maskiner, nettverk, antall disker, lagring av databasen på forskjellige disker og så videre er relevant for god ytelse, men er ikke noe vi ser på her. Databaser Leksjon 9: Fysisk databasedesign - 3

Lagringsmedier Noen lagringsmedier (ordnet synkende etter kostnad og stigende etter aksesstid): Minne (RAM), også kalt hurtiglager Flash-memory, Solid-State Disk (SSD) Harddisk (magnetplatelager) Optiske medier ( DVD, ) Magnetbånd Egenskaper: Aksesshastighet Pris pr. byte Høy hastighet = høy pris Permanent / midlertidig (avhengig av strømtilførsel) Sekvensielt (magnetbånd)/ direkteaksess Databaser Leksjon 9: Fysisk databasedesign - 4

Bruk av lagringsmedier Minnet er (som regel) ikke stort nok til å holde hele databasen. Data blir lest inn fra ytre lager når man skal utføre beregninger. På grunn av mulighet for strømbrudd må oppdaterte data skrives tilbake til ytre lager. Bruk av lagringsmedier: Les: Harddisk / SSD Permanent lagring Sikkerhets -kopiering Primærminne Sekundærminne Tertiærminne Les inn for å beregne Gjenoppbygging Observasjon: Et DBHS skyfler data kontinuerlig mellom minne og harddisk. Databaser Leksjon 9: Fysisk databasedesign - 5

Oppbygging av en harddisk En harddisk består av et antall sirkulære magnetplater montert på en roterende akse. Hver plate er delt inn i et antall spor, og hvert spor er delt inn i sektorer ( typisk størrelse er 512 byter ). En blokk består av sammenhengende sektorer og utgjør den minste enheten for dataoverføring. 4 kb er en vanlig blokkstørrelse Armer med lese/skrive-hoder kan posisjoneres over et spor. Sylinder Plate Spor oppdelt i sektorer Lese/skrivearmer Sporene som dekkes av lese/skrive-hodene i en bestemt posisjon kalles en sylinder. Rotasjon Forflytning Tiden det tar å lese/skrive: Posisjonere lese/skrive-armene + Vente til riktig sektor passerer + Mekanikk tar tid! Overføre data fra/til hurtigminnet. Databaser Leksjon 9: Fysisk databasedesign - 6

I/O-operasjoner Relativ forskjell i aksesstid: Hurtiglager: 100 nanosekunder = 10-7 sekunder Harddisk: 10 millisekunder = 10-2 sekunder 1 nanosekund=10-9 sekunder, 1 millisekund=10-3 sekunder Vi kan gjøre mange operasjoner i minnet for hver aksess av ytre lager (harddisk)! Dette fortsetter å gjelde med mer bruk av SSD (på bekostning av harddisk) I/O-operasjoner: Innlesing fra harddisk kalles en Input-operasjon. Lagring til harddisk kalles en Output-operasjon. I/O-operasjon er samlebetegnelse på innlesing/lagring. Strategi: Minimaliser antall I/O-operasjoner! Databaser Leksjon 9: Fysisk databasedesign - 7

Representasjon av tabeller I prinsippet kan vi tenke på ethvert (?) lagringsmedium som en sekvens av byter. Hvordan lagrer vi en databasetabell (2-dimensjonal) som en byte-sekvens på platelageret? Rad-for-rad eller kolonne-for-kolonne? Dessuten: Hver enkelt verdi krever gjerne flere byter. En database lagret på ytre lager er organisert i en eller flere filer. En fil består av poster som igjen består av felt. Forenkling: Hver tabell lagres på en (egen) fil. Hver rad lagres i en post, og hver verdi i et felt. Databaser Leksjon 9: Fysisk databasedesign - 8

Terminologi Fra SQL til relasjonsmodellen til E/R til fysiske filer: SQL Rel.mod. E/R Filer tabell relasjon entitetstype fil rad tuppel entitetsforekomst post kolonne attributt attributt felt Merk: Begrepene betyr ikke helt det samme. Databaser Leksjon 9: Fysisk databasedesign - 9

Fast og variabel postlengde Datatypen VARCHAR(n) gir felt av variabel lengde. Hvis ett eller flere felt har variabel lengde får hele posten også variabel lengde. Lagring av flere posttyper i samme fil kan også gi variabel postlengde. Anta at alle felt har datatyper som gir fast lengde. I en fil med postlengde n kan post 1 lagres fra adresse 1, post 2 fra adresse n+1, post 3 fra adresse 2n+1, og så videre. Enkelt og effektivt å gjenfinne en post. Med variabel postlengde er det ikke like enkelt. Kan legge inn skilletegn mellom felt og poster. Gjenfinning krever i så fall søking. Databaser Leksjon 9: Fysisk databasedesign - 10

Blokker En harddisk er svært mye tregere enn minnet. Når vi leser fra / skriver til harddisken tar vi like godt en «jafs» av gangen. En blokk er den minste enheten for overføring av data mellom minnet og ytre lager. Typisk blokkstørrelse: 4KB ( 4 096 byte ). En blokk vil som regel inneholde mange poster (rader). DBHS holder oversikten over hvilke data som ligger i hvilke blokker. For en harddisk vil blokkadressen være på formen: PlatelagerID+platenummer+spornummer+sektornummer Databaser Leksjon 9: Fysisk databasedesign - 11

Fil delt inn i blokker KNr Fornavn Etternavn Telefon Post 1 Post 2 Post 3 Post 58 Post 59 Post 60 Post 61 1 Elias Hansen 99 88 77 66 2 Hulda Akselsen 31 45 88 21 5 John Boine 23 94 53 18 63 Mari Gygre 55 66 77 88 64 Michael Svensen 19 82 37 64 69 Robert Romman 91 28 73 46 72 Laura Eika 64 37 82 19 Blokk 1 Blokk 2 En fil blir lagret i et antall blokker. Det settes gjerne av litt ledig plass i hver blokk. Gjør det lettere å sette inn / slette poster. Fyllingsgraden (for eksempel 80%) kan styres (i noen DBHS). Databaser Leksjon 9: Fysisk databasedesign - 12

Beregning av plassforbruk Vi bør vite ca. hvor mye plass en database krever. Hvor stor plass krever varetabellen til Hobbyhuset? Vare(VNr, Betegnelse, Pris, KatNr, Antall, Hylle) CHAR(5),VARCHAR(30),DECIMAL(8,2),SMALLINT,INTEGER,CHAR(3) Anslår antall varer til 3000. Hvert tegn i CHAR/VARCHAR opptar 2 byter (Unicode). Anslår at VARCHAR(n) krever 2 n byter. Postlengde: 2 5 + 2 30 + 8 + 2 + 4 + 2 3 = 90 byter. Antar blokkstørrelse= 4KB og fyllingsgrad 80%. Poster pr. blokk: 4000 0.8/90 = 35 (avrunder 4096 til 4000) Antall blokker: 3000/35 = 86. Plassbehov: 86 4000 = 340 400 Varetabellen krever altså ca. 340 KB (litt avrunding underveis). Databaser Leksjon 9: Fysisk databasedesign - 13

Filstrukturer Heap-filer: «Tilfeldig» rekkefølge. Nye poster legges inn til slutt. Hver boks symboliserer en post. 87 27 7 16 41 19 50 Sekvensielle filer: Sortert, f.eks. med hensyn på VNr. 7 16 19 27 41 50 87 Et antall poster i hver blokk Databaser Leksjon 9: Fysisk databasedesign - 14

Sekvensielt søk og binærsøk Anta vi skal finne en bestemt verdi i en fil med 100.000 poster. Anta vi legger 50 poster i hver blokk. 100.000 poster kan lagres i 2000 blokker. Det er kun antall I/O-operasjoner (blokk-innlesinger) som teller! Sekvensielt søk (heap-filer): Start med blokk 1 og fortsett til verdien er funnet, eller det er slutt på filen. I gjennomsnitt trenger vi 2000/2=1000 lese-operasjoner. Hvis filen er sortert (på feltet vi søker i) kan vi bruke binærsøk. Undersøk den midterste blokken, og gjenta deretter binærsøk på enten «venstre» eller «høyre» halvdel. I gjennomsnitt trenger vi log 2 2000 lese-operasjoner (2 11 =2048). 11 leseoperasjoner er mye bedre enn 1000, men ikke godt nok! Dessuten: En fil kan bare være fysisk sortert på ett felt. Løsning: Indekser Databaser Leksjon 9: Fysisk databasedesign - 15

Innsetting, sletting, oppdatering Sletting og oppdatering: Først må vi søke! Innsetting: Heap-filer: Sett inn bakerst! Sekvensielle filer: Krever søk og reorganisering. Med ledig plass i blokkene kan vi (en stund) reorganisere innenfor blokkene! Holde sortert eller ikke? Mer effektive søk, men merarbeid ved vedlikehold. Slike problemstillinger dukker ofte opp (man får sjelden noe helt gratis ) Databaser Leksjon 9: Fysisk databasedesign - 16

Referanser ( pekere ) Et lagringsmedium er i prinsippet en byte-sekvens. Enhver celle har en adresse ( et tall ). Hvis en celle inneholder adressen til en annen sier vi den er en referanse ( den referer / peker på den andre ). Vi tegner ofte referanser som piler. 2024 2025 2026 2027 2028 2027 Celle på adresse 2025 inneholder adressen (tallet) 2027. Kan symboliseres ved en pil fra celle 2025 til celle 2027. Databaser Leksjon 9: Fysisk databasedesign - 17

Indekser En indeks er en datastruktur som kan gjøre aksess av data mer effektiv. Tenk på en indeks som en referanseliste bakerst i en bok. Inneholder søkeord + referanser (= sidetall i en bok). Listen er sortert med hensyn på søkeord. I databaseindekser vil referansene være diskadresser. Indekser reduserer søketid på bekostning av større plassforbruk og merarbeid i forbindelse med innsetting, oppdatering og sletting. Vi må vurdere hvilke kolonner det er hensiktsmessig å opprette indekser på. Databaser Leksjon 9: Fysisk databasedesign - 18

Visualisering av indekser Andersen Dybdahl Hansen Hansen Jensen Johansen Karlsen Knutsen Madsen Villum Wold 101 Per Hansen 102 Johanne Dybdahl 104 Lise Hansen 108 Fredrik Knutsen 109 Anne Jensen 110 Kristoffer Andersen 111 Anders Johansen 112 Iselin Madsen 114 Karianne Wold 115 Mats Karlsen 116 Maud Villum Søkenøkkel Peker Databaser Leksjon 9: Fysisk databasedesign - 19

Lage indekser med SQL Den enkleste varianten: CREATE INDEX VarenavnIdx ON Vare ( Varenavn ) Indekser kan hindre repetisjoner: CREATE UNIQUE INDEX EtternavnIdx ON Ansatt ( Etternavn ) Indekser kan være sammensatte: CREATE INDEX NavnIdx ON Ansatt ( Etternavn, Fornavn ) ( Får her indeks på etternavn «på kjøpet»! ) Databaser Leksjon 9: Fysisk databasedesign - 20

Tette og ikke-tette indekser En tett indeks ( engelsk: dense ) inneholder en post for hver eneste post i filen. En ikke-tett indeks ( engelsk: sparse) inneholder en post for hver blokk i filen. Ikke-tette indekser er mye mindre enn tette. Med poststørrelse = 100 byter og blokkstørrelse = 4 KB kan vi ha 40 fil-poster i hver blokk. Det er kun mulig å lage ikke-tette indekser for feltet filen er fysisk sortert med hensyn på. Det kan altså være maksimalt èn ikke-tett indeks for hver fil. Trenger ikke å være basert på primærnøkkel! Databaser Leksjon 9: Fysisk databasedesign - 21

Antall diskaksesser ved bruk av indekser Eksempel: Tabellen Vare inneholder 3000 rader som hver krever 90 byter og er sortert mhp. VNr. Vi lagrer 35 poster pr. blokk, og trenger 86 blokker (med blokkstørrelse = 4 KB). Oppretter ikke-tett indeks mhp. VNr. 10+8 byter pr. post i indeksen (VNr + referanse). Indeksen vil ha en 1 post pr. blokk i varefilen (dvs. 86 poster), som kan lagres i 1 blokk. Kan dermed aksessere en vilkårlig post med 2 diskaksesser! Oppretter en tett indeks mhp. Betegnelse. 60+8 byter pr. post i indeksen (Betegnelse + referanse). Det er plass til 58 indeksposter i en blokk. Indeksen vil ha 1 post pr. post i varefilen (3000) = ca. 51 blokker. 7 diskaksesser for å lokalisere en vare mhp. Betegnelse: 6 for binærsøk i indeksen + 1 oppslag i varefilen. Databaser Leksjon 9: Fysisk databasedesign - 22

Flernivå-indekser: B + -trær For store indekser, særlig tette, er det interessant å opprette «indekser-på-indekser». En indeks er alltid sortert, slik at indeks på nivå 2 (3, 4, ) kan være ikke-tett. Ved å gjenta dette i flere nivåer får vi en tre-struktur. Søking skjer fra «roten» i treet mot «bladene». Antall diskaksesser = dybden i treet. B + -trær: En spesiell variant av flernivå-indekser som gir like mange diskaksesser for alle søkeverdier; treet er Balansert. Mange DBHS bruker kun B + -trær for indeksering. Databaser Leksjon 9: Fysisk databasedesign - 23

Antall leseoperasjoner: 1 2 3 4 B + -trær - Struktur D K P Datafil Ro Et B + -trær består av noder organisert i en trestruktur. Hver node inneholder maksimalt n søkeverdier og n+1 pekere. I eksemplet er n lik 3 og vi har 3 nivåer. Hvor mange navn minimalt og maksimalt i eksemplet? Databaser Leksjon 9: Fysisk databasedesign - 24

Antall leseoperasjoner: 1 2 3 4 B + -trær - Søk D K P Datafil Ro Anta vi skal finne post der Etternavn = Roheim. Les inn rot-blokken. Søk i rot-blokken: Her skal vi følge pekeren helt til høyre. Gjenta søk på mellomliggende nivåer Les inn riktig blokk fra datafilen. Databaser Leksjon 9: Fysisk databasedesign - 25

Antall leseoperasjoner: 1 2 3 4 B + -trær - Oppdatering D K P Datafil Ro Ved innsetting av nye poster i datafilen kan det bli nødvendig å splitte noder i treet. Dette kan forplante seg oppover. Til slutt må vi legge til et nytt nivå og balansere treet! Motsatt, så kan sletting føre til sammenslåing av noder Databaser Leksjon 9: Fysisk databasedesign - 26

Hashing En hashfunksjon avbilder verdier på blokk-adresser. Setter av n antall blokker til filen. Leke-eksempel: h( x ) = x MOD 17 (rest ved divisjon) Velger et felt som hash-nøkkel. Lagring av post: Anvend h på hash-nøkkelen. Gjenfinning: Anvend h på hash-nøkkelen. Hva om h sender for mange poster til samme blokk? Bruk overflyt-blokker (men dette medfører litt søking). Ønsker å minimalisere både plassforbruk og antall kollisjoner. h(x 3 ) x 1 h(x 1 ) x 2 x 3 h(x 2 ) Databaser Leksjon 9: Fysisk databasedesign - 27

Vurdering av hashing Aksess med hensyn på hash-nøkkelen: Hvis vi ikke har overflyt, så får vi 1 diskaksess både ved lagring og gjenfinning ( bedre kan det ikke gjøres )! Aksess med hensyn på andre felt: Filen må nå betraktes som en heap-fil, og vi må i utgangspunktet bruke sekvensielt søk. Vi kan imidlertid kombinere hashing ( som filstruktur ) og indekser på andre felt. Søk på intervaller er problematisk: Hash-funksjoner bevarer generelt ikke rekkefølge: Selv om a < b så er ikke h(a) < h(b). Databaser Leksjon 9: Fysisk databasedesign - 28

Retningslinjer fysisk design - Valg av datatyper Tekst Bruk CHAR der du vet sikkert at dataene har fast lengde (personnr, regnr for biler), og VARCHAR ellers. Og CLOB for lange tekster. Tall Velg så «liten» datatype som mulig, men slik at alle tenkelige verdier får plass. Er det viktig med absolutt nøyaktighet når det gjelder desimaler? Autonummererte verdier blir lagret som lange heltall (Access), fremmednøkler mot slike verdier skal også være lange heltall. Tekst eller tall? Skal du regne med verdiene? Ønsker du å vise ledende nuller (kommunenr 0812, ikke 812)? Beløp Bruk Currency i Access Bruke Decimal/Number med nøyaktig 2 desimaler i andre DBHS. Databaser Leksjon 9: Fysisk databasedesign - 29

Retningslinjer fysisk design - Valg av indekser Følgende kolonner kan med fordel indekseres: Kolonner man ofte søker i, eller sorterer på (Hva er databasens bruksmønster?). Primærnøkler og fremmednøkler. Noen DBHS lager automatisk indeks på primærnøkler. Kolonner som ofte brukes som koblingskolonner i spørringer. Følgende kolonner bør ikke/kan ikke indekseres: Kolonner som kun inneholder noen få ulike verdier/mange like verdier, for eksempel Ja/Nei-kolonner. (Kan bruke såkalte bitmap-indekser ) Bilder, video, lydklipp Lange dokumenter (finnes spesielle teknikker, jmf søkemotorer) Indekser krever maskinressurser: Indekser tar opp plass. Indekser må vedlikeholdes ved oppdatering i tabellene. Databaser Leksjon 9: Fysisk databasedesign - 30