UNIVERSITETET. Indeksering. Hvordan finne et element raskt? Vera Goebel, Ellen Munthe-Kaas

Like dokumenter
UNIVERSITETET I OSLO. Indeksering. Hvordan finne et element raskt? Institutt for Informatikk. INF Ellen Munthe-Kaas

Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Treliknende strukturer Hashliknende strukturer Bitmapindekser

UNIVERSITETET. Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Hashliknende strukturer.

Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Trestrukturer Hashliknende strukturer Bitmapindekser

Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Trestrukturer Hashliknende strukturer Bitmapindekser

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved

Effektiv eksekvering av spørsmål

Hashing. INF Algoritmer og datastrukturer HASHING. Hashtabeller

INF2220: Forelesning 2

INF2220: Forelesning 2. Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7)

INF2220: Forelesning 2

Effektiv eksekvering av spørsmål

INF2220: Gruppe me 2. Mathias Lohne Høsten 2017

Effektiv eksekvering av spørsmål

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!

DBS18 - Strategier for Query-prosessering

INF2220: Forelesning 3

INF2220: Forelesning 3. Map og hashing Abstrakte datatyper (kapittel 3.1) Map (kapittel 4.8) Hashing (kapittel 5)

Hashing: Håndtering av kollisjoner

Effektiv eksekvering av spørsmål

Spørsmålskompilering del 1

Spørsmålskompilering del 1

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

Effektiv eksekvering av spørsmål

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

INF Algoritmer og datastrukturer

INF2220: Forelesning 3

INF1020 Algoritmer og datastrukturer

Flerveis søketrær og B-trær

Dagens plan: INF Algoritmer og datastrukturer. Repetisjon: Binære søketrær. Repetisjon: Binære søketrær

Oppgave 1a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet.

Sist gang (1) IT1101 Informatikk basisfag. Sist gang (2) Oppgave: Lenket liste (fysisk) Hva menes med konseptuelt og fysisk i forb med datastrukturer?

... HASHING. Hashing. Hashtabeller. hash(x)

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

Binære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013

UNIVERSITETET I OSLO

Notater til INF2220 Eksamen

Generelle Tips. INF Algoritmer og datastrukturer. Åpen og Lukket Hashing. Hashfunksjoner. Du blir bedømt etter hva du viser at du kan

Datastrukturer. Stakker (Stacks) Hva er en datastruktur? Fordeler / Ulemper. Generelt om Datastrukturer. Stakker (Stacks) Elementære Datastrukturer

INF Algoritmer og datastrukturer

Søkeproblemet. Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke?

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Normalisering. ER-modell

INF Algoritmer og datastrukturer

IN Algoritmer og datastrukturer

Eksamen iin115 og IN110, 15. mai 1997 Side 2 Oppgave 1 Trær 55 % Vi skal i denne oppgaven se på en form for søkestrukturer som er spesielt godt egnet

Spørsmålskompilering del 2

Datastrukturer for rask søking

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ragnar Normann 1

Lars Vidar Magnusson

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes

UNIVERSITETET I OSLO

TDT4225 Lagring og behandling av store datamengder

Alg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing. Børge Rødsjø

Liste som abstrakt konsept/datatype

Binære søketrær. En ordnet datastruktur med raske oppslag. Sigmund Hansen

INF Algoritmer og datastrukturer

Obligatorisk oppgave 1 INF1020 h2005

Definisjon: Et sortert tre

INF Algoritmer og datastrukturer

Datamodellering og databaser SQL, del 2

INF2220: Time 4 - Heap, Huffmann

INF2220: Time 12 - Sortering

INF Algoritmer og datastrukturer

Lars Vidar Magnusson

Kap 9 Tre Sist oppdatert 15.03

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Eksamensoppgave i TDT4225 Lagring og behandling av store datamengder

Kap 6.3: Symboltabellen Foiler ved Birger Møller-Pedersen Forelest av Stein Krogdahl 17. mars Dagens tema:

