De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Gegevensbanken 2012 Hashing en Indexstructuren II Bettina Berendt http://people.cs.kuleuven.be/~bettina.berendt/

Verwante presentaties


Presentatie over: "Gegevensbanken 2012 Hashing en Indexstructuren II Bettina Berendt http://people.cs.kuleuven.be/~bettina.berendt/"— Transcript van de presentatie:

1 Gegevensbanken Hashing en Indexstructuren II Bettina Berendt

2 Indexstructuren: Motivatie & Samenvatting

3 Waar zijn we? Les # wie wat 1 ED intro, ER
2 ED EER, (E)ER naar relationeel schema 2 ED relationeel model 3 KV Relationele algebra & relationeel calculus 4,5 KV SQL 6 KV Programma's verbinden met gegevensbanken 7 KV Functionele afhankelijkheden & normalisatie 8 KV PHP 9 BB Beveiliging van gegevensbanken 10 BB Geheugen en bestandsorganisatie 11 BB Hashing en Indexstructuren I 12 BB Hashing en Indexstructuren II 13 BB Queryverwerking 14,15 BB Transactieverwerking en concurrentiecontrole 16 BB Data mining en data warehousing 17 ED XML, NoSQL Fysisch model / vragen Efficientie en veiligheid zijn niet-functionele vereisten (HOE doet een systeem iets) vs. Functionele vereisten (WAT doet een systeem)

4 Wat doen als de keuken te klein is?
026__0020_Rezepte/Chilibrot/brot.jpg

5 Wat doen als de keuken te klein is?
* Het brood ligt in de slaapkamer * De eieren liggen in de eetkamer 026__0020_Rezepte/Chilibrot/brot.jpg

6  Externe hashing http://www.baeckerei-brueser.de/images/ei.jpg
Het brood ligt in de slaapkamer * De eieren liggen in de eetkamer 026__0020_Rezepte/Chilibrot/brot.jpg

7 Twee problemen om te vermijden
* Het brood ligt in de slaapkamer * De eieren liggen in de eetkamer . * Het brood ligt in de slaapkamer * De volgende lijst ... * De eieren liggen in de eetkamer 026__0020_Rezepte/Chilibrot/brot.jpg

8 Vraag: waarom deze twee opties? (MySQL als maar een voorbeeld)
→ dit zijn twee structurele types van indexen

9 De twee hoorcolleges: 2 foci
Hashing en Indexstructuren I: Basisideen; indexen als bestanden  principes van de les over bestandsorganisatie toepassen Hashing en Indexstructuren II: „slimmere ideen“; operaties op indexen  hoe werkt het?

10 Agenda Dynamische hashing Uitbreidbare hashing Lineaire hashing
Boomstructuren als indexen Indexen op meerdere velden

11 Agenda Dynamische hashing Uitbreidbare hashing Lineaire hashing
Boomstructuren als indexen Indexen op meerdere velden

12 + + - - - Externe “static” hashing: voor- en nadelen En:
record snel bereikbaar via sleutel ) toevoegen en weglaten redelijk eenvoudig ) Ketening opzoeken via ander dan sleutelveld is moeilijk ) doorlopen van bestand in sleutelvolgorde kan traag zijn ) En: vaste ruimte gereserveerd voor bestand (“static hashing”) indien te groot: veel verloren ruimte indien te klein: veel overloop  snelheidsverlies na een tijdje eventueel reorganisatie nodig + - - -

13 Dynamische bestandsuitbreiding
Sommige hashing technieken laten dynamische expansie van bestanden toe aantal voorziene cellen groeit en krimpt met bestand We behandelen 3 methoden: “dynamische hashing“ uitbreidbare (extendible) hashing lineaire hashing

14 Dynamische & Uitbreidbare hashing: idee
* als bruin: bucket 1 * als groen: bucket 2 * als bruin EN eieren: bucket 1 * als bruin EN brood: bucket 2 * als groen: bucket 3

