Databaser Design och programmering Minnesteknik Minnesteknik, forts Utvecklingen Hårddisk Hårddisk, forts



Relevanta dokument
Databaser - Design och programmering. Minnesteknik. Minnesteknik, forts. Hårddisk. Primärminne (kretsteknik) Fysisk design av databasen

Databaser Design och programmering. Fysisk design av databasen att ta hänsyn till implementationsaspekter: minnesteknik filstrukturer indexering

Minnesteknik. Minnen lämpliga för databaser. Minnesteknik, forts. Databaser design och programmering. temporärt/flyktig Snabbt Dyrt

Databaser Design och programmering. Fysisk design av databasen att ta hänsyn till implementationsaspekter: minnesteknik filstrukturer indexering

Fillagring och indexering

Karlstads Universitet, Datavetenskap 1

Datastrukturer och algoritmer. Innehåll. Tabell. Tabell - exempel. Gränsyta till Tabell. Tabell. Modell. Hashtabell Relation, lexikon.

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary Definitioner Implementation... 2

Magnus Nielsen, IDA, Linköpings universitet

Operativsystem - Filsystem

Dagens föreläsning. KTH & SU, CSC Databasteknik Föreläsning 10 sid 1

Vad du skall komma ihåg från tidigare föreläsningar. Dagens föreläsning. Evaluering av frågor. Data dictionary

Datastrukturer. föreläsning 6. Maps 1

Träd Hierarkiska strukturer

TENTAMEN. TDDD12 Databasteknik TDDD46 Databasteknik. 16 augusti 2010, kl 14-18

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Filsystem. Varför? Hur? För att kunna lagra data mer permanent än i RAM. Vettig organisation Vettiga namn

Mer datorarkitektur. En titt I datorn Minnen

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary Definitioner Implementation... 2

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Tentamen DATABASTEKNIK - 1DL116

Fö 2: Minnen. Introduktion. Primärminnet. Interna och externa minnen. Introduktion, Klassificiering

Öppna filer och filsystem i PintOS Hemuppgift TDDI81, 21/

Sökning. Översikt. Binärt sökträd. Linjär sökning. Binär sökning. Sorterad array. Linjär sökning. Binär sökning Hashtabeller

Innehåll. F7: Tabell, hashtabell, relation & lexikon. Gränsyta till Tabell. Tabell. Tabell Hashtabell Relation Lexikon.

Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Tentamen i Databasteknik

1 Skapa Tabell Skapa Relationer Redigera Relationer Redigera Fält i Tabell Lägga till Poster i Tabell...

Programkonstruktion och. Datastrukturer

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Tentamen i. Databasteknik

Innehåll. Föreläsning 10. Specifikation. Mängd. Specifikation. Konstruktion av mängd. Mängd Lexikon Hashtabell

Datastrukturer och algoritmer

Innehåll MySQL Intro. Ex på ett index Index typer ISAM Balanserat träd Pk och Fk i MySQL Eget index För o nackdelar med index

Datastrukturer. föreläsning 10. Maps 1

Sökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista

Hashing Bakom kulisserna på Pythons dictionary

Hashing Bakom kulisserna på Pythons dictionary. Leta i listor Osorterade listor. Leta i listor Sorterade listor

Introduktion till MySQL

DD1320 Tillämpad datalogi. Lösnings-skiss till tentamen

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

Vad är ett dokument? Gör så här

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Föreläsning 18 Filer och avbildningar

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Hashtabeller. TDA416, lp3 2016

TENTAMEN TDDD12 Databasteknik 7 januari 2010, kl 14-18

Hashing Bakom kulisserna på Pythons dictionary

Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Föreläsning 3 Programmeringsteknik och C DD1316. Innehåll i listor. Uppdateringsoperatorer. +,* och listor. Listor. Indexering

F5: Högnivåprogrammering

F5: Högnivåprogrammering

Digital- och datorteknik

Grunderna i stegkodsprogrammering

