Gegevensbanken 2010 Les11

103
Gegevensbanken 2010 Fundamenten van geheugen; Bestandsorganisatie; Hashing Prof. Bettina Berendt www.cs.kuleuven.be/~berendt

Transcript of Gegevensbanken 2010 Les11

Page 1: Gegevensbanken 2010 Les11

Gegevensbanken 2010

Fundamenten van geheugen;Bestandsorganisatie;Hashing

Prof. Bettina Berendtwww.cs.kuleuven.be/~berendt

Page 2: Gegevensbanken 2010 Les11

2

Fundamenten van geheugen;Bestandsorganisatie;Hashing:

Motivatie & Samenvatting

Page 3: Gegevensbanken 2010 Les11

3

Waar zijn wij?LesNr. wie wat

1 ED intro, ER2 ED EER3 ED relational model4 ED mapping EER2relational5 KV relational algebra, relational calculus6 KV SQL7 KV vervolg SQL8 KV demo Access, QBE, JDBC

9 KV functional dependencies and normalisation

10 KV functional dependencies and normalisation11 BB file structures and hashing12 BB indexing I

13 BBindexing II and higher-dimensional structures

14 BB query processing15 BB transaction16 BB query security17 BB Data warehousing and mining18 ED XML, oodb, multimedia db

Conceptueel model

Relationeel model

Fysisch model / vragen

Nieuwe thema‘s / vooruitblik

Page 4: Gegevensbanken 2010 Les11

4

Gegevens zijn als een lekkere maaltijd…

Is het wat ik wil?Was het goed klaargemaakt?Gaat het snel?

Conceptueel modelRelationeel modelFysisch model / vragen

Page 5: Gegevensbanken 2010 Les11

5

A. Ruimtelijke organisatie is belangrijk,of: We kunnen niet aan de fysica ontsnappen

Page 6: Gegevensbanken 2010 Les11

6

A. Ruimtelijke organisatie is belangrijk,of: We kunnen niet aan de fysica ontsnappen

Page 7: Gegevensbanken 2010 Les11

7

B. Wat nodig is, is afhankelijk van wat je ermee wilt doen

genieten ?

afslanken ?

Elke keuze heeftvoor- en nadelen

Page 8: Gegevensbanken 2010 Les11

8

B. Wat nodig is, is afhankelijk van wat je ermee wilt doen

veel veranderen ?

veel zoeken ?

Elke keuze heeftvoor- en nadelen

Page 9: Gegevensbanken 2010 Les11

10

C. Wat doen als de keuken te klein is?

Page 10: Gegevensbanken 2010 Les11

11

C. Wat doen als de keuken te klein is?

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

Page 11: Gegevensbanken 2010 Les11

12

C. Wat doen als de keuken te klein is?Het brood ligt in de slaapkamer* De eieren liggen in de eetkamer

Page 12: Gegevensbanken 2010 Les11

13

Agenda

Geheugens

Bestandsorganisatie: blokken en records

Toegang tot en bewerkingen op bestanden

Soorten bestanden

Hashing

Slotbemerkingen: nieuwe ontwikkelingen, …

Page 13: Gegevensbanken 2010 Les11

14

Agenda

Geheugens

Bestandsorganisatie: blokken en records

Toegang tot en bewerkingen op bestanden

Soorten bestanden

Hashing

Slotbemerkingen: nieuwe ontwikkelingen, …

Page 14: Gegevensbanken 2010 Les11

15

Geheugenhiërarchieën

ge-heugen niveau

kost

volati-liteit

snel-heid

capa-citeit

Wat gebeurt hier?

Primair Cache memory / static RAM

Verwerking

Hoofdgeheugen / dynamic RAM

Flash memory

Secun-dair

Magnetische schijven Opslag

Tertiair Optisch (CD, DVD)

Magnetische banden

ook

Page 15: Gegevensbanken 2010 Les11

18

Schijf, cilinder, spoor

schijven-pakket

Page 16: Gegevensbanken 2010 Les11

19

Blok : onderdeel van een spoor (“track“)gefixeerd tijdens initialisatie

Spoor :gefixeerd in de hardware

Spoor en blok

Page 17: Gegevensbanken 2010 Les11

20

Hoe een gege-ven vinden?

1. Cilinder

3. Blok

2. Spoor

Page 18: Gegevensbanken 2010 Les11