Parallelle og distribuerte databaser del III

Datamodellering og databaser SQL, del 2

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær:

Hvorfor sortering og søking? Søking og sortering. Binære søketrær. Ordnet innsetting forbereder for mer effektiv søking og sortering INF1010 INF1010

Datamodellering og databaser SQL, del 2

Alg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

EKSAMENSOPPGAVE. INF-1101 Datastrukturer og algoritmer. Adm.bygget, rom K1.04 og B154 Ingen

Repetisjonsforelesning, SQL og utover

Spørsmålskompilering. Basert på foiler av Hector Garcia-Molina

Definisjon. I et binært tre har hver node enten 0, 1 eller 2 barn

Hashtabeller. Lars Vidar Magnusson Kapittel 11 Direkte adressering Hashtabeller Chaining Åpen-adressering

TDT4225 Lagring og behandling av store datamengder

INF1010 siste begreper før oblig 2

Selv-balanserende søketrær

Grunnleggende Datastrukturer

Heap og prioritetskø. Marjory the Trash Heap fra Fraggle Rock

Innføring i blokkjedeteknologi. Slobodan Petrović, NTNU Gjøvik 14/

Hva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema

Oppgave 1 Datamodellering 22 %

Integritetsregler i SQL. Primærnøkler

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

INF Algoritmer og datastrukturer. Hva er INF2220? Algoritmer og datastrukturer

Trær. En datastruktur (og abstrakt datatype ADT)

Enkle datastrukturer. Lars Greger Nordland Hagen. Introduksjon til øvingsopplegget og gjennomgang av python

Integritetsregler i SQL

Hvordan databasesystemene kan hjelpe RAM-produsentene

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre:

Transkript:

UNIVERSITETET IOSLO Indeksering Hvordan finne et element raskt? Basert på foiler av Hector Garcia Molina Basert på foiler av Hector Garcia-Molina, Vera Goebel, Ellen Munthe-Kaas

Oversikt Konvensjonelle indekser B-trær og hashing hi Flerdimensjonale indekser Tre-lignende strukturer Hash-lignende strukturer Bitmap-indekser INF3100 30.3.2009 Ragnhild Kobro Runde Side 2

Indekser En indeks på et attributt A er en datastruktur som gjør det lett å finne de elementene som har en bestemt verdi for A (søkenøkkelen). Indeksen er sortert på søkenøkkelen. For hver verdi av søkenøkkelen har indeksen en liste med pekere til de tilsvarende postene. Flere indekser på samme fil gir raskere søking. økt kompleksitet endringer må også oppdatere indeksene. økt lagerbehov. INF3100 30.3.2009 Ragnhild Kobro Runde Side 3

Ulike typer indekser Tett (dense) vs tynn (sparse). Primærindeks. Cluster-indeks. Sk Sekundærindeks. idk INF3100 30.3.2009 Ragnhild Kobro Runde Side 4

Tette og tynne indekser En tett indeks har ett oppslag for hver verdi av a b c... z søkenøkkelen. 10 20 30 40 50 60 20... 30... 40... 50... 60... En tynn indeks har ett oppslag for hver datablokk. 10 40 70 a b c... z 20... 30... 40... 50... 60... INF3100 30.3.2009 Ragnhild Kobro Runde Side 5

Et lite regnestykke Anta at vi har 1.000.000 poster på 300B, 4B søkenøkkel, 4B pekere. 4KB blokkstørrelse, snitt 5.6 ms for å hente en blokk. 13.6 recorder per blokk, dvs 76924 blokker med data. 512 indekser per blokk, dvs 1954 blokker for en tett indeks og 151 blokker for en tynn. Uten indeks: 76924/2 = 38462 blokkaksesser i snitt, dette tar 38462 * 5.6 ms = 215.4 s Med tett indeks og binærsøk: log2(1954) +1= 11 + 1 = 12 blokkaksesser (maks), dette tar 12 * 5.6 ms = 67.2 ms 3205 ganger raskere enn uten indeks! Med tynn indeks og binærsøk: log2(151) + 1 = 8 + 1 = 9 blokkaksesser (maks), dette tar 9 * 5.6 ms = 50.4 ms 4272 ganger raskere enn uten indeks, og 133ganger 1.33 raskere enn med tett indeks. INF3100 30.3.2009 Ragnhild Kobro Runde Side 6

