Fillagring och indexering

Relevanta dokument
Karlstads Universitet, Datavetenskap 1

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

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

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

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

Datastrukturer. föreläsning 10. Maps 1

Träd Hierarkiska strukturer

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

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

Föreläsning Datastrukturer (DAT036)

Tentamen DATABASTEKNIK - 1DL116

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

TDDI60 Tekniska databaser

TENTAMEN TDDD12 Databasteknik 7 januari 2010, kl 14-18

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

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

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

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

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

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

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

Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Implementering av tabellen. Operationer på tabellen

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

Föreläsning 7. Träd och binära sökträd

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Ännu mera träd: 2-3-träd, B-träd, rödsvarta träd, träd Weiss, avsnitt 4.7, 11.5, 12.2, etc.

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

13 Prioritetsköer, heapar

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

Tentamen i. Databasteknik

Datastrukturer. föreläsning 9. Maps 1

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

Operativsystem - Filsystem

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

Föreläsning 9 Innehåll

Programmeringsmetodik DV1 Programkonstruktion 1. Moment 8 Om abstrakta datatyper och binära sökträd

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

Tentamen Datastrukturer D DAT 035/INN960

Seminarium 13 Innehåll

TENTAMEN TDDB77 Databaser och Bioinformatik 24 april 2004, kl 14-18

Föreläsning 2. AVL-träd, Multi-Way -sökträd, B-träd TDDD71: DALG. Innehåll. Innehåll. 1 Binära sökträd

Föreläsning 13. Träd

Normalisering. Christer Stuxberg Institutionen för Informatik och Media

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

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

Tentamen Datastrukturer D DAT 036/INN960

Algoritmer och datastrukturer 2012, fo rela sning 8

Datastrukturer. föreläsning 6. Maps 1

Föreläsning 5. Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning

Föreläsning 13 Innehåll

Tentamen Datastrukturer för D2 DAT 035

Magnus Nielsen, IDA, Linköpings universitet

Objektorienterad programmering

Lösningar Datastrukturer TDA

Övningar i SQL. SQLAccess.doc Ove Lundgren

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

Programkonstruktion och. Datastrukturer

Tentamen i Databasteknik

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

Tentamen DATABASTEKNIK - 1DL116

DIG IN TO Dator och nätverksteknik

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

Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts.

Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or.

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik kl

Binära sökträd. Seminarium 9 Binära sökträd Innehåll. Traversering av binära sökträd. Binära sökträd Definition. Exempel på vad du ska kunna

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

Informationsteknologi Tom Smedsaas 19 augusti 2016

Datastrukturer. Föreläsning 5. Maps 1

Transaktioner och samtidighet

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

Föreläsning 9 Innehåll

Självbalanserande träd AVL-träd. Koffman & Wolfgang kapitel 9, avsnitt 1 2

Föreläsning 6. Sökträd: AVL-träd, Multi-Way -sökträd, B-träd TDDC70/91: DALG. Innehåll. Innehåll. 1 AVL-träd

Tentamen Datastrukturer D DAT 036/INN960

Vad har vi pratat om i kursen?

Föreläsning 9. Sortering

3. Toppkvinnor på hög Låt lådan och de två kvinnornas famnar utgöra stackarna L, K1 respektive K2. Från början finns alla kort i L.

Att uppgradera från Informix 7.31 och kanske lite annat. Johan Backlund

Tentamen, Algoritmer och datastrukturer

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

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

Tentamen TEN1 HI

TDIU01 - Programmering i C++, grundkurs

Förändringsdata via DRK-Platsen

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

Laboration 2, MS SQL. Observera. Tips. Förberedelse. Genomförande

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

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Träd - C&P kap. 10 speciellt binära sökträd sid. 452

Karlstads Universitet, Datavetenskap 1

Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Specifikationer för tabellfunktionerna. Operationer på tabellen

Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)

Hashtabeller. TDA416, lp3 2016

Föreläsning 11 Innehåll

Tentamen i Databasteknik

Transkript:

Fillagring och indexering Lena Strömbäck Institutionen för datavetenskap (IDA) Databaser Världen Databas Modell Databas- Hanterings- System (DBMS) Queries Svar Queries Svar Användare Anv Updates Queries Svar Updatera. Frågor Svar Anv 4 Updates Anv Updates Processning av frågor och uppdateringar Tillgång till lagrad data Fysisk databas Sida spår Två sektorer En sektor (del av ett spår) Block Ett block är den enhet data man överför mellan disk och primärminne. arm Läs/skrivhuvud spindel diskrotation Diskaccess är,000 till 00,000 gånger mer tidskrävande än processorinstruktioner. cylinder av spår Processorinstruktion Minnesaccess Diskaccess 0 - s 0 - s 0 - s rörelser Figure., p. 46 Sida Sida 4 Terminologi Filer och block En fil är en sekvens av poster (records). En post består av fält. Varje fält är av en specifik datatyp. En stor fil behöver felra block för lagring. Man vill oftast se till att varje post finns i ett block. Unspanned records Vi kommer att förutsätta att posterna har en fix längd. Sida Sida 6