21

Verwerking & opslag: het knelpunt

Processorgeheugenknelpunt: Jaarlijks worden processoren gemiddeld 60% sneller, terwijl de toegangstijd tot het geheugen maar daalt met een 7% per jaar. Deze kloof wordt dus steeds groter en steeds knellender.

Hoofdknelpunt voor database toepassingen: gegevens op schijven localiseren !

lezen Hardware adres op schijf:Cilinder#, spoor#, blok#

Buffer adres in het hoofdgeheugen

Fysische locatie op de schijf

localiseren

schrijven

Cijfers uit: http://nl.wikipedia.org/wiki/Geheugenhi%C3%ABrarchie, 31 mars 2010

Page 19: Gegevensbanken 2010 Les11

22

Parameters m.b.t. performantie

• Relevante tijden:– juiste cilinder zoeken : seek time (vb.: 5 msec)

• kop mechanisch bewegen : traag

– juiste blok zoeken: rotational delay ("latency") (vb.: 3 msec)• schijf moet doordraaien tot blok onder leeskop staat

– gegevenstransport : block transfer rate (vb.: 50 Mbytes/sec)• gegevens in blok lezen en naar buffer kopiëren

• Deze tijden >> verwerkingstijd van gegevens• Bestanden zo structureren dat deze tijden

geminimaliseerd worden!– bv. opeenvolgende blokken lezen : slechts één keer seek time

& latency

Page 20: Gegevensbanken 2010 Les11

23

vul A

vul B vul A

vul B

verwerk A verwerk B verwerk A verwerk B

blok 1 blok 2 blok 3 blok 4

tijd

Buffering

• Bij lezen / schrijven van opeenvolgende blokken: gebruik van meerdere ("alternerende") buffers– bv. bij lezen: info in een buffer verwerken terwijl andere buffer

gevuld wordt– verwerking meestal klaar voor volgende buffer vol is

blok 1 blok 2 blok 3 blok 4

Page 21: Gegevensbanken 2010 Les11

24

Gegevens & verwerking: organisatie vs. toegang

• Onderscheid:– Bestandsorganisatie file organization

• organisatie van bestand in – records, blokken, toegangsstructuren

• + verdeling van de records over het hulpgeheugen (= sec./tert. geheugen)

– Toegangsmethode access method• groep operaties / programma’s die toelaten om het bestand te bewerken

• Niet elke toegangsmethode mogelijk voor eender welke bestandsorganisatie

• Naargelang van organisatie ook verschil in efficiëntie

Page 22: Gegevensbanken 2010 Les11

25

Agenda

Geheugens

Bestandsorganisatie: blokken en records

Toegang tot en bewerkingen op bestanden

Soorten bestanden

Hashing

Slotbemerkingen: nieuwe ontwikkelingen, …

Page 23: Gegevensbanken 2010 Les11

26

Formaat van records

• Record = bij elkaar horende groep gegevens– "eenheid" van informatie

• Recordlengte:– vast : alle records zelfde lengte– variabel : verschillende records kunnen verschillende lengtes

hebben• mogelijke redenen:

– veld(en) van variabele lengte– velden(en) met meerdere waarden ("repeating groups")– optionele velden– verschillende recordtypes (gemengd bestand)

• vereist:– scheidingstekens tussen velden– indicatie van type veld

Page 24: Gegevensbanken 2010 Les11

27

Formaat: voor-beelden

Page 25: Gegevensbanken 2010 Les11

28

Records in blokken plaatsen (1)

• Waarom? Blok:– blok is de entiteit voor

• plaatsgebruik op schijf• gegevenstransport tussen schijf en geheugen

• Hoe? Plaatsing van records:– "unspanned" : 1 record steeds volledig binnen 1 blok

• overschot aan einde van blok gaat verloren• vooral nuttig voor korte records met vaste lengte

– weinig verloren ruimte– records beginnen op vaste posities in blok

– "spanned" - overspannend: record kan over meerdere blokken uitgespreid zijn

• noodzakelijk indien een record langer dan een blok kan zijn• minder verloren ruimte• ingewikkelder organisatie

Page 26: Gegevensbanken 2010 Les11

29

Records in blokken plaatsen (2)

Page 27: Gegevensbanken 2010 Les11

31

-

-

Plaatsing van logisch opeenvolgende blokken (1)

+

+