Flernivå-indekser En indeks kan oppta flere blokker. En flernivå-indeks, dvs en indeks på indeksen, kan økeeffektiviteten. Forts. regnestykket: trenger bare 1954 / 512 = 4 blokker for 2. nivå log2(4) +1+1= + 1 2 + 1 + 1 = 4 blokkaksesser, dette tar 4 * 5.6 ms = 22.4 ms 2.25 ganger raskere enn en enkelt tynn indeks, 3 ganger raskere enn en tett indeks. tynn 2. nivå 10 70 130 200 300 400 Kan i prinsippet ha vilkårlig mange indekser. tett 1. nivå 10 20 30 40 50 60 70 80 90 100 110 120 a b c... z 20... 30... 40... 50... 60... 70... 80... 90... 100... 1 120... INF3100 30.3.2009 Ragnhild Kobro Runde Side 7

Eksempel: Sletting ved tynn indeks Slett post med a = 60 Ingen endring nødvendig i idk indeksen. Slett post med a = 40 10 40 50 70 100 130 160 a b c... z 20... 30... 50 40... 50... 60... Den første posten i blokken 70... har blitt oppdatert, så 80... indeksen må også 90... oppdateres. 100... 1 120... INF3100 30.3.2009 Ragnhild Kobro Runde Side 8

Eksempel: Sletting ved tett indeks Slett post med a = 60 Slett post med a = 40 I mange tilfeller ønsker man å komprimere dataene i blokkene. Man kan også komprimere heledatasettet datasettet, menvanligvis beholdes noe ledig plass for fremtidig innsetting. 10 20 30 50 40 50 60 70 80 90 100 110 120 a b c... z 20... 30... 50 40... 50... 60... 70... 80... 90... 100... 1 120... INF3100 30.3.2009 Ragnhild Kobro Runde Side 9

Eksempel: innsetting ved tynn indeks Sett inn post med a = 60 Vi er heldige ledig plass der vi trenger det. a b c... z Sett inn post med a = 25 Må flytte posten med a=30 til neste blokk for å lage plass. Den første posten i blokk to er endret, og indeksen må oppdateres. Merk: Kunne også satt inn en ny/overflyts-blokk. 10 30 40 70 100 130 160 20... 30 25... 40 30... 40 60 60 70... 80... 90... 100... 1 120... INF3100 30.3.2009 Ragnhild Kobro Runde Side 10

Eksempel: Innsetting ved tynn indeks Sett inn post med a = 95 Ikke plass sett inn a b c... z ny/overflyts-blokk 10 Overflytsblokk: Trenger ikke gjøre noe i indeksen (har bare pekere til hovedblokkene). Ny blokk: Indeksen må oppdateres. Innsetting ved tette indekser gjøres på samme måte men indeksen må oppdateres es hver gang. g. 40 70 100 95 100 20... 30... 40... 50 60 70... 80... 90... 100... 1 120... 95... INF3100 30.3.2009 Ragnhild Kobro Runde Side 11

Tette vs tynne indekser Tett Tynn plass Ett indeksfelt per post Ett indeksfelt per datablokk blokkaksesser mange få postaksesser Direkte aksess Må lete innenfor blokken exist-spørringer Bruk indeksen alene Må alltid aksesssere blokken bruk overalt Ikke på uordnede elementer endringer Må alltid oppdateres hvis post-rekkefølgen endres Oppdateres bare hvis den første posten i en blokk endres. INF3100 30.3.2009 Ragnhild Kobro Runde Side 12

