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

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

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

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

Fillagring och indexering

Karlstads Universitet, Datavetenskap 1

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 och algoritmer. Innehåll. Tabell. Tabell - exempel. Gränsyta till Tabell. Tabell. Modell. Hashtabell Relation, lexikon.

Tentamen DATABASTEKNIK - 1DL116

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

Magnus Nielsen, IDA, Linköpings universitet

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

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

Tentamen i. Databasteknik

Operativsystem - Filsystem

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

Datastrukturer. föreläsning 6. Maps 1

Datastrukturer. föreläsning 10. Maps 1

Träd Hierarkiska strukturer

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

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

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

Tentamen i Databasteknik

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

IT för personligt arbete F5

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

TENTAMEN TDDD12 Databasteknik 7 januari 2010, kl 14-18

Föreläsning Datastrukturer (DAT036)

Mer datorarkitektur. En titt I datorn Minnen

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

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

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

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

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

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

Datastrukturer och algoritmer

Datastrukturer. föreläsning 10. Maps 1

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

Föreläsning 14 Innehåll

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

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

Tentamen Datastrukturer för D2 DAT 035

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

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

TDIU01 - Programmering i C++, grundkurs

TDDC76 - Programmering och Datastrukturer

Föreläsning 18 Filer och avbildningar

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

TDDC76 - Programmering och Datastrukturer

Fredag 10 juni 2016 kl 8 12

Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne.

En processor kan ha en klockfrekvens på flera GHz. Det går alltså a9 exekvera en instruk=on väldigt for, givet a9 instruk=onen finns i processorn.

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

Tentamen i Databasteknik

Introduktion till MySQL

TENTAMEN TDDB77 Databaser och Bioinformatik 12 juni 2007, kl 14-18

Arbeta med Selected Works en lathund

TDDI 60 Tekniska databaser

Hashing Bakom kulisserna på Pythons dictionary

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

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

TENTAMEN TDDB77 Databaser och Bioinformatik 19 april 2002, kl 14-18

Föreläsningsanteckningar 5. Cacheminnen

Sökning och sortering

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

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

Föreläsning 9 Datastrukturer (DAT037)

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

GUIDE Ansökan planmässigt anstånd

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

Föreläsning REPETITION & EXTENTA

Programkonstruktion och. Datastrukturer

Programdesign, databasdesign. Databaser - Design och programmering. Funktioner. Relationsmodellen. Relation = generaliserad funktion.

Hashtabeller. TDA416, lp3 2016

Tentamen Datastrukturer D DAT 035/INN960

Hashing Bakom kulisserna på Pythons dictionary

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

An English version of the questions is found at the back of each page.

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

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

Föreläsning Datastrukturer (DAT037)

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn

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

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

Importera och använda en textdatabas i Excel

Innehåll. Sökning och hashtabeller. En bilsamling att söka i. En bil-klass att söka efter. Hur hittar vi alla bilar som uppfyller ett annat villkor

Datastrukturer. föreläsning 9. Maps 1

Magnus Nielsen, IDA, Linköpings universitet

Databaser - Design och programmering. Relationsmodellen. Relationer - som tabeller. Relationer som tabeller. Alternativa notationer: Relationsschema

Grunderna för relationsmodellen!

Ordbokskodning. Enkel variant av kodning med variabelt antal insymboler och fixlängds kodord. (Jfr tunstallkodning)

Exempel, minnesfri binär källa. Ordbokskodning. Lempel-Zivkodning. Lempel-Zivkodning, forts.

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

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

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

Sökning. Viktiga algoritmer sökning och sortering. Sökning i en oordnad tabell:

Transkript:

Databaser design och programmering n Fysisk design av databasen Minnesteknik n Primärminne (kretsteknik) n att ta hänsyn till implementationsaspekter minnesteknik filstrukturer indexering 1 temporärt/flyktig Snabbt Dyrt n Sekundärminne (Olika tekniker: hårddisk, CD, DVD, diskett, magnetband) Permanent Långsamt 2 Minnesteknik, forts Minnen lämpliga för databaser n Hybrider, sk solid state (usb-minne, SD-minnen) Permanent Snabbt Dyrt n databaser är stora n databaser är persistenta n därför sparas databaser på pålitligare senkundärminnen 3 4

Hårddisk Hårddisken i detalj n magnetiserbar beläggning n Läs/skrivhuvud n Spår n Cylinder n Sektor 5 6 Hårddisk - block n Block en logiskt enhet Minsta överföringsmängd till primärminnet Vanligtvis 512-4048 Bytes n Fil lagras i ett antal block n Accesstid = sök+rotation n Överföringstid = sök+rotation+läs = 5-10ms n Blocköverföring tar alltså tid 7 Databasens lagring n Tabeller lagras i filer n Fil lagras som en sekvens poster n Post med fält = tupel med attribut n Fil med poster = relation med tupler 8

Filer Filer och block n Olika lösningar: databashanteraren har helt egna filer databashanteraren använder OS' filer n Viktiga operationer på poster: hitta, lägg till, ta bort, ändra, gå igenom ett antal 9 n Filer lagras som en sekvens av poster som organiseras i en sekvens av diskblock (block) n Block i samma fil ligger efter varandra i samma spår så långt det går n Efterraderingar och insättningar skapar lösa utrymmen (fragmentering) 10 Blockningsfaktor, bfr n Om R är poststorlek och B är blockstorleken är bfr = B/R n en fil med r stycken poster kräver n = r/bfr stycken block n Vilka block som ingår lagras i filhuvudet 11 ISBN Title Author Pages 91-44- 04449-6Book Databasteknik Thomas Padron- McCarthy 646 978-01360862 Fundamentals of database systems Ramez Elmasri 1200 08 0-07- 352332-1 978-18485479 02 Database system concepts Avi Silberschatz 1315 Big Data: A revolution that will transform how we live, work and think 91-44 978-0 0-07- 978-1 Datab Thom 646 Funda Rame 1200 Datab AviSi 1315 BigDa Vikto 256 Post Viktor Mayer- Schonberger Fält 256 732G16 - Erik Prytz 12