• Aaneensluitend– Opeenvolgende blokken fysisch aaneensluitend

• = "contiguous allocation"

– bestand overlopen (bv. meerdere blokken lezen) gaat snel (met 2 buffers)

– tussenvoegen van blokken is moeilijk

• Geketend– "linked allocation"– elk blok bevat wijzer naar volgend blok– uitbreiden van bestand gaat gemakkelijker– gehele bestand overlopen gaat trager

Page 28: Gegevensbanken 2010 Les11

32

Plaatsing van logisch opeenvolgende blokken (2)

• Combinatie:– Clusters van aaneensluitende blokken

• ook wel "file segments" genoemd

– Elke cluster bevat wijzer naar volgende cluster

• Indexering:– "indexed allocation"– een of meer indexblokken : bevatten enkel wijzers naar de

blokken met de echte gegevens

• Combinaties mogelijk

Page 29: Gegevensbanken 2010 Les11

33

Agenda

Geheugens

Bestandsorganisatie: blokken en records

Toegang tot en bewerkingen op bestanden

Soorten bestanden

Hashing

Slotbemerkingen: nieuwe ontwikkelingen, …

Page 30: Gegevensbanken 2010 Les11

34

Bewerkingen op bestanden

• 2 groepen bewerkingen:– Opvragen van gegevens

(zonder aanpassing)• enkel lezen

– Aanpassen van gegevens• lezen + schrijven nodig

• Selectie van records– selectiecriterium aangeboden door besturingssysteem meestal

zeer eenvoudig

DBMS moet ingewikkeld criterium omzetten naar meerdere eenvoudige criteria

SELECT *FROM EMPWHERE (NAME LIKE “%BART%“ OR AGE > 30)

SELECT * UPDATE EMPFROM EMP SET SALARY = 100000WHERE (NAME LIKE “%BART%“ OR AGE > 30)

Page 31: Gegevensbanken 2010 Les11

35

Typische operaties die een besturingssysteeem aanbiedt (1)

• OPEN: maakt bestand klaar voor verwerking– kent buffers toe, ...

• RESET: zet bestandswijzer naar begin bestand• FIND (LOCATE):

– zoek eerste record dat aan criterium voldoet– kopieer het blok dat dat record bevat naar de buffer– zet bestandswijzer naar dat record (= "huidig" record)

• READ (GET):– ken huidig record aan programmavariabele toe– (soms) verplaats bestandswijzer

• evt. nieuw blok inlezen

Page 32: Gegevensbanken 2010 Les11

36

Typische operaties die een besturingssysteeem aanbiedt (2)

• FINDNEXT: zoek volgende record dat aan criterium voldoet, maak het het huidige record

• DELETE: wis huidig record (eerst in buffer, dan in bestand)

• MODIFY: wijzig huidig record (eerst in buffer, daarna naar bestand geschreven)

• INSERT: lees juiste blok in buffer in, voeg record aan dat blok toe (eerst in buffer, later in bestand)

• CLOSE: ruim buffers op, ...• Soms gecombineerde bewerkingen

– SCAN : FIND of FINDNEXT + READ

Page 33: Gegevensbanken 2010 Les11

38

Belangrijke parameters m.b.t. bestandsverwerking

• Bestandsactiviteit (file activity)# records dat gebruikt wordt door een toepassing / totaal # records van het bestand

• Bestandsveranderingsgraad (file volatility)# records dat in een bepaalde periode een verandering ondergaat / totaal # records van het bestand

• Bestandsverloop of vervangingsgraad (file turnover)# records dat in een bepaalde periode vervangen wordt door nieuwe records / totaal # records van het bestand

• Bestandsgroei (file growth)toename van # records gedurende een bepaalde periode / het oorspronkelijk totaal # records

Page 34: Gegevensbanken 2010 Les11

39

Agenda

Geheugens

Bestandsorganisatie: blokken en records

Toegang tot en bewerkingen op bestanden

Soorten bestanden

Hashing

Slotbemerkingen: nieuwe ontwikkelingen, …

Page 35: Gegevensbanken 2010 Les11

40

Ongeordende bestanden: idee

Page 36: Gegevensbanken 2010 Les11

41

Ongeordende bestanden (seriële bestanden)

+

-

-

• Toevoegen: – achteraan in laatste blok

• Opzoeken: – volledig bestand lineair doorzoeken

