DAV B04 - Databasteknik KaU - Datavetenskap - DAV B04 - MGö 151 Lagring av databaser på sekundärminne Att läsa/skriva på sekundärminne (hårddisk) är en långsam process jämfört med operationer i primärminnet Antalet diskaccesser (I/O) bör därför minimeras KaU - Datavetenskap - DAV B04 - MGö 152 Skrivning och läsning från sekundärminne Skrivning och läsning sker i form av sidor (= page/block) med standardstorlek, t ex 1024 bytes Databasposterna är ofta mindre än sidorna, t ex 100 bytes, vilket gör att man läser/skriver flera poster (i detta fall 10) på samma gång Önskvärt är att relaterade poster lagras nära varandra för att minska antalet accesser KaU - Datavetenskap - DAV B04 - MGö 153 Karlstads Universitet, Datavetenskap 1
Hämta en post från databasen 1) DBHS bestämmer vilken lagrad post som behöver hämtas och ber filhanteraren att hämta posten 2) Filhanteraren bestämmer vilken sida (block) som posten finns på och ber diskhanteraren att hämta den sidan 3) Diskhanteraren bestämmer fysisk adress och ber om data från denna adress 4) Data läses av diskhanteraren 5) Den lagrade sidan returneras till filhanteraren 6) Den lagrade posten returneras till DBHS KaU - Datavetenskap - DAV B04 - MGö 154 Exempel på lagringsstrukturer Sekventiell lagring, osorterad/sorterad Indexering Hashing B-träd, B+-träd KaU - Datavetenskap - DAV B04 - MGö 155 Sekventiell lagring Osorterat plus: insättning av nya poster enkelt, sist eller första lediga minus: leta upp en post är besvärligt, sekventiell sökning Sorterat plus: binärsökning ger mycket snabbare access minus: insättning av nya poster medför att poster måste flyttas KaU - Datavetenskap - DAV B04 - MGö 156 Karlstads Universitet, Datavetenskap 2
Hashing Hashing innebär att adressen till en post bestämmes med hjälp av en hash-funktion vars indata är något av fälten i posten plus: direktaccess plus: minskat adressintervall minus: kan ge kollisioner som måste specialbehandlas KaU - Datavetenskap - DAV B04 - MGö 157 Indexering Indexering innebär att man bestämmer en viss ordningsföljd på posterna i datafilen. Index kan knytas till vilket fält som helst eller en kombination av fält Primary indexes Clustering indexes Secondary indexes Multilevel indexes Dynamic multilevel indexes, B-trees, B+-trees KaU - Datavetenskap - DAV B04 - MGö 158 Primary indexes Index knutet till primärnyckel dense index (= index till varje post) nondense (= ej index till varje post). Indexfil och datafil fig. 6.1 och exampel 1, sida 159 KaU - Datavetenskap - DAV B04 - MGö 159 Karlstads Universitet, Datavetenskap 3
Clustering indexes Index knutet till ett icke-nyckelfält som har dubbletter En pekare från indexfilen för varje distinkt värde (första blocket) på clustering-fältet fig. 6.2 och 6.3 KaU - Datavetenskap - DAV B04 - MGö 160 Secondary indexes Indexfil med två värden, indexfält och pekare till post/block En datafil kan ha många sekundärindex, ett för varje attribut Fig. 6.4 och exempel 2, sida 162. Index till osorterad fil men på ett fält med unika värden Fig. 6.5 visar indexfil till fält med ej unika värden KaU - Datavetenskap - DAV B04 - MGö 161 Multilevel indexes Index med flera nivåer fig. 6.6 och exempel 3, sida 167 Mycket snabb access men i likhet med alla ovanstående varianter är det problem med insättning av nya poster och borttagning av befintliga poster KaU - Datavetenskap - DAV B04 - MGö 162 Karlstads Universitet, Datavetenskap 4
Dynamic Multilevel Indexes using B-trees and B + -trees B-träd som finns i olika varianter möjliggör att dynamiskt lägga till och ta bort poster utan att slösa med minnesutrymme Träden är balanserade, dvs. alla löv ligger på samma nivå Nyckelvärdena är upphängda i sorteringsordning i trädet KaU - Datavetenskap - DAV B04 - MGö 163 Skillnaden mellan B-träd och B + - träd I ett B-träd kan datapekare finnas i alla inre noder och i löven medan B + -träd endast har datapekare i löven Dessutom finns pekare mellan löven i B + -träd vilket möjliggör sekventiell sökning KaU - Datavetenskap - DAV B04 - MGö 164 B-träd av ordningen p Varje inre nod i trädet (fig. 6.10a) är på formen <P 1, <K 1, Pr 1 >, P 2,, <K 2, Pr 2 >,,, <K q-1, Pr q-1 >, P q > där q <= p Varje P i är en trädpekare och varje Pr i är en datapekare till den post (eller block som innehåller) vars nyckelvärde är K i KaU - Datavetenskap - DAV B04 - MGö 165 Karlstads Universitet, Datavetenskap 5
B-träd av ordningen p Inom varje nod gäller K 1 < K 2 < < K q-1 För alla sökvärden X i det subträd som utpekas av P i gäller K i-1 < X < K i, för 1 < i < q X < K i, för i = 1 K i-1 < X för i = q KaU - Datavetenskap - DAV B04 - MGö 166 B-träd av ordningen p Varje nod har högst p trädpekare Varje nod, förutom roten och löven, har åtminstone [(p/2)] trädpekare. Roten har minst 2 trädpekare såvida den inte är ensam nod i trädet KaU - Datavetenskap - DAV B04 - MGö 167 B-träd av ordningen p En nod med q trädpekare, q <= p, har q-1 söknyckelvärden och därmed också q-1 datapekare Alla löv ligger på samma nivå. Löven har samma struktur som inre noder men deras trädpekare är NULL KaU - Datavetenskap - DAV B04 - MGö 168 Karlstads Universitet, Datavetenskap 6
Inre noder definieras enligt varje inre nod i trädet är på formen <P 1, K 1, P 2, K 2,, P q-1, K q-1, P q > där q <= p varje Pi är en trädpekare Inom varje nod gäller K 1 < K 2 < < K q-1 KaU - Datavetenskap - DAV B04 - MGö 169 För alla sökvärden X i det subträd som utpekas av P i gäller K i-1 < X <= K i, för 1 < i < q X <= K i, för i = 1 K i-1 < X för i = q Varje inre nod har högst p trädpekare KaU - Datavetenskap - DAV B04 - MGö 170 Varje inre nod, förutom roten, har åtminstone [(p/2)] trädpekare. Roten har minst 2 trädpekare såvida den inte är ensam nod i trädet En nod med q trädpekare, q <= p, har q-1 söknyckelvärden KaU - Datavetenskap - DAV B04 - MGö 171 Karlstads Universitet, Datavetenskap 7
Lövnoder definieras enligt Varje löv har utseendet <<K 1, Pr 1 >, <K 2, Pr 2 >,,, <K q-1, Pr q-1 >, P next > där q <= p Pr i är en datapekare och P next pekar på nästa lövnod i trädet KaU - Datavetenskap - DAV B04 - MGö 172 Inom varje nod gäller K 1 < K 2 < < K q-1, q <= p Varje Pr i är en datapekare som pekar på den post (eller block) vars söknyckelvärde är K i Varje lövnod har åtminstone [(p/2)] trädpekare Alla lövnoder är på samma nivå KaU - Datavetenskap - DAV B04 - MGö 173 Karlstads Universitet, Datavetenskap 8