Fil och postlagring Fil och postsökning Fil med,000,000 poster (r) Poststorleken (R) är 000 bytes (unspanned) Blockstorleken (B) är 4,06 bytes B 406 40 Blockfaktorn (bfr) är = = R 000 Block som behövs (b) är r,000,000 = =,000 4 bfr En sekventiell algoritm måste accessa alla,000 block. (Läsa in allt till primärminnet) En binär sökalgoritm behöver accessa log b = log 0000 = Sida Sida Indexering Primärindex Ett index Är en extra struktur som används för att kunna söka poster snabbare Är baserad på en eller flera indexfiler Lagrar fysiska adresser till poster Ett primärindex används till en fil som är sorterad på de värden man vill söka på. Värdet ska vara unikt. Ett primärindex är en ordnad fil av poster med två fält. Ett indexfält och en blockpekare Indexfältet är en kopia av den ordnade nyckeln i datafilen. Blockpekaren är en pekare till blocket i datafilen Vad är relationen mellan primärnyckel och primärindex? Sida Sida 0 Primärindex Indexfil (Andersson, Anne) (Andersson, Mia) (Davidsson, Lina) (Nilsson, Johan) (Svensson, arl) (Andersson, Anne) (Andersson, Leo) (Andersson, Mia) (Bengtsson, Anders) (Davidsson, Lina) (Larsson, Anders) (Nilsson, Johan) (Petersson, Jörgen) Block Block Block Block 4 Exempel Antag en ordnad datafil med,000,000 poster av storlek 000 byte och blockstorleken 4,06 bytes. Antag en indexpoststorlek av bytes. Hur många block behövs för indexet? I medeltal, hur många blockaccesser behövs för att söka på nyckelfältet: Sida Sida

Dense vs. sparse index lusterindex Dense index: ett indexentry för varje post. Sparse index: endast indexentry för vissa poster. Som primärindex men används om sorteringsfältet ej är unikt. Indexfilen är en ordnad fil med två fält, ett indexfält och en blockpekare. En indexpost för varje värde i ordningsfältet. lusterindex är alltid sparse. Sida Sida 4 lusterindex I Indexfil Dept# Name ID Salary Andersson 000 Svensson 4000 Block lusterindex II Indexfil Dept# Name ID Salary Andersson 000 Svensson 4000 Block 4 4.... Block Block 4 Block Block Sida Sida 6 Exempel Problem med primär och klusterindex Antag en ordnad datafil med,000,000 poster av storlek 000 byte och blockstorleken 4,06 bytes. Antag en indexpoststorlek av bytes, det finns cirka 00 poster med samma indexvärde. Hur många block behövs för att lagra indexet? I medeltal, hur många blockaccesser behövs för att söka på nyckelfältet? Som med varje ordnad fil blir insättningar och borttagning av poster dyra. Vi kan också behöva flytta poster i datafilen. När datafilen ändras byts också ankarposten. Sida Sida

Sekundärindex Ett sekundärindex snabbar upp svarstiderna om det finns frekventa sökningar på ett oordnat fält. Ett sekundärindex snabbar upp sökningen av enstaka poster. Varför? Indexfältet är en ordnad fil med två fält. Ett indexfält och en blockpekare. Det kan finnas många sekundärindex till samma tabell. Sekundärindex på ett unikt attribut Indexfil 466 4464 0 64 000 0 0000 ID# SSN Dept. Salary 4464 000 000 4000 4 6 0 64 0 466 0000 0 Block Block Block Sida Sida 0 Sekundärindex på ett icke unikt attribut Indexfil Andersson Daniels French Hagberg Lancaster Extra nivå med postpekare ID# 4 6 0 Name Daniels Lancaster Andersson Andersson Silver Molin French Daniels Andersson Hagberg Yang Miller Exempel Antag en ordnad datafil med,000,000 poster av storlek 000 byte och blockstorleken 4,06 bytes. Antag en indexpoststorlek av bytes. Hur många block behövs för att lagra indexet? I medeltal, hur många blockaccesser behövs för att söka på nyckelfältet? Två fall:. Om indexvärdet är unikt?. Om det finns cirka 00 poster med samma indexvärde? Sida Sida Summering: Indextyper Flernivåindex Primärindex Sparse index på nyckelfältet, unikt fält en ordnad på nyckelfältet lusterindex Sparse index på icke-nyckelfält Filen ordnad på icke nyckel fält Sekundärindex Index på ett fält som filen ej är sorterad på. Index på index Minska mängden att söka igenom att anpassa indexstorleken till ett block. Minskningen bestäms av blockfaktorn. Blockfaktorn kallas också fan-out. Sida Sida 4 4