Objektorienterad programmering

Föreläsning Datastrukturer (DAT036)

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

Tentamen i Databasteknik

Föreläsningsanteckningar 5. Cacheminnen

Tentamen Datastrukturer D DAT 035/INN960

Föreläsning 4 Programmeringsteknik och Matlab DD1312. Logiska operatorer. Listor. Listor, tupler, strängar och forslingor

DD1320 Tillämpad datalogi. Lösning (skiss) till tenta 20 okt 2011

Programmering för språkteknologer II, HT2014. Rum

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Tentamen Datastrukturer för D2 DAT 035

Föreläsning REPETITION & EXTENTA

Programmering för språkteknologer II, HT2014. Rum

Sökning och sortering

Filhantering. Grunderna i filhantering. Uppbyggnad av filer. Data hierarkin. Filpekaren. Positionering i filer

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Användarmanual icad Arkiv

Föreläsning 13 Innehåll

Sökning och sortering. Linda Mannila

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Tommy Färnqvist, IDA, Linköpings universitet. 1 Administrativ information Upplägg... 1

TENTAMEN TDDB77 Databaser och Bioinformatik 22 augusti 2006, kl 14-18

Installation av. Vitec Mäklarsystem

Installation av. Vitec Mäklarsystem

Föreläsning 8. Mängd, Avbildning, Hashtabell

Övningen vill visa på vikten av valet av datastruktur, trots att de ofta erbjuder samma funktionalitet genom sina gränssnitt.

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Fredag 10 juni 2016 kl 8 12

TDIU01 - Programmering i C++, grundkurs

Facit Tentamen TDDC (7)

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

Grunderna för relationsmodellen!

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem

TDDC76 - Programmering och Datastrukturer

IT för personligt arbete F5

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

TDDC76 - Programmering och Datastrukturer

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Språket Python - Del 1 Grundkurs i programmering med Python

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Transkript:

Databaser Design och programmering Fysisk design av databasen att ta hänsyn till implementationsaspekter minnesteknik filstrukturer indexering 1 Minnesteknik Primärminne (kretsteknik) Flyktigt Snabbt Dyrt Sekundärminne (Olika tekniker: hårddisk, diskett, magnetband, CD, DVD mm) Permanent Långsamt Billigt 2 Minnesteknik, forts Hybrider, sk solid state (usb-minne, kameraminnen) Permanent Snabbt Dyrt storlek vs accesstid och pris per byte Krav: databaser är stora och persistenta 3 1000 100 10 1 0,1 2008 2009 2010 2011 Utvecklingen Pris per GB 4 Primärminne SSD Hårddisk DVD Hårddisk 5 Hårddisk, forts 6 Skiva med magnetiserbar beläggning, packningstäthet Läs/skrivhuvud Roterar: spår, rotationshastighet Packe, cylinder Info lagras i block Block fysiskt 1/2 till 4kB - minsta överföringsmängd till PM Fil lagras i ett antal block Accesstid = sök+rotation+läs = 5-10ms (millisekunder) (läsa hela skivan sekvensiellt dock snabbare) Blocköverföring tar alltså tid.

Databasen 7 Filer 8 Lagras som en samling poster i filer på hårddisk Post med fält = tupel med attribut Fil med poster = relation med tupler Datatyp (tecken, heltal osv) - utrymme Operativsystemets filer Databashanterarens filer Olika lösningar: databashanteraren har helt egna filer databashanteraren använder OS' filer Viktiga operationer på poster: hitta, lägg till, ta bort, ändra, gå igenom ett antal Filer och block 9 Blockningsfaktor, bfr 10 Filer lagras som en serie poster i ett antal fysiska block Block i sama fil ligger efter varandra i samma spår så långt det går Efter raderingar och insättningar: fragmentering Om R är poststorlek och B är blockstorleken är bfr = B/R" en fil med r stycken poster kräver n = #r/bfr$ stycken block Vilka block som ingår lagras i filhuvudet Filer 11 Hög (heap) 12 Består av filhuvud och en samling poster ordnade på något sätt i en samling block. Filhuvud - information om poststorlek, ingående block mm Hur är posterna ordnade inom filen? 1. Hög (heap) (osorterat) 2. Ordnad sekvens (sorterat) 3. Hashstruktur 4. Indexstruktur Oordnad sekvens av poster Ny post - läggs sist. Adressen till sista blocket sparas i filhuvudet. Sökning - sekvensiell genomgång av filen tills man hittar den sökta posten. Medel=b/2, Max=b. Borttagning - sök rätt block, som läses in. Ta bort posten. Skriv tillbaks det reviderade blocket, som nu är delvis tomt.

