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

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

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

Fillagring och indexering

Karlstads Universitet, Datavetenskap 1

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

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

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

Databaser design och programmering. Fö 2: Design processen, ER-modellering

Databaser design och programmering. Design processen ER- modellering

Magnus Nielsen, IDA, Linköpings universitet

Tentamen DATABASTEKNIK - 1DL116

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

Webprogrammering och databaser. Konceptuell datamodellering med ER-modellen

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

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

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

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

Webprogrammering och databaser. Konceptuell datamodellering med ER-modellen

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

Operativsystem - Filsystem

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

Datastrukturer. föreläsning 6. Maps 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

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

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

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

Grunderna för relationsmodellen!

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

Databaser - Design och programmering

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

732G16: Databaser - Design och programmering

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

Föreläsning Datastrukturer (DAT036)

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

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

! Webprogrammering. ! Databasteori och praktik. ! Fö, le, la + projekt. ! Examination (tenta, dugga + labb, ! Studera användarna och deras problem

Mer datorarkitektur. En titt I datorn Minnen

F5: Högnivåprogrammering

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

F5: Högnivåprogrammering

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

Webprogrammering och databaser. 729G28 Webprogrammering och databaser. Kursöversikt. Praktisk info. Webprogrammering. Ändringar mot förra året

Datastrukturer. föreläsning 10. Maps 1

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

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

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

Programkonstruktion och. Datastrukturer

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

Tentamen i. Databasteknik

Datastrukturer och algoritmer

Träd Hierarkiska strukturer

TENTAMEN För kursen. Databasteknik. Ansvarig för tentamen: Anna Palmquist. Förfrågningar: Anslås inom 3 veckor

TENTAMEN TDDD12 Databasteknik 7 januari 2010, kl 14-18

Introduktion till MySQL

Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner

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

Föreläsning 9 Datastrukturer (DAT037)

Tentamen i Databasteknik

Mitthögskolan ITM Telefon Access. Laborationskompendium för grunderna i databasen Microsoft Access. Detta exemplar tillhör:

Design och underhåll av databaser

Tentamen NDA01G Öppen för alla. Tentamenskod: Inga hjälpmedel är tillåtna

Föreläsning 18 Filer och avbildningar

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

Viktigt! Glöm inte att skriva Tentamenskod på alla blad du lämnar in.

Hashing Bakom kulisserna på Pythons dictionary

Webprogrammering och 729G28 databaser Webprogrammering och databaser Kursöversikt Webprogrammering Designprocessen Lösningsförslag

Databaser. Vad du ska lära dig: Ordlista

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

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

Karlstads Universitet, Datavetenskap 1

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

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

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

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

Sökning och sortering. Sökning och sortering - definitioner. Sökning i oordnad lista. Sökning med vaktpost i oordnad lista

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

Tentamen i Databasteknik

Sökning och sortering

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

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

Relationsmodellen. Relations modellen är idag den mest änvända datamodellen för kommersiella


Lite om databasdesign och modellering

Tentamen Datastrukturer för D2 DAT 035

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

Lösningsförslag till tentamen för DD1370 Databasteknik och informationssystem

Grunderna i stegkodsprogrammering

729G28 Webprogrammering och databaser. Föreläsning 1: Diverse praktiskt om kursen Webprogrammering Databaser, terminologi

Konceptuella datamodeller

Föreläsning Datastrukturer (DAT037)

Tentamen ISGB01, ISGB24. Databasdesign 7,5 Poäng

Föreläsning REPETITION & EXTENTA

Databaser och databasdesign. Den relationella modellen, normalisering och modellering (2)

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

Datastrukturer. föreläsning 10. Maps 1

Inga hjälpmedel är tillåtna

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find

Transkript:

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

2 Programdesign, databasdesign Databasdesign Kravspecifikation Applikationsdesign Konceptuell design Konceptuell datamodell Transaktionsdesign Logisk design Implementationsmodell Fysisk design Fysisk datamodell Implementation

3 Databas En databas är en samling data som: Har med varandra att göra Representerar (modellerar) en del av verkligheten för ett specifikt ändamål Är beständig (finns kvar) Har en strikt struktur som beskrivs i ett schema Inte innehåller motsägelser Lagras på dator

4 Utveckling Konceptuell datamodell (ER) Implementationsmodell (Relationsmodell) Fysisk datamodell Datatyper (Char/Varchar, integer, date, float ) Integritetsvillkor (primärnycklar, främmande nycklar, not null ) Lagring (filorganisation, index )

5 Databasen på hårddisken/ssd Lagras som en samling poster i filer på hårddisk en tupel lagras som en post ett attributvärde lagras som ett fält i en post Datatyp (tecken, heltal osv) - utrymme för respektive attribut Viktiga operationer på poster/tupler: sätta in ny, ta bort, söka specifik

6 Lagra stora mängder data - minnesteknik Primärminne (kretsteknik) Flyktigt Snabbt (direktaccess, nanosekunder) Dyrt Sekundärminne (Olika tekniker: hårddisk, SSD, CD, DVD, diskett, magnetband mm) Permanent Långsamt (olika typer av access, milli-mikro sekunder) Billigt

7 Utvecklingen 1000 Pris per GB (kr/gb) 100 10 1 0,1 Primärminne SSD Hårddisk DVD 0,01 2008 2009 2010 2011 2012 2017 2018

8 Hårddisk (skivbaserad) magnetiserbar beläggning, packningstäthet Läs/skrivhuvud spår, rotations-hastighet Packe, cylinder Block

9 Hårddisk, forts Block fysiskt 1/2 till 4kB - minsta överföringsmängd till PM en fil lagras i ett antal block Accesstid = sök+rotation+läs = 5-10ms (läsa hela skivan sekvensiellt dock snabbare) Accessa (läsa) block = 5-10 millisekunder (5-10*10-3 ). Blocköverföring tar alltså tid!

10 SSD Kretsteknik, transistorer lagrar 1/0 (NAND) Organiserade i block (ofta 4kb). Accesstid <0,1ms Läsning snabb, skrivning ofta lite långsammare, varierar: 200-2500 MB/s 2-20 mikrosekunder/block (2-20*10-6 ) Fortfarande blockbaserad överföring, men med kortare tider.

11 Filer och block En fil behöver flera block. Posterna i en fil lagras i ett antal fysiska block. Information om vilka block som ingår i en fil lagras på disken, kallas filhuvud. Magnetisk disk: SSD Block i samma fil läggs efter varandra i samma spår så långt det går Efter raderingar och insättningar: fragmentering Slitage, wear-levelling, overprovision

12 Blockningsfaktor, bfr Om R är poststorlek och B är blockstorleken är bfr = B/R en fil med r stycken poster kräver b = r/bfr stycken block Vilka block som ingår lagras i filhuvudet eller i respektive block (pekare till nästa block)

13 Filer 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. Hashtabell 4. Indexerad sekvens

14 Hög (heap) Oordnad sekvens av poster (antal block=b) Ny post - Adressen till sista blocket finns i filhuvudet. Läs in den, lägg till nya posten, skriv ut den. Antal accesser: 2. Sökning - sekvensiell genomgång av filen tills man hittar den sökta posten. Antal acesser: 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. Antal accesser: Medel=b/2

15 Sökning i hög, räkne-exempel Fil: Poststorlek, R = 100 byte filstorlek, r = 30 000 st poster Hårddisk: blockstorlek, B = 512 byte tid för blocköverföring: 10 ms Blockningsfaktorn blir: bfr= B/R = = 512/100 = 5 poster per block Filen tar upp b= r/bfr = 30000/5 =6000 st block För att hitta en viss post krävs i genomsnitt b/2= 3000 blocköverföringar = 30 sekunder.

16 Hög: fördelar och nackdelar + Insättning går mycket fort. - 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 bort och sättas in på nytt.

17 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å.

18 Sökning i ordnad sekvens, exempel Samma fil som tidigare: blockfaktor, bfr = 5 poster per block antal block, b = 6000 block. tid för blocköverföring = 10 ms Binärsökning, antal blocköverföringar: n= log2(b) = log2(6000) =13 För att hitta en viss post krävs maximalt 13 blocköverföringar = 0.13 sekunder.

19 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

20 Hashstruktur 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: spill-block

21 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.

22 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 vid utsökning, kan ej läsas sekvensiellt

23 Indexerad sekvens Jfr index till en bok - lista med pekare till rätt plats Indexpost pekar ut var i huvudfilen posten finns Primärindex, klusterindex (grupperade index), sekundärindex Glest index vs tätt index Indexfilen sorteras alltid. Indexfilen tar plats!

24 Indexerad sekvens, forts Ny post - rätt block söks fram, läses in, ändras och skrivs tillbaks. Vid översvämning i blocket 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 från huvudfilen). Borttagning - som ny post. Oftast lämnas tomrum i block istället för att organisera om varje gång.