Filer n Består av filhuvud och en samling poster ordnade på något sätt i en sekvens av block. n Filhuvud - information om poststorlek, ingående block, sista block n Hur är posterna ordnade inom filen? 1. Hög (heap) (osorterat) 2. Ordnad sekvens (sorterat) 3. Hashstruktur 13 4. Indexstruktur Hög (heap) n 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 14 tomt. Sökning i hög, exempel 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= rbfr = 30000/10 st block För att hitta en viss post krävs i genomsnitt b/2= 1500 blocköverföringar = 15 sekunder 15 Hög: fördelar och nackdelar + Insättning går mycket fort - varför? - Många borttagningar leder till tomrum på skivan. (Kräver periodisk omorganisering av filen.) - Sökning långsam - Om posterna har variabel längd kan ändring i en sådan post få blocket att svämma över - posten måste då tas 16 bort och sättas in på nytt.

Filen som en ordnad sekvens (sorterat) n 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: binärsökning Borttagning - som ny post om posten fysiskt ska tas bort. Man kan också markera posten som borttagen och organisera om 17 då och då. Sökning i ordnad sekvens, exempel Samma exempelfil 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= log2(b) = log2(3000) =12 För att hitta en viss post krävs maximalt 12 blocköverföringar = 0.12 sekunder. 18 Ordnad sekvens, fördelar och nackdelar - 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 (heap) 19 Hashstruktur n För filer med nyckel. n Posterna sprids över en hylla med fack med hjälp av en hashfunktion n Varje hylla=ett block n Kollisionshantering vid fullt block: spillblock n Hashning som används i samband med externminne kallas för externhashning 20

Hashstruktur, forts n Ny post: beräkna hashvärde, om plats finns i blocket, sätt in. Om inte länka in nytt block. n 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. n Borttagning: hitta som ovan, ta bort posten ur blocket och skriv tillbaks det 21 ändrade blocket. 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 (delar av en sammansatt nyckel räcker inte för att beräkna korrekt hashvärde) 22 Indexstruktur n För sökning på något speciellt fält (indexeringsfält). n Jämför index till en bok n Huvudfilen är ordnad efter något fält, t.ex. nyckeln. Kallas då primärindex. n För varje block i huvudfilen skapas en post i indexfilen, som innehåller nyckeln från den första posten i 23 blocket samt blockets adress. Indexstruktur, forts n 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 n Sökning: sök nyckeln i indexfilen (som vid sökning i sorterad fil). Hämta aktuellt block. n Borttagning: som ny post. Oftast lämnas tomrum i block istället för att 24 organisera om varje gång.

Sökning i indexerad fil, exempel Samma huvudfil som tidigare n Antal block, b = 3000 block Tid för blocköverföring = 10 ms n Antag att nyckelfältet är 9 bytes långt och adressen till block tar 6 bytes n Indexfilen är en sorterad fil som söks som sådan 25 Sökning i indexfilen n Indexfilens poststorlek ir=15 bytes Indexfilens blockfaktor ibfr = 1024/15 = 68 Indexfilen tar alltså upp ib = 3000/68 = 45 block n 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. 26 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 Multipla index (indexnivåer) n Index till indexfilen. n För varje block i indexfilen en post i index-indexfilen... n Kan ha godtyckligt många nivåer... 27 28

Sökning med multipelt index Samma huvudfil och samma indexfil som tidigare n Indexfilens blockfaktor ibfr = 68 Indexfilen tar upp ib = 45 block Index på indexfilen behöver i 2 r= 45 poster. Den får plats i ett block: n Hitta index till indexfilen (1 överföring). Hitta index till huvudfilen (1 överföring). Läsa in det eftersökta blocket ur huvudfilen (1 överföring). 29 n Totalt 3 blockaccesser, 0.03 sekunder. Klusterindex n Indexering på icke-unikt fält n Sortera filen på indexfältet (klusterfältet) och skapa indexpost för första posten av varje indexvärde. n Ny post sortera in efter nyckeln n Sökning sök rätt index som tidigare, sök sedan rätt post i blocket, eller nästa block 30 n Borttagning som för vanligt index. Sekundärindex n index på unikt fält som filen inte är sorterad efter? n Detta index är tätt (en indexpost per post i huvudfilen, jfr primärindex, glest). n Sekundärindexet får lika många poster som datafilen har poster. 31 Sökning med sekundärindex, exempel Samma fil som tidigare och indexposter som tidigare, men med tätt index (en indexpost per datapost) n Indexfilens poststorlek ir = 15 bytes Indexfilens blockfaktor ibfr = 1024/15 = 68 n Indexfilen tar ib = 30000/68 = 442 block n Hitta en indexpost, binärsökning i indexfilen: log2(442) blocköverföringar = 9 st sedan en blocköverföring ur huvudfilen. n Totalt 10 blockaccesser, 0.1 sekunder. 32

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