13 14 Sökning i hög, exempel Hög: fördelar och nackdelar Poststorlek, R = 100 byte blockstorlek, B = 1024 byte filstorlek, r = 30 000 st poster tid för blocköverföring: 10 ms Blockningsfaktorn blir: bfr=b/r"= =1024/100"= 10 poster per block Filen tar upp b=#r/bfr$=#30000/10$ st block För att hitta en viss post krävs i genomsnitt b/2= 1500 blocköverföringar = 15 sekunder. + Insättning går mycket fort. - Många borttagningar leder till tomrum på skivan. (Kräver periodisk omorganisering av filen.) - Sökning - Om posterna har variabel längd kan ändring i en sådan post få blocket att svämma över - posten måste då tas bort och sättas in på nytt. Ordnad sekvens (sorterat) Posterna i filen sorteras enligt värdet på något fält i posterna. Ny post - hitta rätt ställe (rätt block), skapa plats åt den nya posten, sätt in den. Skapa plats = flytta resten av posterna ett steg framåt. Sökning - t.ex. binärsökning, om listan av block sparas i filhuvudet eller sekvens av block nyttjas. Borttagning - som ny post om posten fysiskt ska tas bort. Man kan också markera posten som borttagen och organisera om då och då. 15 Sökning i ordnad sekvens, exempel Samma fil som tidigare: blockfaktor, bfr = 10 poster per block antal block, b = 3000 block. tid för blocköverföring = 10 ms Binärsökning, antal blocköverföringar: n=#log 2(b)$ = #log 2(3000)$=12 För att hitta en viss post krävs maximalt 12 blocköverföringar = 0.12 sekunder. 16 Ordnad sekvens, fördelar och nackdelar 17 Hashstruktur 18 - Insättning av ny post tar tid om plats skapas genom att förskjuta övriga poster i filen - Borttagning eventuellt likaså. + snabbare sökning än hög För filer med nyckel. Posterna sprids över en hylla med fack med hjälp av en hashfunktion. Varje hylla=ett block Kollisionshantering vid fullt block: spillblock

Hashstruktur, forts Ny post - beräkna hashvärde, om plats finns i blocket, sätt in. Om inte länka in nytt block. Sökning - beräkna hashvärde, läs. Om inte rätt block följ länken till nästa tills funnen. Tid för sökning: beror av hur många länkar man måste följa. Borttagning hitta som ovan, ta bort posten ur blocket och skriv tillbaks det ändrade blocket. 19 Hashstruktur, fördelar och nackdelar + snabb sökning (fåtal blockaccesser) - avancerad algoritm för insättning och borttagning - tar viss extra plats (länkfältet samt luft ) - kräver hela nyckeln 20 Indexstruktur För sökning på något speciellt fält (indexeringsfält). Jfr index till en bok Huvudfilen är ordnad efter något fält, t.ex. nyckeln. Kallas då primärindex. För varje block i huvudfilen skapas en post i indexfilen, som innehåller nyckeln från den första posten i blocket samt blockets adress. Indexfilen sorteras enligt nyckelvärdet. 21 Indexstruktur, forts Ny post - rätt block söks fram, läses in, ändras och skrivs tillbaks. Vid översvämning skapas ett nytt block och en ny indexpost läggs in i indexfilen Sökning sök nyckeln i indexfilen (som vid sökning i sorterad fil). Hämta aktuellt block. Borttagning - som ny post. Oftast lämnas tomrum i block istället för att organisera om varje gång. 22 Sökning i indexerad fil, exempel 23 Sökning i indexfilen 24 Samma huvudfil som tidigare: antal block, b = 3000 block. tid för blocköverföring = 10 ms Antag att nyckelfältet är 9 bytes långt och adressen till block tar 6 bytes. Indexfilen är en sorterad fil som söks som sådan Indexfilens poststorlek ir blir då 15 bytes Indexfilens blockfaktor ibfr =1024/15"= 68 Indexfilen tar alltså upp ib = #3000/68$=45 block Hitta en viss indexpost (binärsökning i indexfilen): #log2(45)$blocköverföringar =6 st. Sedan ytterligare en för att läsa ur huvudfilen. Totalt 7 blockaccesser, 0.07 sekunder.