• Weglaten: – record zoeken ( blok)– record weglaten in buffer (evt. markeren zonder te wissen),

buffer in blok terugschrijven– na veel weglatingen veel verloren ruimte reorganisatie

• Gebruik:– Meestal slechts als voorlopig bestand – op een gegeven moment : “extern sorteren”

geordend bestand

Page 37: Gegevensbanken 2010 Les11

43

Geordende bestanden: idee

Page 38: Gegevensbanken 2010 Les11

44

Geordende bestanden (sequentiële bestanden)

+++

• Geordend volgens sleutelveld• Voordelen:

– lezen van records in sleutelvolgorde : zeer efficiënt– binair zoeken mogelijk– aanpassen in sleutelvolgorde gaat snel

Page 39: Gegevensbanken 2010 Les11

45

Geordende bestanden: voorbeeld

Page 40: Gegevensbanken 2010 Les11

46

Geordende bestanden: binair zoeken

l := 1;u := b; {b = aantal blokken}verderzoeken := true;gevonden := false;zolang u >= l en verderzoeken :

i := (l+u) div 2;lees blok i in buffer;als k < sleutel van eerste record in buffer dan u := i-1anders als k > sleutel laatste record in buffer dan l := i+1anders als record met sleutel k in buffer dan

verderzoeken := false; gevonden := true;anders verderzoeken := false

Alfred, Bob ?

.

Page 41: Gegevensbanken 2010 Les11

47

Zoeken

Page 42: Gegevensbanken 2010 Les11

48

----

Geordende bestanden: nadelen

– zoeken op een ander veld dan sleutel blijft tijdrovend– toevoegen

• vereist verplaatsing van records

– weglaten • vereist ook verplaatsing van records, behalve met markering

– aanpassen van records • traag indien die niet in sleutelvolgorde worden aangeboden

Page 43: Gegevensbanken 2010 Les11

49

Directe bestanden: idee

De rode?De rode!

Page 44: Gegevensbanken 2010 Les11

50

Directe bestandsorganisatie

• Methode om uit recordsleutel meteen recordadres in bestand te vinden: hashing

• Principe van hashing:– hash-functie beeldt waarde k (getal, string, ...) af op adres f(k)– goede hashfunctie "spreidt" waarden zoveel mogelijk over

verschillende adressen• botsing ("collision") : f(k1) = f(k2) met k1 k2

• Interne hashing: – gegevens en hashfunctie zijn in centraal geheugen voorgesteld

• Externe hashing: – gegevens (evt. ook hashfunctie zelf) opgeslagen in een

bestand

Page 45: Gegevensbanken 2010 Les11

51

Bestanden met gemengde records

• In relationeel model: – gewoonlijk 1 bestand per relatie

• verbanden tussen relaties impliciet aanwezig (verwijssleutels)• 1 record = 1 tupel

• Voor andere modellen (bv. netwerk, hierarchisch, OO) :– samenhorende objecten ook fysisch bij elkaar– een bestand bevat verschillende soorten records– voor elk record: record-type bijhouden

Page 46: Gegevensbanken 2010 Les11

52

Agenda

Geheugens

Bestandsorganisatie: blokken en records

Toegang tot en bewerkingen op bestanden

Soorten bestanden

Hashing

Slotbemerkingen: nieuwe ontwikkelingen, …

Page 47: Gegevensbanken 2010 Les11

53

Hashing: idee

Page 48: Gegevensbanken 2010 Les11

54

Interne hashing

• Voorbeeld van interne hashing:• tabel t als rij voorgesteld• elke plaats een cel (bucket, bin),

kan 1 of een aantal records bevatten

• celdiepte aantal records dat maximaal in 1 cel gaat• index van rij 0 .. m-1 • hash-functie f(k) = k modulo m• gegeven sleutel k adres: t [ f(k) ]

– sleutelruimte • = verzameling mogelijke sleutels

– adresruimte• = verzameling mogelijke adressen (grootte m)

– # sleutelruimte >> # adresruimte– f(k) moet sleutels bij voorkeur zo gelijkmatig en willekeurig

mogelijk spreiden, en moet efficiënt te berekenen zijn (snelheid!)

Page 49: Gegevensbanken 2010 Les11

55

Interne hashing: gegevensorganisatie

Page 50: Gegevensbanken 2010 Les11

56