Duplikate søkenøkler (cluster-indekser) En cluster-indeks kan brukes hvis filen er sortert, selv om 10 søkenøkkelen ikke er unik. 10 Eksempel 1 tett indeks: Ett indeksfelt per post. Lett å finne poster og hvor mange som finnes av hver. Flere felt enn nødvendig? 10 10 20 30 30 40 40 a b c... z 20... 30... 30... 40... 40... INF3100 30.3.2009 Ragnhild Kobro Runde Side 13

Cluster-indekser: Eksempel 2 tett indeks Bare ett indeksfelt per unike 10 søkenøkkel. 20 Mindre indeks raskt søk. Mer komplisert å finne påfølgende poster. 30 40 a b c... z 20... 30... 30... 40... 40... INF3100 30.3.2009 Ragnhild Kobro Runde Side 14

Cluster-indekser: Eksempel 3 tynn indeks Indeksfeltene peker til første 10 post i hver blokk Liten indeks raskt søk Vanskelig å finne poster. F.eks. finn alle poster med a = 30. 10 30 a b c... z 20... 30... 30... 40... 40... INF3100 30.3.2009 Ragnhild Kobro Runde Side 15

Cluster-indekser: Eksempel 4 tynn indeks Indeksfeltet er første nye post i hver blokk. Liten indeks raskt søk. Vanskelig å fjerne poster. Kan vi i det hele tatt fjerne den andre forekomsten med a = 30? 10 30 30 40 a b c... z 30... 30... 30... 30... 30... 40... 40... 40... INF3100 30.3.2009 Ragnhild Kobro Runde Side 16

Usorterte filer sekundærindekser Hvis filen er usortert (eller sortert på et annet attributt), kan man bruke en sekundærindeks. Sortert på søke- nøkkelen raskt søk. 1. nivå er alltid tett høyere nivåer er tynne. Duplikater tillates. 10 30 10 10 20 20 30 30 30 30 30 a b c... z 30... 20... 30... 30... 30... 20... 30... INF3100 30.3.2009 Ragnhild Kobro Runde Side 17

Inverterte indekser Hva hvis man ønsker å søke på elementer innenfor et attributt? SELECT * FROM R WHERE a LIKE %cat% Søke etterdokumentersominneholdervisse nøkkelord, f.eks. søkemotorer som Google, Altavista, Excite, Lycos, AllTheWeb osv. INF3100 30.3.2009 Ragnhild Kobro Runde Side 18

Alternativ 1: true/false tabell Eksempel: tillatte nøkkelord computer, printer, laptop, disk,... computer index printer index laptop index has computer has printer has laptop disk has disk index... T T F F... F T F T... F F T T...... connected the printer to the computer...... stored the file on the disk before sending it to the printer...... the laptop has a 50 GB disk... INF3100 30.3.2009 Ragnhild Kobro Runde Side 19

Alternativ 2: Invertert indeks Eksempel: computer disk laptop printer... connected the printer to the computer...... stored the file on the disk before sending it to the printer... buckets... the laptop has a 50 GB disk... INF3100 30.3.2009 Ragnhild Kobro Runde Side 20

B-Trær og hashinghi

B + -trær Hver node har n søkenøkler og n+1 pekere. Indre noder: alle pekere er til sub-noder. Løv-noder: n datapekere og 1 nestepeker. Ingen noder kan være tomme. Indre noder: minst (n+1)/2 pekere til sub-noder. Løv-noder: minst (n+1)/2 datapekere. Eksempel (n=3): 11 23 1 2 7 11 17 23 25 a... 25... 23... 17... 11... 7... 2... 1... INF3100 30.3.2009 Ragnhild Kobro Runde Side 22