Indexstruktur, fördelar och nackdelar - indexfilen tar extra plats i databasen. - insättning och borttagning kräver även uppdatering av indexfilen. + snabb sökning + relativt enkla algoritmer för insättning och borttagning 25 Index till indexfilen. Multipla index (indexnivåer) För varje block i indexfilen en post i indexindexfilen... Kan ha godtyckligt många nivåer... 26 Sökning med multipelt index Samma huvudfil och samma indexfil: Indexfilens blockfaktor ibfr = 68 Indexfilen tar upp ib = 45 block Index på indexfilen behöver i2r= 45 poster. Den får plats i ett block: Hitta index till indexfilen (1 överföring). Hitta index till huvudfilen (1 överföring). Läsa in det eftersökta blocket ur huvudfilen. Totalt 3 blockaccesser, 0.03 sekunder. 27 Klusterindex Indexering på icke-unikt fält går det? Sortera filen på indexfältet och gör index för första posten av varje indexvärde. Ny post sortera in efter nyckeln Sökning sök rätt index som tidigare, sök sedan rätt post i blocket, eller nästa block Borttagning som för vanligt index. 28 Sekundärindex index på unikt fält som filen inte är sorterad efter? Detta index är tätt (en indexpost per post i huvudfilen, jfr primärindex, glest). Sekundärindexet får lika många poster som datafilen har poster. 29 Sökning på sekundärindex, exempel samma fil som tidigare och indexposter som tidigare, men med tätt index: Indexfilens poststorlek ir = 15 bytes Indexfilens blockfaktor ibfr =1024/15"= 68 Indexfilen tar ib =#30000/68$= 442 block Hitta en indexpost, binärsökning i indexfilen: #log2(442)$ blocköverföringar = 9 st sedan en blocköverföring ur huvudfilen. Totalt 10 blockaccesser, 0.1 sekunder. 30

Sammanfattning Typ Ny post Sökning Borttagning Extra plats Hög Ordnad snabb (2) (log2(b)+1) (b/2) snabb (log2(b)) (b/2 +1) (log2(b)+1) ingen övergivna poster Hashstrukt snabb (2-3) snabb (1-2) snabb (2-3) länkvärde (nyckel) + reserv Indexerad snabb snabb snabb (1-2) indexfilen (log2(ib)+2) (log2(ib)+1) (log2(ib)+2) Värdet anger antal accesser, b=antal block i filen, ib=antal block i indexfilen. 31 Hög Ordnad sekvens Hashstruktur Indexstruktur Filorganisationer primärindex (multipla nivåer) klusterindex sekundärindex 32 Fysisk design 33 designa databasen på fysisk nivå: avvägning mellan utrymme och snabbhet. Ta med i beräkningen hur ofta tabellen används och hur (sökning/matchning mot vilket fält). Åtgärder: Ordna datafilen - osorterad hög eller sorterad? På vad? Används alltid nyckel? Hashtabell Skapa index vilka behövs?