Hashing functies: voorbeeld

• f(k) = k mod 1000– # adresruimte = 1000– sleutel k = 8 321 472 f(k) = 472– 3 laatste cijfers zijn bepalend niet zo goed

• wat als sleutels bv. altijd op 000 eindigen? alle sleutels afgebeeld op zelfde adres!

– modulo priemgetal is betere keuze• alle cijfers van sleutel hebben invloed

• bv. f(k) = k mod 997 : # adresruimte = 997

Page 51: Gegevensbanken 2010 Les11

57

Andere technieken voor hashing

• Nog: voor numerieke sleutels – vouwen

• bv. getal in stukken splitsen, opvouwen als blad papier en op elkaar liggende cijfers optellen

• 270 122 601 270, 122, 601 270 + 122 + 106 = 498

– kwadrateren + en middelste cijfers nemen• 375 213 2 = 140 784 795 369 479

• Niet-numerieke sleutels numeriek coderen – bv. strings : via ASCII-code (of Unicode)

• Steeds gericht op gelijkmatige en willekeurige spreiding van uitkomsten

Page 52: Gegevensbanken 2010 Les11

58

Botsing

Page 53: Gegevensbanken 2010 Les11

59

Botsingsafhandeling

• Botsing:– meerdere records met verschillende sleutel komen terecht in

zelfde cel

• Meestal: # sleutelruimte >> # adresruimte– botsingen zijn dan onvermijdelijk– moeten op een of andere manier opgevangen worden ("collision

resolution")

• Eenvoudige manier van botsingsafhandeling:– tabel van cellen, meerdere records in 1 cel toelaten– celdiepte = max # records in 1 cel (te groot: kan niet!)

• Indien teveel records aan 1 cel toegekend worden: overloop– meerdere technieken van overloopafhandeling

Page 54: Gegevensbanken 2010 Les11

60

Overloopafhandeling (1) Open adressering: idee

Open addressing: Hash collision resolved by linear probing (interval=1).

Hash collision resolved by open addressing with linear probing (interval=1). Note that "Ted Baker" has a unique hash, but nevertheless collided with "Sandra Dee" which had previously collided with "John Smith".

151152153

254255

Page 55: Gegevensbanken 2010 Les11

61

Overloopafhandeling (1): Open adressering

+--

• Open adressering– indien geen plaats in cel: loop volgende cellen af tot er een is

waar plaats is– zeer eenvoudig– lineair zoeken naar cel (traag)– weglaatalgoritme nogal ingewikkeld

Page 56: Gegevensbanken 2010 Les11

63

-

Overloopafhandeling (2)

• Ketening– indien geen plaats in cel: verwijzing naar nieuwe cel

waar record (ofwel een nieuwe verwijzing) staat• opeenvolging van verwijzingen genereert "keten" van wijzers

(gelinkte lijst)

– meerdere varianten:• coalesced chaining: lijsten hebben gemeenschappelijke

delen• separate chaining : lijsten zijn volledig gescheiden• direct chaining: geen records in tabel, maar steeds meteen een

verwijzing naar het overloopgebied– nadeel: sequentiële toegang zeer langzaam

– apart "overloopgebied" voor dergelijke nieuwe cellen

Page 57: Gegevensbanken 2010 Les11

64

Botsingafhandeling door ketening

Page 58: Gegevensbanken 2010 Les11

65

Botsingafhandeling door ketening(direct chaining)

Page 59: Gegevensbanken 2010 Les11

66

++--

Ketening: voordelen en nadelen

• record snel bereikbaar via sleutel• toevoegen en weglaten redelijk eenvoudig• opzoeken via ander dan sleutelveld is moeilijk• doorlopen van bestand in sleutelvolgorde kan traag zijn

Page 60: Gegevensbanken 2010 Les11

67

Waarschuwing: terminologie!

• Open adressering = gesloten hashing– Botsing record gaat naar een ander slot in dezelfde tabel

• Gesloten adressering = open hashing = ketening– Botsing record(s) in een ander tabel opslaan

Page 61: Gegevensbanken 2010 Les11

69

Performantie van hashingtechnieken

• Maatstaf : E: gemiddelde zoeklengte– aantal bezochte plaatsen tot element gevonden wordt

• Beïnvloed door vullingsgraad – aantal opgeslagen sleutels n / aantal beschikbare locaties m

