De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Gegevensbanken 2012 Hashing en Indexstructuren II Bettina Berendt

Verwante presentaties


Presentatie over: "Gegevensbanken 2012 Hashing en Indexstructuren II Bettina Berendt"— Transcript van de presentatie:

1 Gegevensbanken 2012 Hashing en Indexstructuren II Bettina Berendt

2 2 Indexstructuren: Motivatie & Samenvatting

3 3 Waar zijn we? Les #wiewat 1EDintro, ER 2EDEER, (E)ER naar relationeel schema 2EDrelationeel model 3KVRelationele algebra & relationeel calculus 4,5KVSQL 6KVProgramma's verbinden met gegevensbanken 7KVFunctionele afhankelijkheden & normalisatie 8KVPHP 9BBBeveiliging van gegevensbanken 10BBGeheugen en bestandsorganisatie 11BBHashing en Indexstructuren I 12BBHashing en Indexstructuren II 13BBQueryverwerking 14,15BBTransactieverwerking en concurrentiecontrole 16BBData mining en data warehousing 17 EDXML, NoSQL Fysisch model / vragen

4 4 Wat doen als de keuken te klein is?

5 5 * Het brood ligt in de slaapkamer * De eieren liggen in de eetkamer

6 6  Externe hashing Het brood ligt in de slaapkamer * De eieren liggen in de eetkamer

7 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

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

9 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 10 Agenda Dynamische hashing Uitbreidbare hashing Lineaire hashing Boomstructuren als indexen Indexen op meerdere velden

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

12 Externe “static” hashing: voor- en nadelen 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 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 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 15 Dynamische hashing: voorbeeld (1) vb. (met 1 record per cel) record A heeft hashwaarde 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 16 Dynamische hashing: voorbeeld (2) C met hashwaarde wordt toegevoegd Bij weglaten van records evt. cellen weer samensmelten  trie krimpt

17 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 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 18 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 Dynamische hashing: zoeken via een trie

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

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

21 21 Uitbreidbare hashing: voorbeeld (2)

22 22 Uitbreidbare hashing: voorbeeld (3)

23 23 Uitbreidbare hashing: voorbeeld (4)

24 24 Uitbreidbare hashing: voorbeeld (5)

25 25 Uitbreidbare hashing: voorbeeld (6)

26 26 Uitbreidbare hashing: voorbeeld (7)

27 27 Uitbreidbare hashing: voorbeeld (8)

28 28 Uitbreidbare hashing: voorbeeld (9)

29 29 Uitbreidbare hashing: voorbeeld (10)

30 30 Taak: Uitbreidbare hashing: voorbeeld (11)

31 31 Uitbreidbare hashing: voorbeeld (12)

32 32 Uitbreidbare hashing: voorbeeld (13)

33 33 Uitbreidbare hashing: samenvatting Index = tabel met 2 d 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 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 Hashing, 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.”http://www.scribd.com/naresh_kumar_31/d/ /64-Extendible- Hashing 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 35 - Uitbreidbare hashing: Voor- en nadelen extra ruimte voor tabel is klein max grootte is 2 k 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 36 Agenda Dynamische hashing Uitbreidbare hashing Lineaire hashing Boomstructuren als indexen Indexen op meerdere velden

37 37 Lineaire hashing: idee Gebruikt geen extra index Beginsituatie: M cellen genummerd 0.. M-1 Hashfunctie h 0 (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 h 1 (k) = k mod 2M Bij elke volgende overloop: ketening splits cel i-1 naar i-1 en M+i-1 volgens h 1 (k)

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

39 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: h i (key) = key mod 2 i  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 40 Lineaire hashing: voorbeeld (2) Insert 3 Initial hash function: h i (key) = key mod 2 i  M, i = 0

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

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

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

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

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

46 46 The first phase – phase 0 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 h 1 = Key mod 2M): n=0 before the split (n is the point to the bucket to be split.) n=1 after the split load factor: 6/10=0.6 no split Lineaire hashing: voorbeeld (7)

47 47 The first phase – phase 0 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 h 1 = Key mod 2M): n=0 before the split (n is the point to the bucket to be split.) n=1 after the split load factor: 6/10=0.6 no split Lineaire hashing: voorbeeld (7)

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

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

50 n=1 load factor: 8/10=0.8 split using h 1. insert(10) overflow Lineaire hashing: voorbeeld (9)

51 n=1 load factor: 8/10=0.8 split using h 1. insert(10) overflow Lineaire hashing: voorbeeld (9)

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

53 53 n=2 load factor: 9/12=0.75 split using h overflow overflow 5 insert(7) Lineaire hashing: voorbeeld (10)

54 54 n=3 load factor: 9/14=0.642 no split insert(24) Lineaire hashing: voorbeeld (10)

