Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

INF 295 Algoritmer og datastrukturer Forelesning 11 Når RAM ikke strekker til - B-trær og Utvidbar hashing Hans Fr. Nordhaug (Ola Bø)

Liknende presentasjoner


Presentasjon om: "INF 295 Algoritmer og datastrukturer Forelesning 11 Når RAM ikke strekker til - B-trær og Utvidbar hashing Hans Fr. Nordhaug (Ola Bø)"— Utskrift av presentasjonen:

1 INF 295 Algoritmer og datastrukturer Forelesning 11 Når RAM ikke strekker til - B-trær og Utvidbar hashing Hans Fr. Nordhaug (Ola Bø)

2 Hva om vi ikke får plass i indre lager? - Ut på disk! Da endrer alle regler seg O() modellen blir meningsløs - fordi Pentium 4, 2,5GHz gjør 5000MIPS. Disk 7200 rpm - en halv runde tar 60/14400=4,2 ms eller 240 aksesser per sekund (grovt regnet) /240 Prosessoren klarer over 20 millioner instruksjoner per diskaksess Konklusjon: Antall diskaksesser avgjør kjøretida

3 Binære søketrær på disk? Antar poster a 256B At 24 personer jobber mot samme disk Verste tilfelle - liste O(N) diskaksesser 240 timer Gjennomsnitt (log N) = ca 32 aksesser=3,2 s I tilfeldige tre er noen noder opp til tre ganger dypere 100 aksesser=10 s Konklusjon Binære søketrær på disk er ikke brukbart Vi må finne en løsning som gir færre diskaksesser selv om den krever mer komplisert kode. Hashing er en mulighet Trær med flere greiner gir lavere tre med samme antall noder

4 M-foldig tre Høyde er log M N Hver indre node må ha M-1 nøkler for å velge riktig barn Balansering nødvendig for å unngå degenerering

5 B-trær Et B-tre av M-te orden er et M-ary tre med disse egenskapene: Data-elementene er lagret i bladnodene Indre noder lagrer opp til M-1 nøkler. Nøkkel i er laveste nøkkel i subtre i+1 Rota er enten blad eller har mellom 2 og M barn Alle andre indre noder har mellom M/2 og M barn Alle bladnoder er på samme dybde og har mellom L/2 og L dataelement

6 5. ordens B-tre

7 B-trær Hver node svarer til en diskblokk Antall greiner M fra en indre node og antall dataelement L velges slik at diskblokkene fylles Eksempel: Diskblokk 8192 bytes Nøkkel 32 bytes gir M=228 Data-post 256 bytes gir L= poster gir maksimalt blader Verste tilfelle gir bladene på dybde 4 Normalt å cache de to øverste nivåene i indre lager Resultat: poster kan hentes med to diskaksesser.

8 Innsetting og fjerning i B-tre Finn riktig bladnode Er det plass - sett inn Hvis ikke - splitt bladnoden - sett inn ekstra nøkkel i foreldrenoden hvis det er plass Hvis ikke - splitt foreldrenoden - sett inn ekstra nøkkel i besteforeldrenoden osv.. Hvis vi må splitte rota, vokser treet med ett nivå Splitting av indre noder er sjelden og ikke særlig dyrt. Det finnes løsninger som gir sjeldnere splitting

9 Sett inn 57

10 Sett inn 55

11 Sett inn 40

12 Slett 99

13 Utvidbar Hashing Alternativ til B-tre når ytre lager må anvendes Hva med vanlig Hashing Både åpen adressering og separate kjeder kan gi mange diskaksesser Rehashing er uhyggelig tidkrevende på disk Anta at hver blokk på disken tar M-poster Jo større M dess lavere tre I teorien kan vi velge M slik at treet har dybde 1 dvs to nivåer, men høy forgreiningsfaktor Rotnoden kan ligge i primærlager – bare én diskaksess Skal dette bli effektivt må vi unngå lineært søk i nøkler Utvidbar Hashing greier nettop dette

14 Utvidbar hashing - Eksempel Nøkkel har f.eks 6 biter, mens M=4 Bruker D biter til oppslag mot rotnoden Da inneholder rotnoden 2 D nøkler og pekere til diskblokker (bladnoder) Hver disknode inneholder elementer der de første d bitene er like og d<=D Når bladnoden blir full, splittes den i to noder der de første d+1 bitene er like Er d+1>D må rotnoden fordobles slik at vi får en nøkkel for hver mulig kombinasjon av d+1 biter To nøkler kan peke på samme bladnode, derfor trenger ingen flere bladnoder splittes

15 Sett inn Directory i RAM Bøtter på disk Antall felles biter i bøtta 6-bits data 01- bøtta 00- bøtta 10- bøtta

16

17 Utvidbar hashing Rask insert og find Hva om nøklene ikke er heltall? Ytelse: Antall bladnoder (N/M)*1,443 Snitt bladfyllingsgrad 0,69 Katalogens (Rotnodens) ventede størrelse O(N 1+1/M /M) Lav M gir STOR rotnode Hvordan sikre stor M?

18 Utvidbar Hashing i praksis Antar poster a 256B Blokkstørrelse 8kByte gir M=32 Antall blokker /(32*0.69)= For å dekke må vi minst ha 2 19 = pekere i katalogen Ventet katalogstørrelse er O(N 1+1/M /M)=O(517130) D=20? – forutsetter god spredning. Directory på 1M fire bytes pekere krever 4MB

19 Konklusjon B-tre og utvidbar hashing brukes når vi må på disk Disk er nødvendig ved store datamengder, men bør unngås hvis vi trenger rask respons Er disk uunngåelig er begge de nevnte gode alternativer B-trær er mer kontrollert, men mer komplisert

20 Kjøpe database eller bygge selv? Dagens algoritmer brukes i databaser Databaser vil vanligvis være tregere enn egne spesialbygde strukturer, men Databaser har mye ferdig funksjonalitet inkludert flerbrukerfunksjonalitet Databaser gir mindre krevende programmering og har høyere fleksibilitet Databaser kan tunes, lettere med algoritme-kunnskap Databaser gir mer krevende installasjon og konfigurasjon Databaser gir ekstra kostnad i produktet Databaser gir bedre integrasjonsmuligheter


Laste ned ppt "INF 295 Algoritmer og datastrukturer Forelesning 11 Når RAM ikke strekker til - B-trær og Utvidbar hashing Hans Fr. Nordhaug (Ola Bø)"

Liknende presentasjoner


Annonser fra Google