15 Dynamische hashing: voorbeeld (1)
vb. (met 1 record per cel) record A heeft hashwaarde 1 cel, geen trie nodig record B met hashwaarde wordt toegevoegd Trie bouwen Trie moet meteen naar eerste 2 bits kijken, want eerste bit is zelfde

16 Dynamische hashing: voorbeeld (2)
C met hashwaarde wordt toegevoegd Bij weglaten van records evt. cellen weer samensmelten  trie krimpt

17 Dynamische hashing: samenvatting
Begin met 1 cel Bij overloop: cel splitst in twee records verdeeld volgens 1-ste bit van hashwaarden index wordt gebouwd ("trie“ - van retrieve : boomvormige indexstructuur ) interne knooppunten: binaire splitsing 0 - 1 externe knooppunten: wijzen naar een cel Telkens een cel overloopt: splitsing van cel + aanpassing index volgens 1-ste bit van hashwaarde die een goede splitsing oplevert

18 Dynamische hashing: zoeken via een trie
h := hashwaarde van record; t := topknoop van trie; i := 1; zolang t geen blad is: als de i-de bit van h een 1 is dan t := linkerkind anders t := rechterkind; i := i+1 zoek in de cel waarvan het adres in t zit

19 Agenda Dynamische hashing Uitbreidbare hashing Lineaire hashing
Boomstructuren als indexen Indexen op meerdere velden

20 Uitbreidbare hashing: voorbeeld (1)
Bron: Hakan (2009). File Organization.

21 Uitbreidbare hashing: voorbeeld (2)

22 Uitbreidbare hashing: voorbeeld (3)

23 Uitbreidbare hashing: voorbeeld (4)

24 Uitbreidbare hashing: voorbeeld (5)

25 Uitbreidbare hashing: voorbeeld (6)

26 Uitbreidbare hashing: voorbeeld (7)

27 Uitbreidbare hashing: voorbeeld (8)

28 Uitbreidbare hashing: voorbeeld (9)

29 Uitbreidbare hashing: voorbeeld (10)

30 Taak: Uitbreidbare hashing: voorbeeld (11)

31 Uitbreidbare hashing: voorbeeld (12)

32 Uitbreidbare hashing: voorbeeld (13)

33 Uitbreidbare hashing: samenvatting
Index = tabel met 2d elementen d = globale diepte van de index eerste d bits van hashwaarde bepalen plaats in index d' = lokale diepte van een cel voor deze cel wordt enkel naar de eerste d' bits van de hashwaarde gekeken d' ≤ d Waarde van d kan met 1 verhogen of verminderen grootte van tabel verdubbelt of halveert hierdoor Tabel vergelijkbaar met "vervolledigde" trie (waarbij alle bladeren op hetzelfde niveau zitten)

34 Uitbreidbare hashing: vraag
„Wat gebeurt er als er nog een 1001 toegevoegt wordt?“ (= x keer dezelfde sleutel, met x > bucket size m) Antwoord 1: M.A. Weiss. Data structures and algorithms in C. retrieved from p. 363: “[…] there is the possibility of duplicate keys; if there are more than m duplicates, then this algorithm does not work at all. In this case, some other arrangements need to be made.” Dit “andere arrangement” kan bv. ketening zijn, zoals voorgesteld als een mogelijkheid in het originele paper on Uitbreidbare Hashing: Antwoord 2: Ronald Fagin, Jurg Nievergelt, Nicholas Pippenger, and H. Raymond Strong Extendible hashing—a fast access method for dynamic files. ACM Trans. Database Syst. 4, 3 (Sept. 1979),

35 + + - - Uitbreidbare hashing: Voor- en nadelen
extra ruimte voor tabel is klein max grootte is 2k met k # bits in hashwaarden uitbreiding van bestand relatief goedkoop bij overloop slechts 1 cel te splitsen enkel verdubbeling van tabel vraagt redelijk veel werk 1 extra indirectie eerst blok met index lezen, dan pas juiste cel, en daarna gegevensblok zelf relatief klein nadeel + - groeit exponentieel -

36 Agenda Dynamische hashing Uitbreidbare hashing Lineaire hashing
Boomstructuren als indexen Indexen op meerdere velden

37 Lineaire hashing: idee
Gebruikt geen extra index Beginsituatie: M cellen genummerd 0 .. M-1 Hashfunctie h0(k) = k mod M Bij eerste overloop: keten nieuw record vast aan zijn cel splits cel 0 (dus niet noodzakelijk de overgelopen cel!) records naar cel 0 en cel M volgens h1(k) = k mod 2M Bij elke volgende overloop: ketening splits cel i-1 naar i-1 en M+i-1 volgens h1(k)

38 Lineaire hashing: eigenschappen
geen index, enkel aantal reeds gesplitste cellen n bijhouden gebruik h1 voor eerste n cellen, h0 voor de andere Zolang n < M : zelfde hashfuncties blijven toepassen Wanneer n = M: M := 2M; h0 := h1; n := 0 laadfactor l = r / (d*N) r = aantal aanwezige records, d = celdiepte, N = aantal cellen wanneer l klein wordt, cellen weer samensmelten

39 Lineaire hashing: voorbeeld (1)
bucket capacity = 2 collision resolution strategy: chaining split rule: load factor > 0.7 Load factor = r / (bfr * N) r : current number of file records bfr: max. number of records that can fit into a bucket N: current number of file buckets initially M = 4 (M: size of the primary area) hash functions: hi(key) = key mod 2i  M (i = 0, 1, 2, …) Trace the insertion process of the following keys into a linear hashing file: 3, 2, 14, 1, 8, 4, 5, 10, 7, 24 Bron: Chen, Y. (2009). File Organization. (minimaal veranderd)

40 Lineaire hashing: voorbeeld (2)
Insert 3 Initial hash function: hi(key) = key mod 2i  M, i = 0

41 Lineaire hashing: voorbeeld (2)
3 Insert 3 Initial hash function: hi(key) = key mod 2i  M, i = 0

42 Lineaire hashing: voorbeeld (3)
3 Insert 3 2 3 Insert 2 Initial hash function: hi(key) = key mod 2i  M, i = 0

43 Lineaire hashing: voorbeeld (4)
3 Insert 3 2 3 Insert 2 Initial hash function: hi(key) = key mod 2i  M, i = 0 2 14 3 Insert 14

44 Lineaire hashing: voorbeeld (5)
3 Insert 3 2 14 3 Insert 2 Initial hash function: hi(key) = key mod 2i  M, i = 0 2 14 3 Insert 14 1 2 14 3 Insert 1

45 Lineaire hashing: voorbeeld (6)
3 Insert 3 2 3 Insert 2 Initial hash function: hi(key) = key mod 2i  M, i = 0 2 14 3 Insert 14 1 2 14 3 Insert 1 8 1 2 14 3 Insert 8

46 Lineaire hashing: voorbeeld (7)
The first phase – phase0 when inserting the 6th record (4) we would have but the load factor 6/8= 0.75 > 0.70 and so bucket 0 must be split (using h1 = Key mod 2M): 4 8 1 2 14 3 n=0 before the split (n is the point to the bucket to be split.) 8 1 2 14 3 4 n=1 after the split load factor: 6/10=0.6 no split

47 Lineaire hashing: voorbeeld (7)
The first phase – phase0 when inserting the 6th record (4) we would have but the load factor 6/8= 0.75 > 0.70 and so bucket 0 must be split (using h1 = Key mod 2M): 4 8 1 2 14 3 n=0 before the split (n is the point to the bucket to be split.) 8 1 2 14 3 4 n=1 after the split load factor: 6/10=0.6 no split

48 Lineaire hashing: voorbeeld (8)
insert(5) 8 1 2 14 3 4 n=1 load factor: 7/10=0.7 no split 8 1 5 2 14 3 4

49 Lineaire hashing: voorbeeld (8)
insert(5) 8 1 2 14 3 4 n=1 load factor: 7/10=0.7 no split 8 1 5 2 14 3 4

50 Lineaire hashing: voorbeeld (9)
insert(10) 8 1 5 2 14 3 4 n=1 load factor: 8/10=0.8 split using h1. 8 1 5 2 14 3 4 overflow 10

51 Lineaire hashing: voorbeeld (9)
insert(10) 8 1 5 2 14 3 4 n=1 load factor: 8/10=0.8 split using h1. 8 1 5 2 14 3 4 overflow 10

52 Lineaire hashing: voorbeeld (9)
8 1 2 14 3 4 5 overflow 10 n=2 load factor: 8/12=0.66 no split

53 Lineaire hashing: voorbeeld (10)
insert(7) 8 1 2 14 3 4 5 n=2 load factor: 9/12=0.75 split using h1. overflow 10 8 1 2 14 3 7 4 5 overflow 10

54 Lineaire hashing: voorbeeld (10)
8 1 2 10 3 7 4 5 14 n=3 load factor: 9/14=0.642 no split. insert(24) 8 1 2 10 3 7 4 5 14

55 Taak: Lineaire hashing: voorbeeld (11)
8 1 2 10 3 7 4 5 14 n=3 load factor: 9/14=0.642 no split. insert(24) 8 1 2 10 3 7 4 5 14

56 Lineaire hashing: voorbeeld (11)
8 24 1 2 10 3 7 4 5 14 n=3 load factor: 10/14=0.71 split using h1. 8 24 1 2 10 3 4 5 14 7

57 Lineaire hashing: voorbeeld (8)
24 1 2 10 3 7 4 5 14 n=3 load factor: 10/14=0.71 split using h1. 8 24 1 2 10 3 4 5 14 7

58 Op dit moment hebben we de volgende structuur:
Een lineaire hash met file level j = 1 8 cellen h0 = k mod (2j * 4) = k mod (21 * 4) = k mod 8 (de naastvolgende h1 wordt h1 = k mod (22 * 4) = k mod 16) n = 0 Door het laatste wordt het mogelijk dat elke cel herhaald gesplitst wordt en dan ook waarden die bij de eerste splitsing niet worden herverdeeld nu worden herverdeelt! Vb: sleutelwaarde 18 18 mod 4 = 18 mod 8 = 18 mod 16 = 2  18 blijft lang in cel 2, misschien in een overloopgebied, en wordt niet herverdeeld MAAR: als h1 = k mod 32 bereikt wordt, dan gaat 18 naar cel 18

59 Lineaire hashing: zoeken
als n=0 dan m := hj(k) anders m := hj(k); als m<n dan m := hj+1(k); zoek in de cel met hashwaarde m (en evt. in de overloop ervan)

60 Agenda Dynamische hashing Uitbreidbare hashing Lineaire hashing
Boomstructuren als indexen Indexen op meerdere velden

61 Algoritme voor zoeken in ijle primaire multi-niveau-index naar record met sleutel K
p := adres van top-blok van index; voor j := t tot 1: lees blok met adres p (op niveau j in index); zoek in p een record i zodat Kj(i) <= K < Kj(i+1); p := pj(i); lees het blok gegevens met adres p; zoek in p naar het record met sleutel K

62 Operaties in multi-niveau indexen
Weglaten: door te markeren Toevoegen: m.b.v. overloopgebieden Na een tijdje: reorganisatie heel het bestand wordt sequentieel doorlopen en herschreven naar nieuw bestand overloop en markeringen worden opgeruimd nieuwe index wordt gebouwd op nieuw bestand Voordelen: snelle toegang tot bestand, toevoegingen en weglatingen tamelijk efficiënt Nadelen: overloop werkt vertragend, verkwisting van ruimte, geregelde reorganisatie vraagt tijd + -

63 Boomstructuren als indexen
Binaire zoekboom is geordend: 1 waarde in knoop in linkerdeelboom enkel kleinere waarden in rechterdeelboom enkel grotere waarden Opzoeken van waarde vraagt tijd evenredig met hoogte h van boom "gewoonlijk" : h  log2 n met n = # waarden in de boom dus: zoeken is efficiënt Boom groeit en krimpt naarmate van de gegevens  dynamisch + +

64 ... maar ...

65 Evenwichtigheid Aanpassen van boom (toevoegen, weglaten): ook tijdscomplexiteit evenredig met h gemiddeld dus ook efficiënt MAAR: aanname van "evenwichtigheid" van bomen wordt gemaakt! Niet onmogelijk dat h  n i.p.v. log2 n vb. bij eenvoudig toevoeg-algoritme dat waarden reeds in volgorde krijgt  concept van evenwichtige zoekbomen toevoegen, weglaten worden zo geïmplementeerd dat evenwicht steeds bewaard blijft

66 B-bomen B-boom van orde p (p > 2) is zoekboom waarvoor :
elke inwendige knoop heeft hoogstens p kinderen de wortel heeft minstens 2 kinderen, elke andere knoop minstens  p / 2  alle bladeren zitten even diep "waarde" in B-boom = sleutel + adres speciale gevallen: 2-3 bomen, 3-5 bomen, ... beperkingen i.v.m. min en max aantal kinderen garanderen redelijke gebalanceerdheid beperkte verspilling van geheugen

67 Adressen in knopen van B-bomen
Adres is een blokadres of recordadres recordadres = blokadres + positie van record in blok voor niet-sleutelveld: adres van blok met wijzers naar adressen (cfr. eerdere voorbeelden)  extra indirectie

68 Maximale hoogte van B-bomen
orde p  minstens d =  p / 2  deelbomen per knoop op niveau 1 (onder wortel) minstens 2 knopen, op niveau i minstens 2 di-1 knopen  2 di-1 (d-1) waarden  h  logd ( (n + 1) / 2 )

69 B-bomen: abstract en voorbeeld

70 Voorbeeld 2 (1): Berekening orde B-boom
Stel: grootte van veld waarop gezocht wordt V = 9 bytes B = 512 bytes recordadres Pr = 7 bytes, blokadres P = 6 bytes 1 knoop van B-boom moet in 1 blok passen  max aantal deelbomen p van een knoop: p * P + (p - 1) * (Pr + V)  B 6 p + 16 (p - 1)  512 p  24 meestal nog wat extra (administratieve) info in blok  kies p = 23

71 Voorbeeld 2 (2): Aantal blokken en diepte
empirisch onderzoek toont: B-boom gemiddeld 69% vol dus: Gemiddeld 0.69p = 0.69 x 23 = 16 wijzers gemiddelde fan-out fo = 16 gemiddeld aantal waarden per knoop = 15 wortel : 15 sleutels 1 niveau onder wortel : 16 knopen  16 * 15 = 240 sleutels 2 niveaus diep: 162 = 256 knopen, sleutels 3 niveaus diep: 163 = knopen, sleutels totaal voor 3 niveaus: =

72 Extra informatie (niet voor het examen)
„empirisch onderzoek toont: B-boom gemiddeld 69% vol“ - hoe weten we dat? bron: Author: Yao, Andrew Chi-Chih, Primary Title: On random 2–3 trees Journal Name: Acta Informatica, Cover Date: Publisher: Springer Berlin / Heidelberg, Start Page: 159, End Page: 170 Volume: 9, Issue: 2, Url: Verder werk bv. Hier: T. Johnson and D. Shasha Utilization of B-trees with inserts, deletes and modifies. In Proceedings of the eighth ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems (PODS '89). ACM, New York, NY, USA, DOI= /

73 Wanneer B-bomen gebruiken?
Gebruik van B-bomen als primaire bestandsorganisatie dus niet voor index op bestand, maar bestand zelf 1 waarde in knoop = sleutel + het hele record Enkel goed bruikbaar indien klein aantal records kleine recordgrootte Anders fo te klein  # niveaus van boom te groot  inefficiënt -

74 Operaties en hun kost/efficiëntie
+ Opzoeken : O (logd n) Toevoegen, weglaten: eerst positie opzoeken wijziging aanbrengen en doorvoeren alles in O (logd n) tijd Sequentiele verwerking: boom doorlopen in in-orde (links, knoop, rechts) interne knopen vaak opnieuw gelezen, tenzij ze in centraal geheugen onthouden worden kan beter : met B+-bomen + - Hier ist die Animationsreihenfolge gut!

75 B+-bomen Bij B-bomen: Bij B+-bomen: extra:
sommige record-wijzers in interne knopen, andere in bladeren Bij B+-bomen: interne knopen bevatten enkel sleutels, geen adressen van records recordadressen enkel in de bladeren interne knopen bevatten enkel "wegwijzers" orde pi van interne knopen is nu groter  betere prestaties; orde pb van bladeren ongeveer even groot extra: aan het eind van een blad wijzer naar volgend blad maakt sequentieel doorlopen eenvoudiger

76 B+-bomen: abstract

77 Voorbeeld 3 (1): Berekening orde B+-boom
Gegeven: V = 9 bytes, B = 512 bytes, Pr = 7 bytes, P = 6 bytes orde van interne knopen: pi * P + (pi - 1) * V  B 6 pi + 9 (pi - 1)  512  pi = 34 (cfr. 23 voor B-boom) orde van bladeren: pb * (Pr + V) + P  B pb * ( ) + P  B 16 pb + 6  512  pb = 31

78 Voorbeeld 3 (2): Aantal sleutels en diepte
Stel 69% vol dan: 0.69 * 34 = 23 wijzers per knoop (22 waarden) in blad: 0.69 * pb = 0.69 * 31 = 21 recordwijzers gemiddeld aantal sleutels op elk niveau: wortel: knoop, sleutels niveau 1: knopen, sleutels niveau 2: knopen, sleutels bladeren: knopen, recordwijzers Vgl. met recordwijzers voor B-boom

79 Algoritmes Algoritmes voor zoeken in B+-boom en
voor aanpassing van B+-boom bij toevoegen / weglaten van gegevens Gedetailleerde algoritmes in boek

80 B+-boom: Opzoeken van een sleutelwaarde
{ K = gezochte sleutel } n := blok dat wortel van B+-boom bevat; lees blok n; zolang n geen blad is: q := #deelbomen van n; v0=- , v1..vq-1 waarden in knoop, vq=+  kies i zo dat vi < K <= vi+1; n := bi; zoek in n een koppel (vi, Pri) met vi=K; indien gevonden: lees record met adres Pri anders: meld 'niet gevonden'

81 B+-boom: Toevoegen van een record met sleutel K
zoek blad waar sleutel hoort indien niet vol: voeg sleutel gewoon toe indien blad al vol: splits blad 1e helft blijft, 2e helft naar nieuw blad voeg sleutel toe aan juiste blad pas ook bladwijzers aan voeg laatste waarde van blad 1 in ouderknoop toe herhaal zolang ouderknoop overvol is: splits knoop : helft van waarden naar nieuwe knoop; verhuis laatste waarde van 1e knoop naar ouder

82 Taak: toevoegen van ... 8, 5, 1, 7, 3, 12, 9, 6 … aan een leeg B+-boom met orde 3 (inwendige knopen) en 2 (bladeren)

83

84

85 Alternatieve oplossing

86 B+-boom: Verwijderen van een sleutel K uit gegevens
zoek blad met sleutel, verwijder sleutel daaruit indien sleutel ergens in interne knopen voorkomt: vervang door waarde net links ervan indien onderloop (te weinig waarden in blad): steel enkele waarden van naburig blad (en pas bovenliggende knoop aan) indien nog niet voldoende: voeg 2 bladeren samen verwijder 1 wegwijzer uit bovenliggende knoop indien onderloop in interne knoop: herverdeel of voeg samen (met evt. verwijdering van 1 waarde uit bovenliggende knoop...)

87 Taak: verwijderen van ... 6, 8, 5 (uit opgebouwde boom versie 1) of

88

89

90 B*-bomen elke knoop tenminste 2/3 gevuld (i.p.v. ½)
splits slechts wanneer 2 naburige knopen vol zijn

91 Praktijkvoorbeeld: VSAM
VSAM = Virtual Storage Access Method (IBM) Gebaseerd op B+-bomen Ontworpen om aan meerdere criteria te voldoen: sequentiële toegang toevoegen, weglaten, opzoeken : O (log n) geen reorganisatie nodig Blokken met gegevens die bij 1 blad horen, allemaal op 1 cilinder  tijdwinst Andere aanpassingen om efficiëntie verder te verhogen (index apart plaatsen, sleutelcompressie, ...)

92 Agenda Dynamische hashing Uitbreidbare hashing Lineaire hashing
Boomstructuren als indexen Indexen op meerdere velden

93 Indexen op meerdere velden
vb. index op combinatie van leeftijd en departement "geef alle werknemers van dept. 5 met leeftijd 60" met aparte indexen: eerst verz. werknemers van dept. 5 (A), dan verz. met leeftijd 60 (B), vervolgens doorsnede nemen  niet zo efficiënt resultaat waarschijnlijk veel kleinere verzameling dan A en B Samengestelde index veel efficiënter: levert direct het goede resultaat Hoe indexeren op meerdere velden?

94 Hoe de velden combineren? (1)
Meerdere velden samen als 1 veld beschouwen Samengestelde waarden: ordening? lexicografisch : cf. alfabetische ordening (p1, q1) < (p2, q2)  p1 < p2 OF (p1 = p2 en q1< q2) enz. voor meer componenten Hashing op samengestelde velden: "partitioned hashing" resultaat hashfunctie is combinatie van resultaten van aparte hashfuncties op componenten bv. 5  101; 60  10110  (5, 60)  geen aparte toegangsstructuren voor componenten nodig (maar: enkel voor "="-tests)

95 Hoe de velden combineren? (2)
i.p.v. rij met adressen : matrix met adressen indices voor matrix = waarden van componenten evt. code voor interval van waarden vb. matrix M: M5,5 bevat wijzer naar cel met wijzers naar records waarvoor dept = 5 en leeftijd > 50

96 Fysische en logische indexen
Naast bomen ook hashing of andere datastructuren mogelijk voor index In onze bespreking: fysische indexen steeds fysische adressen gebruikt indien deze veel wijzigen: probleem logische index verhelpt dit: i.p.v. fysisch adres, wordt sleutel voor primaire bestandsorganisatie teruggegeven dan zoeken volgens primaire structuur nadeel van logische index: 1 extra indirectie

97 Indexen: samenvatting
Grootste voordeel van indexen: kunnen in principe gebruikt worden met eender welke primaire bestandsorganisatie bemerk dat primaire organisatie enkel efficiënt zoeken op 1 veld mogelijk maakt Indexen o.a. handig voor opleggen van uniciteit van velden (naast efficiënt opzoeken van waarden) Bestand met secundaire index op elk veld = "volledig geïnverteerd bestand" (fully inverted file)

98 Vooruitblik Dynamische hashing Uitbreidbare hashing Lineaire hashing
Boomstructuren als indexen Indexen op meerdere velden Queryverwerking

99 Vraag: waarom deze twee opties? (MySQL als maar een voorbeeld)
→ dit zijn twee structurele types van indexen

100 Bronnen Deze slides zijn gebaseerd op Henk Olivié‘s slides voor Gegevensbanken 2009 en op Elmasri & Navathe, Fundamentals of Database Systems, Addison Wesley / Pearson, 5e editie 2007. Alle kopieën zonder bronspecificatie: Elmasri & Navathe, Fundamentals of Database Systems, Addison Wesley / Pearson, 5e editie 2007. Verdere figuren: bronnen zie “Powerpoint comments field” Bedankt iedereen!


Download ppt "Gegevensbanken 2012 Hashing en Indexstructuren II Bettina Berendt http://people.cs.kuleuven.be/~bettina.berendt/"

Verwante presentaties


Ads door Google