25 Sökning med primärindex, exempel Samma huvudfil som tidigare: antal block, b = 6000 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.

26 Sökning i indexfilen Indexfilens poststorlek ir blir då 15 bytes Indexfilens blockfaktor ibfr = 512/15 = 34 Indexfilen har en post per block i huvudfilen, dvs ir=6000 poster Indexfilen tar alltså upp ib = 6000/34 =177 block Hitta en viss indexpost (binärsökning i indexfilen): log2(177) blocköverföringar =8 st. Sedan ytterligare en för att läsa ur huvudfilen. Totalt 9 blocköverföringar, 0.09 sekunder.

27 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

28 Multipla index (indexnivåer) Index till indexfilen. För varje block i indexfilen en post i indexindexfilen... Kan ha godtyckligt många nivåer...

29 Sökning med multipelt index Samma huvudfil och samma indexfil: Indexfilens blockfaktor ibfr = 34 Indexfilen tar upp ib = 177 block Index på indexfilen behöver i2r= 177 poster. Den tar 6 block. Hitta index till indexfilen ( log2(6) =3). Hitta index till huvudfilen (1 överföring). Läsa in det eftersökta blocket ur huvudfilen. Totalt 5 blockaccesser, 0.05 sekunder.

30 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.

31 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.

32 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.

33 Sammanfattning Typ Ny post Sökning Borttagning Extra plats Hög snabb (2) långsam (b/2) långsam (b/2 +1) övergivna poster* Ordnad långsam (log2(b)+1) snabb (log 2 (b)) långsam (log 2 (b)+1) tomma poster* Hashstrukt snabb (2-3) snabb (1-2)** snabb (2-3) länkvärde + reserv Indexerad snabb (log 2 (ib)+2) snabb (log 2 (ib)+1) snabb (log 2 (ib)+2) 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.

34 Filorganisationer Hög Ordnad sekvens Hashstruktur Indexstruktur primärindex (multipla nivåer) klusterindex sekundärindex

35 Fysisk design 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? - de som söks på!