B + -trær: B + -trær: effektivitet Et søk må alltid gå fra roten og til en løvnode, dvs. antall blokkaksesser er lik høyden på treet pluss aksessering av selve postene. Antall nivåer er vanligvis veldig liten typisk 3. Intervall-søking går veldig raskt. Ved stor n er det sjelden nødvendig å splitte/slå sammen noder. Disk I/O kan reduseres ved å holde indeksblokkene i minnet. Eksempel: 4B søkenøkler, 8B pekere, 4KB blokker (ingen headere) Hvor mange verdier kan lagres i hver node? 4n + 8(n+1) 4096 n = 340 Nodene er i snitt 75% fulle. Hvor mange poster kan et B + -tre med 3 nivåer inneholde? (340 * 75 %) 3 = 165813375 16.6 million poster INF3100 30.3.2009 Ragnhild Kobro Runde Side 23

Hash-tabeller Bruker en hash-funksjon fra søkenøkkelen til en arrayindeks med peker videre til hvilken bucket som eventuelt inneholder den aktuelle posten. Arraystørrelsen er vanligvis et primtall. Viktig med en god hash-funksjon! Rask. God fordeling av søkenøklene. Eksempel: Arraystørrelse B=5 h(key) = mod(key, B) 0 1 2 3 4 bucket-pekere i minnet buckets 5 10 1 6 2 7 3 8 4 9 INF3100 30.3.2009 Ragnhild Kobro Runde Side 24

Hash-tabeller: effektivitet Ideelt er arraystørrelsen stor nok til at alle elementene for en hashverdi passer i en bucket-blokk. Da får vi signifikant færre disk-operasjoner enn med vanlige indekser og B-trær. Raskt søk etter spesifikk søkenøkkel. Flere poster kan føre til flere blokker per bucket. Dårlig på intervall-søk. INF3100 30.3.2009 Ragnhild Kobro Runde Side 25

Dynamiske hashtabeller Vanskelig å holde alle elementene innenfor en bucket-blokk hvisantall tllposter øker mens hash-tabellenh tbll er statisk. ttik Dynamiske hash-tabeller tillater tabell-størrelsen å variere slik at det holder med en blokk per bucket. utvidbar (extensible) hashing. lineær (linear) hashing. Les detaljer om disse selv! INF3100 30.3.2009 Ragnhild Kobro Runde Side 26

Sekvensielle vs hash-indekser: Sekvensielle indekser som f.eks. B-trær er gode på intervallsøk: SELECT * FROM R WHERE R.A > 5 Hash-indekser er gode når det søkes etter en spesiell nøkkel: SELECT * FROM R WHERE R.A = 5 INF3100 30.3.2009 Ragnhild Kobro Runde Side 27

Syntaks: Indekser i SQL CREATE INDEX name ON relation_name (attribute) CREATE UNIQUE INDEX name ON relation_name (attribute) definerer en kandidatnøkkel DROP INDEX name Merk: Kan ikkeangi Type indeks, f.eks. B-tre, hashing osv. Parametre slik som load faktor, hash-størrelsestørrelse osv. INF3100 30.3.2009 Ragnhild Kobro Runde Side 28

Spørringer med flere betingelser SELECT... FROM R WHERE a = 30 AND b < 5 Strategi 1: Bruk en indeks, f.eks. på a. Finn og hent alle postene med a = 30. Søk gjennom disse postene for å finne de med b < 5. Enkel strategi. Risikerer å lese mange unødvendige poster fra disk. INF3100 30.3.2009 Ragnhild Kobro Runde Side 29

Flere betingelser: strategi 2 SELECT c FROM R WHERE a=30 AND b= x Bruk to tette indekser,enforaog en og en for b. Finn alle pekere til poster med a = 30. Finn alle pekere til poster med b = x. 10 a b c x 20 y 30 z 1 30 z 10 x 2 20 y 1 Sammenlign (snitt) pekerne og hent de aktuelle postene. Plukk ut de aktuelle attributtene. a indeks buckets for a 10 y 2 30 z 1 30 x 2 30 y 1 20 z 2 30 x 1 buckets for b b indeks INF3100 30.3.2009 Ragnhild Kobro Runde Side 30