– = n / m vuistregel: tussen 0,7 en 0,9

• Knuth’s formule: bij lineair proberen– E ½ ( 1 + 1 / (1- ) ) bij succes

– ½ ( 1 + 1 / (1- )2 ) bij falen

– formule is minder goed voor dicht bij 1

0,5 0,67 0,75 0,9succes 1,5 2 3 5,5falen 2,5 5 8,5 50,5

Page 62: Gegevensbanken 2010 Les11

70

Externe hashing (gegevens in bestand): idee

Page 63: Gegevensbanken 2010 Les11

71

Externe hashing (gegevens in bestand)

• cellen = "buckets"– 1 cel = 1 blok of meerdere aaneengesloten blokken

• hashingfunctie: – sleutel cel-nr

• tabel in bestandshoofding: – cel-nr blok-adres

• overloop: – in extra overloopcellen– via wijzers een keten van extra records bijhouden– wijzers wijzen naar recordadres : blokadres + relatieve positie

in blok

Page 64: Gegevensbanken 2010 Les11

72

Botsingsafhandeling

Page 65: Gegevensbanken 2010 Les11

73

-

--++

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

Page 66: Gegevensbanken 2010 Les11

74

Dynamische bestandsuitbreiding

• Sommige hashing technieken laten dynamische expansie van bestanden toe– aantal voorziene cellen groeit en krimpt met bestand

• We behandelen 2 methoden:– uitbreidbare (extendible) hashing– lineaire hashing– 3rde methode “dynamische hashing” in slides

Page 67: Gegevensbanken 2010 Les11

79

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

Page 68: Gegevensbanken 2010 Les11

81

Uitbreidbare hashing: voorbeeld (1)

Bron: Hakan (2009). File Organization. http://www.powershow.com/view/27b55-YzBlN/File_Organization

Page 69: Gegevensbanken 2010 Les11

82

Uitbreidbare hashing: voorbeeld (2)

Page 70: Gegevensbanken 2010 Les11

83

Uitbreidbare hashing: voorbeeld (3)

Page 71: Gegevensbanken 2010 Les11

84

Uitbreidbare hashing: voorbeeld (4)

Page 72: Gegevensbanken 2010 Les11

85

Uitbreidbare hashing: voorbeeld (5)

Page 73: Gegevensbanken 2010 Les11

86

Uitbreidbare hashing: voorbeeld (6)

Page 74: Gegevensbanken 2010 Les11

87

Uitbreidbare hashing: voorbeeld (7)

Page 75: Gegevensbanken 2010 Les11

88

Uitbreidbare hashing: voorbeeld (8)

Page 76: Gegevensbanken 2010 Les11

89

Uitbreidbare hashing: voorbeeld (9)

Page 77: Gegevensbanken 2010 Les11

90

Uitbreidbare hashing: voorbeeld (10)

Page 78: Gegevensbanken 2010 Les11

91

Uitbreidbare hashing: voorbeeld (11)

Page 79: Gegevensbanken 2010 Les11

92

Uitbreidbare hashing: voorbeeld (12)

Page 80: Gegevensbanken 2010 Les11

93

Uitbreidbare hashing: beschrijving

• 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)

Page 81: Gegevensbanken 2010 Les11

94

-

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

groeidt exponentieel

Page 82: Gegevensbanken 2010 Les11

95

Lineaire hashing: idee

• Gebruikt geen 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)

Page 83: Gegevensbanken 2010 Les11

96

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

Page 84: Gegevensbanken 2010 Les11

97

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, 4, 1, 8, 14, 5, 10, 7, 24

Bron: Chen, Y. (2009). File Organization.http://ion.uwinnipeg.ca/~ychen2/databaseNotes/hashing.ppt (minimaal veranderd)

Page 85: Gegevensbanken 2010 Les11

98

The first phase – phase0

•when inserting the sixth record 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):

48

12

14

0 1 2 3

3

0 1 2 3 4

8 12

143 4

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 (2)

Page 86: Gegevensbanken 2010 Les11

99

0 1 2 3 4

8 12

143 4

n=1load factor: 7/10=0.7no split

insert(5)

815

214

3 4

0 1 2 3 4

Lineaire hashing: voorbeeld (3)

Page 87: Gegevensbanken 2010 Les11

100

0 1 2 3 4

815

214

3 4

n=1load factor: 8/10=0.8split using h1.