Flernivåindex Exempel Andra nivån 4 44 6 0 4 6 4 44 46 Antag en ordnad datafil med,000,000 poster av storlek 000 byte och blockstorleken 4,06 bytes. Antag en indexpoststorlek av bytes. I medeltal, hur många blockaccesser behövs för att söka på nyckelfältet om jag använder ett flernivåindex? Första nivån Sida Sida 6 Problem med flernivåindex Sökträd Problem med insättning och borttagning av data. Alla nivåer baserade på ordnade filer. Använd en overflow fil och ordna om indexen när filerna ordnas om. Använd ett dynamiskt flernivåindex Om man vänder ett flernivåindex 0 kan det ses som en speciell typ av sökträd. Ett sökträd är en struktur som används för att snabb sökning, i detta fall en post. B-tree = balanserade träd. Ett sökträd p består av noder som har högst p- värden och p pekare. <P,, P,,, P q-, q-, P q > där q p och P i is är en pekare till ett barn (eller en null-pekare) Sida Sida Sökträd Exempel, order p= P i P i i q P q X < < X < i i P i P i i q P q P i P i i q P q P i q < X P i i q P q 6. I varje nod, < < < q-i. För alla värden X i subträden: i- < X < i Sida Sida 0

Exempel, order p= B-träd: Ordning 6 Andersson Hagberg French Silver Daniels Young Zhing 6 Baker En nod måste passa i ett block: B+ P p P + ( p ) ( P + ) B p record P + P + record block block record + p P block P record ordning, antal blockpekare storlek på blockpekaren storlek på postpekaren storlek på söknyckeln Sida Sida B+-träd B+-Tree: Example, order p=, p leaf = En variant av B-träd Datapekarna endast sparade i lövnoderna. Vanligaste dynamiska flernivåindexstrukturen Lövnoderna är vanligen länkade för att erbjuda ordnad access. Andersson Hagberg French Silver Daniels Young Zhing 6 Baker 6 Sida Sida 4 B+-träd: interna noder P i Pi i q Pq B+-trees: Interna noder Varje intern nod har högst p nodpekare. Varje intern nod, utom roten har minst ceil(p/) nodpekare. Rotnoden har minst nodpekare om det är en intern nod. En intern nod med q pekare (q p), har q- sökfältsvärden. X < X i i q < X. För varje nod, < < < q-i. För alla värden X i subträdet: i- < X i Sida Sida 6 6

B+-träd: Lövnoder B+-träd ordning Varje lövnod har formatet: <<, P>, <, P>,, <q-, Pq->, Pnext> Inom varje lövnod: < < < q-i Varje entry (Pi) är en pekare till posten med motsvarande värde. Varje lövnod (utom roten) har minst ceil(p/) värden. Alla lövnoder är på samma nivå. En intern nod måste få plats i ett block: p P + ( p ) B block En lövnod måste få plats I ett block: p B+ P block + p B P P block ( P + ) + P B p leaf record block leaf record + B p p leaf P block P record blockstorlek ordning, antal pekare I en intern nod antal pekare I en lövnod storlek på blockpekaren storlek på söknyckeln storlek på postpekaren Sida Sida B+-träd B+-träd: Insättning Mycket snabb sökning: log p N f Insättning och borttagning kan vara dyrt. N number of search values p order, number of block pointers per node f fill factor, 0 f När en lövnod är full genereras ett overflow De första p behålls resten flyttas till ett nytt löv. Den nya noden måste sättas in i föräldern. Om föräldern blir fylld genereras ett overflow. Den resulterande splitten kan propagera ända upp till roten. Sida Sida 40 Exempel: Insättning Värde Datapekare Lövnod Lövnodspekare Nodpekare Internnod P i- i q- P i P q Lägg till: Sida 4 Sida 4

Overflow skapa en ny nivå Lägg till: Lägg till: Sida 4 Sida 44 Overflow - Splitta Lägg till: Lägg till: Sida 4 Sida 46 Overflow - Splitta Propagerar till nästa nivå Lägg till: Lägg till: Sida 4 Sida 4

6 Overflow Splitta Lägg till: 6 Resulterande B+-träd Sida 4 Sida 0 6 6 6 6 Underflow ordna om Ta bort: Ta bort: Sida Sida 6 6 6 6 Underflow slå ihop Ta bort: Forfarande underflow Ta bort en nivå Sida Sida 4

B+-träd 6 6 Många varianter B-trees B+-trees B*-trees Vanliga modifieringar Ändra fyllningsfaktorn 0. till.0 Tillåt en nod att bli tom innan sammanslagning Sida Sida 6 Summering Indexfiler (primär, kluster, sekundär) Sökträd, B+-träd Sida 0