Flerdimensjonale l idk indekser

Flerdimensjonale indekser En flerdimensjonal indeks kombinerer flere dimensjoner i samme indeks. En enkel kltre-lignende tilnærming: i I 2 I 3 (key 1, key 2, key 3,...) I 1 I 2 I 3 I 2 I 3 INF3100 30.3.2009 Ragnhild Kobro Runde Side 32

Flerdimensjonale indekser: eksempel Eksempel, tett indeks: SELECT... FROM R WHERE a = 30 AND b = x søkenøkkel = (30, x) les a-dimensjonen. (30, x) søk etter 30, finn den tilsvarende indeksen for b-dimensjonen. søk etter x, les tilsvarende diskblokk kk og hent posten. velg ut de aktuelle attributtene. a indeks... 10 x 20 y 30... 40 x... y z b indeks... x y z z a b c 30 z 1 10 x 2 20 y 1 10 y 2 30 z 1 20 x 2 30 y 1 20 z 2 30 x 1 INF3100 30.3.2009 Ragnhild Kobro Runde Side 33

Flerdimensjonale indekser For hvilke spørringer er dette en god indeks? Finn poster med a = 10 AND b = x Finn poster med a = 10 AND b x Finn poster med a = 10 Finn poster med b = x Finn? poster med a 10 AND b = x Risikerer å måtte søke i mange indekser i neste dimensjon. Haddeværtbedre om dimensjonene endret rekkefølge. I a I b I b I b Det finnes mange andre tilnærminger... Andre tre-lignende strukturer Hash-lingende strukturer (Bitmap-indekser) INF3100 30.3.2009 Ragnhild Kobro Runde Side 34

Map View En flerdimensjonal indeks kan ha mange dimensjoner. Hvisvi iholder oss til to (som i dtf det forrige eksempelet), kan vi se på indeksen som et geografisk kart: b b 3 b 5 b 2 b 1 b 4 Søking tilsvarer nå å søke i kartet etter punkter: a 1 og b 1 linjer: a 2 og <b 2,b 3 > arealer: <a 3,a 4 > og <b 4,b 5 > a 1 a 2 a 3 a 4 a INF3100 30.3.2009 Ragnhild Kobro Runde Side 35

Tre-strukturer Det finnes mange tre-lignende strukturer som tilsvarer å lete etter kart-arealer: arealer: kd-trær quad-trær R-trær Vi skal se på kd-trær som et eksempel, les om de andre i læreboken! Men alle disse må oppgi minst en av følgende egenskaper ved B-trær: Balansering alle nodene er på samme nivå. Korrespondanse mellom tre-noder og disk-blokker. kk Ytelse for oppdaterings-operasjoner. INF3100 30.3.2009 Ragnhild Kobro Runde Side 36

kd trær Et kd-tree (k-dimensjonalt tre) er et binærtre hvor hver node inneholder Et attributt A. En verdi V som splitter resten av datapunktene i to. Vi skal se på en variant hvor Indre noder bare inneholder V-verdien: Venstre barn har verdier mindre enn V. Høyre barn har verdier større enn eller lik V. Løvnoder er blokker med plass til et antall poster. De ulike dimensjonene er flettet: nivå 0 nivå 1 a-dimensjon b-dimensjon...... nivå n nivå n+1 a-dimensjon b-dimensjon...... INF3100 30.3.2009 Ragnhild Kobro Runde Side 37

kd trær: eksempel 30 50 Finn posten (a,b) = (70, 75) 70 80 70 b l h i f d b c a 35 25 c g k h 80 l m i b f Merk 1: verdier på ventstre og høyre side er ikke relatert til noden rett over, dvs her kan vi ha vilkårlige verdier mindre enn 50. 80 d 80 a 30 k 25 35 m g 50 80 Merk 2: kan ha tomme blokker a INF3100 30.3.2009 Ragnhild Kobro Runde Side 38