insert(10)

815

214

3 4

10

overflow

Lineaire hashing: voorbeeld (4)

Page 88: Gegevensbanken 2010 Les11

101

0 1 2 3 4 5

8 12

143 4

n=2load factor: 8/12=0.66no split

10

overflow

5

Lineaire hashing: voorbeeld (5)

Page 89: Gegevensbanken 2010 Les11

102

n=2load factor: 9/12=0.75split using h1.

8 12

143 4

10

overflow

5

0 1 2 3 4 5

8 12

1437

4

10

overflow

5

insert(7)

Lineaire hashing: voorbeeld (6)

Page 90: Gegevensbanken 2010 Les11

103

n=3load factor: 9/14=0.642no split.

8 12

1037

4 5 14

8 12

1037

4 5 14

insert(24)

Lineaire hashing: voorbeeld (7)

Page 91: Gegevensbanken 2010 Les11

104

n=3load factor: 10/14=0.71split using h1.

824

12

1037

4 5 14

824

12

103 4 5 14 7

Lineaire hashing: voorbeeld (8)

Page 92: Gegevensbanken 2010 Les11

105

als n=0dan m := h0(k)anders

m := h0(k);als m<n dan m := h1(k);

zoek in de cel met hashwaarde m (en evt. in de overloop ervan)

Lineaire hashing: zoeken

Page 93: Gegevensbanken 2010 Les11

106

Agenda

Geheugens

Bestandsorganisatie: blokken en records

Toegang tot en bewerkingen op bestanden

Soorten bestanden

Hashing

Slotbemerkingen: nieuwe ontwikkelingen, …

Page 94: Gegevensbanken 2010 Les11

107

RAID architectuur

• Redundant Arrays of Independent Disks• Bedoeling: performantie en betrouwbaarheid van extern

geheugen verhogen• Data verdeeld over meerdere schijven

– bit-level data striping• 1 byte verdelen over 8 schijven (elk 1 bit)

– block-level data striping• 1 blok verdelen over meerdere schijven

• Redundante schijven voor foutcorrectie• Meerdere niveaus van RAID (0-6)

Page 95: Gegevensbanken 2010 Les11

108

RAID: Data striping

Page 96: Gegevensbanken 2010 Les11

109

Geen duplicatie

Volledige duplicatie

Gebruik van Hamming codes, vermindertplaats vereist voor redundante schijven

Gebruik van een pariteitsschijf om uit tezoeken welke schijf faalde

Data striping op blok niveau

Data striping op blok niveau, met verdeling van de pariteitsinformatie over alle schijven

Gebruik van speciaal redundantiesche-ma dat twee falingen kan detecteren

RAID: niveaus

Page 97: Gegevensbanken 2010 Les11

110

Trends in disk technology

Page 98: Gegevensbanken 2010 Les11

111

Disk specifications: example

Page 99: Gegevensbanken 2010 Les11

112

Disk specifications: example (contd. 1)

Page 100: Gegevensbanken 2010 Les11

113

Disk specifications: example (contd. 2)

Page 101: Gegevensbanken 2010 Les11

114

Actuele oplossingen voor het archiveren: combinaties van banden en schijven

• Project Système de Préservation et d'Archivage Réparti (Bibliothèque Nationale de France):

• http://www.bnf.fr/en/professionals/preservation_spar.html

• Verwacht: 200 Terabyte (toegangsgeheugen), 8 Petabyte (hoofd-archief-geheugen)

• De banden-robots:

• Internet Archive: http://www.archive.org/about/about.php#storage

Page 102: Gegevensbanken 2010 Les11

115

Vooruitblijk

Geheugens

Bestandsorganisatie: blokken en records

Toegang tot en bewerkingen op bestanden

Soorten bestanden

Hashing

Slotbemerkingen: nieuwe ontwikkelingen, …

Indexstructuren

Page 103: Gegevensbanken 2010 Les11

116

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.

• De voorbeelden voor hashing komen uit andere presentaties, zie notities op slides

• Alle kopieën zonder bronspecificatie: Elmasri & Navathe, Fundamentals of Database Systems, Addison Wesley / Pearson, 5e editie 2007.

• Verdere figuren: bronnen zie “Powerpoint comments field”

• Alle keuken-dingen en overige fouten zijn de mijne ;-) • Bedankt iedereen!