55 55 n=3 load factor: 9/14=0.642 no split insert(24) Taak: Lineaire hashing: voorbeeld (11)

56 56 n=3 load factor: 10/14=0.71 split using h Lineaire hashing: voorbeeld (11)

57 57 n=3 load factor: 10/14=0.71 split using h Lineaire hashing: voorbeeld (8)

58 58 Op dit moment hebben we de volgende structuur: Een lineaire hash met file level j = 1 8 cellen h 0 = k mod (2 j * 4) = k mod (2 1 * 4) = k mod 8 (de naastvolgende h 1 wordt h 1 = k mod (2 2 * 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 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 h 1 = k mod 32 bereikt wordt, dan gaat 18 naar cel 18

59 59 als n=0 dan m := h j (k) anders m := h j (k); als m

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

61 61 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 K j (i) <= K < K j (i+1); p := p j (i); lees het blok gegevens met adres p; zoek in p naar het record met sleutel K Algoritme voor zoeken in ijle primaire multi- niveau-index naar record met sleutel K

62 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 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  log 2 n met n = # waarden in de boom –dus: zoeken is efficiënt –Boom groeit en krimpt naarmate van de gegevens  dynamisch

64 64... maar...

65 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. log 2 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 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 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 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 d i-1 knopen  2 d i-1 (d-1) waarden  h  log d ( (n + 1) / 2 )

69 69 B-bomen: abstract en voorbeeld

70 70 Voorbeeld 2 (1): Berekening orde B-boom Stel: –grootte van veld waarop gezocht wordt V = 9 bytes –B = 512 bytes –recordadres P r = 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 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: 16 2 = 256 knopen, sleutels –3 niveaus diep: 16 3 = knopen, sleutels –totaal voor 3 niveaus: =

72 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 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 74 Operaties en hun kost/efficiëntie Opzoeken : O (log d n) Toevoegen, weglaten: –eerst positie opzoeken –wijziging aanbrengen en doorvoeren –alles in O (log d 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

75 75 B + -bomen Bij B-bomen: –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 p i van interne knopen is nu groter  betere prestaties; orde p b van bladeren ongeveer even groot extra: –aan het eind van een blad wijzer naar volgend blad maakt sequentieel doorlopen eenvoudiger

76 76 B + -bomen: abstract

77 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: –p i * P + (p i - 1) * V  B –6 p i + 9 (p i - 1)  512 –  p i = 34 (cfr. 23 voor B-boom) orde van bladeren: –p b * (Pr + V) + P  B –p b * ( ) + P  B –16 p b + 6  512 –  p b = 31

78 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 * p b = 0.69 * 31 = 21 recordwijzers –gemiddeld aantal sleutels op elk niveau: wortel: 1 knoop, 22 sleutels niveau 1: 23 knopen, 506 sleutels niveau 2: 529 knopen, sleutels bladeren: knopen, recordwijzers –Vgl. met recordwijzers voor B-boom

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

80 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; v 0 =- , v 1..v q-1 waarden in knoop, v q =+  kies i zo dat v i < K <= v i+1 ; n := b i ; lees blok n; zoek in n een koppel (v i, Pr i ) met v i =K; indien gevonden: lees record met adres Pr i anders: meld 'niet gevonden'

81 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 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 83

84 84

85 85 Alternatieve oplossing

86 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 87 Taak: verwijderen van... 6, 8, 5 (uit opgebouwde boom versie 1) of 5, 12, 9 (uit opgebouwde boom versie 2)

88 88

89 89

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

91 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 92 Agenda Dynamische hashing Uitbreidbare hashing Lineaire hashing Boomstructuren als indexen Indexen op meerdere velden

93 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 94 Hoe de velden combineren? (1) Meerdere velden samen als 1 veld beschouwen –Samengestelde waarden: ordening? lexicografisch : cf. alfabetische ordening (p 1, q 1 ) < (p 2, q 2 )  p 1 < p 2 OF (p 1 = p 2 en q 1 < q 2 ) 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   (5, 60)  –geen aparte toegangsstructuren voor componenten nodig (maar: enkel voor "="-tests)

95 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: M 5,5 bevat wijzer naar cel met wijzers naar records waarvoor dept = 5 en leeftijd > 50

96 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 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 98 Vooruitblik Dynamische hashing Uitbreidbare hashing Lineaire hashing Boomstructuren als indexen Indexen op meerdere velden Queryverwerking

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

100 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 Alle kopieën zonder bronspecificatie: Elmasri & Navathe, Fundamentals of Database Systems, Addison Wesley / Pearson, 5e editie Verdere figuren: bronnen zie “Powerpoint comments field” Bedankt iedereen!


Download ppt "Gegevensbanken 2012 Hashing en Indexstructuren II Bettina Berendt"

Verwante presentaties


Ads door Google