kd trær: noen problemer Kan måtte sjekke begge grenene ut fra roten, f.eks. for betingelser på b-dimensjonen. Kan måtte sjekke begge grenene til et sub-tre ved intervall- søk, f.eks. ønsket ktintervall er <10,30> og nodeverdien di er 20. Høyere trær sammenligned med B-trær Kostbart å lagre hver node i en egen blokk. Mange flere blokkaksesser enn ved B-trær. Antall blokkaksesser kan reduseres hvis vi Splitter i mer enn to grener. Grupperer indre noder i en blokk, f.eks. en node og alle etterfølgerne i et visst antall nivåer. INF3100 30.3.2009 Ragnhild Kobro Runde Side 39

Hash-lignende strukturer: grid-filer Grid-filer utvider tradisjonelle hash-indekser Hasher verdier for hvert attributt i en flerdimensjonal indeks. Hasher vanligvis ikke enkeltverdier, men regioner h(key) = <x,y> Grid-linjer partisjonerer området i striper. Eksempel (2 dimensjoner): b Finn post med (a,b) = (22, 31) h 1(22) = <a x, a y> h 2 (31) = <b m, b n > post f h 2 (b-key) l i h f d b c a k m h 1 (a-key) g a INF3100 30.3.2009 Ragnhild Kobro Runde Side 40

Grid-filer Grid-filer kan raskt finne poster med key 1 = V i AND key 2=X j key 1 = V i key 2 = X j key 1 V i Grid-filer: AND key 2 < X j Bra for søking ved flere nøkler. Bruker mye plass, krever en del organisering. Les selv om partisjonerte hash-funksjoner! INF3100 30.3.2009 Ragnhild Kobro Runde Side 41

Bitmap-indekser Utgangspunkt: Alle recorder er tilordnet et uforanderlig, entydig tall Nummering fra 1 til n Nummeret kan betraktes som en record-id og kan ikke gjenbrukes Velg ut feltet F som det skal lages en indeks på For hver benyttet verdi v for F i en av recordene, opprett en bitvektor b v med lengde n Hvis record nr. ih har F=v, la b v [i]=1 Hvis record nr. i har F v, la b v [i]=0 INF3100 30.3.2009 Ragnhild Kobro Runde Side 42

Bitmap-indekser: eksempel recordnummer fil F G 1 30 foo 2 30 bar bitvektorer for F 3 40 baz 4 50 fou 30: 1 1 0 0 0 1 5 40 bar 40: 0 0 1 0 1 0 6 30 baz 50: 0 0 0 1 0 0 INF3100 30.3.2009 Ragnhild Kobro Runde Side 43

Karakteristika Plassbehov: Totalt antall bits er #records*#verdier 2 I verste fall trengs n 2 bits (men da har hver bitvektor bare én 1-bit) Bitvektorene kan komprimeres; det er aldri mer enn n 1-bits totalt i bitvektorene Effektiv for partial match queries (= angi verdier for noen felter, finn alle som har gitte verdier) Beregn bitvis AND på tvers av bitmap-indeksene for de aktuelle attributtene range queries (= angi intervaller for noen felter, finn alle som har verdier innen intervallene) Beregn bitvis OR innen intervallene og bitvis AND mellom intervallene INF3100 30.3.2009 Ragnhild Kobro Runde Side 44

Oppsummering Søking er kostbart Indekser Minimaliserer søkekostnader og blokkaksesser. Krever mer plass passtotalt. oa Innsetting/oppdatering/slettering av poster blir mer komplisert. Konvensjonelle indekser. B-trær (B + -trær). Hashing. Flerdimensjonale indekser. Tre-lignende strukturer. Hash-lignende strukturer. Bitmap-indekser. INF3100 30.3.2009 Ragnhild Kobro Runde Side 45