• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Gegevensbanken 2010 Les11
 

Gegevensbanken 2010 Les11

on

  • 1,062 views

 

Statistics

Views

Total Views
1,062
Views on SlideShare
888
Embed Views
174

Actions

Likes
1
Downloads
40
Comments
0

3 Embeds 174

https://cygnus.cc.kuleuven.be 115
http://www.slideshare.net 54
https://canis-major.cc.kuleuven.be 5

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • http://serendipita.org/static/bolognese.jpg Bedoeling!
  • http://www.dra.de/rundfunkgeschichte/75jahreradio/nszeit/img/hausfrau_60.jpg http://upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Frankfurterkueche.jpg/300px-Frankfurterkueche.jpg http://www.zum.de/Faecher/G/BW/Landeskunde/franken/museen/mergenth/puppen/p11.jpg Lopende band = Fließband lhttp://www.zum.de/Faecher/G/BW/Landeskunde/franken/museen/mergenth/p
  • http://www.dra.de/rundfunkgeschichte/75jahreradio/nszeit/img/hausfrau_60.jpg http://upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Frankfurterkueche.jpg/300px-Frankfurterkueche.jpg http://www.zum.de/Faecher/G/BW/Landeskunde/franken/museen/mergenth/puppen/p11.jpg Lopende band = Fließband lhttp://www.zum.de/Faecher/G/BW/Landeskunde/franken/museen/mergenth/p
  • http://upload.wikimedia.org/wikipedia/commons/thumb/e/ee/Frankfurt-Kitchen_Drawers.jpg/180px-Frankfurt-Kitchen_Drawers.jpg http://images.derstandard.at/20071228/kuchen1.jpg http://kreuz-bertiswil.ch/images/mev27052.jpg
  • http://upload.wikimedia.org/wikipedia/commons/thumb/e/ee/Frankfurt-Kitchen_Drawers.jpg/180px-Frankfurt-Kitchen_Drawers.jpg http://images.derstandard.at/20071228/kuchen1.jpg http://kreuz-bertiswil.ch/images/mev27052.jpg
  • http://www.baeckerei-brueser.de/images/ei.jpg http://www.horst-luenser.de/gartenpflanzen/dateien/kopfsalat.jpg http://shop.strato.de/WebRoot/Store/Shops/15052232/Categories/Tipps_0020__0026__0020_Rezepte/Chilibrot/brot.jpg
  • http://www.baeckerei-brueser.de/images/ei.jpg http://www.horst-luenser.de/gartenpflanzen/dateien/kopfsalat.jpg http://shop.strato.de/WebRoot/Store/Shops/15052232/Categories/Tipps_0020__0026__0020_Rezepte/Chilibrot/brot.jpg
  • http://www.baeckerei-brueser.de/images/ei.jpg http://www.horst-luenser.de/gartenpflanzen/dateien/kopfsalat.jpg http://shop.strato.de/WebRoot/Store/Shops/15052232/Categories/Tipps_0020__0026__0020_Rezepte/Chilibrot/brot.jpg
  • TODO: check the numbers! Terugvinden ist mehr „recovery“
  • Meestal: book: it IS the case; reality: can be different (  Ruckeln im Video)
  • Ginge interaktiv, ist aber so‘n bisschen pillepalle
  • Overlopen = scan
  • Mbt = met betrekking tot; ivm = in verband met; verhouding = relation; t.o.v. = ten opzichte van verhouding van # records dat gebruikt wordt door een toepassing t.o.v. totaal # records van het bestand Het totaal nummer
  • http://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Frankfurt-Kitchen%2C_Drawers_%283%29.jpg/180px-Frankfurt-Kitchen%2C_Drawers_%283%29.jpg
  • http://upload.wikimedia.org/wikipedia/commons/thumb/9/90/HASHTB12.svg/362px-HASHTB12.svg.png
  • http://upload.wikimedia.org/wikipedia/commons/thumb/9/90/HASHTB12.svg/362px-HASHTB12.svg.png
  • Noch Formulierung ändern
  • http://upload.wikimedia.org/wikipedia/commons/thumb/9/90/HASHTB12.svg/362px-HASHTB12.svg.png http://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Hash_table_5_0_1_1_1_1_0_SP.svg/380px-Hash_table_5_0_1_1_1_1_0_SP.svg.png
  • http://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Hash_table_5_0_1_1_1_1_1_LL.svg/450px-Hash_table_5_0_1_1_1_1_1_LL.svg.png

Gegevensbanken 2010 Les11 Gegevensbanken 2010 Les11 Presentation Transcript

  • Gegevensbanken 2010 Fundamenten van geheugen; Bestandsorganisatie; Hashing Prof. Bettina Berendt www.cs.kuleuven.be/~berendt
  • Fundamenten van geheugen; Bestandsorganisatie; Hashing: Motivatie & Samenvatting
  • Waar zijn wij? Conceptueel model Relationeel model Fysisch model / vragen Nieuwe thema‘s / vooruitblik Les Nr. wie wat 1 ED intro, ER 2 ED EER 3 ED relational model 4 ED mapping EER2relational 5 KV relational algebra, relational calculus 6 KV SQL 7 KV vervolg SQL 8 KV demo Access, QBE, JDBC 9 KV functional dependencies and normalisation 10 KV functional dependencies and normalisation 11 BB file structures and hashing 12 BB indexing I 13 BB indexing II and higher-dimensional structures 14 BB query processing 15 BB transaction 16 BB query security 17 BB Data warehousing and mining 18 ED XML, oodb, multimedia db
  • Gegevens zijn als een lekkere maaltijd… Is het wat ik wil? Was het goed klaargemaakt? Gaat het snel? Conceptueel model Relationeel model Fysisch model / vragen
  • A. Ruimtelijke organisatie is belangrijk, of: We kunnen niet aan de fysica ontsnappen
  • A. Ruimtelijke organisatie is belangrijk, of: We kunnen niet aan de fysica ontsnappen
  • B. Wat nodig is, is afhankelijk van wat je ermee wilt doen genieten ? afslanken ? Elke keuze heeft voor- en nadelen
  • B. Wat nodig is, is afhankelijk van wat je ermee wilt doen veel veranderen ? veel zoeken ? Elke keuze heeft voor- en nadelen
  • Toepassing in gegevensbanken
    • “ Database designers and the DBA must know the advantages and disadvantages of each storage technique when they design, implement, and operate a database on a specific DBMS.
    • Usually, the DBMS has several options available for organizing the data.
    • The process of physical database design involves choosing the particular data organization techniques that best suit the given application requirements from among the options.“
      • (Elmasri & Navathe, p. 456)
  • C. Wat doen als de keuken te klein is?
  • C. Wat doen als de keuken te klein is? * Het brood ligt in de slaapkamer * De eieren liggen in de eetkamer
  • C. Wat doen als de keuken te klein is? Het brood ligt in de slaapkamer * De eieren liggen in de eetkamer
  • Agenda Geheugens Bestandsorganisatie: blokken en records Toegang tot en bewerkingen op bestanden Soorten bestanden Hashing Slotbemerkingen: nieuwe ontwikkelingen, …
  • Agenda Geheugens Bestandsorganisatie: blokken en records Toegang tot en bewerkingen op bestanden Soorten bestanden Hashing Slotbemerkingen: nieuwe ontwikkelingen, …
  • Geheugenhi ë rarchie ë n ook 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
  • Hulpgeheugens
    • = "externe" geheugens
      • geschikt voor grote hoeveelheden gegevens
      • niet volatiel
      • relatief trage toegang tot gegevens
      • vb: banden, magnetische / optische schijven, (her)schrijfbare CD's, DVD’s,…
    • Belangrijkste medium voor gegevensbanken: magnetische schijven
      • deze bekijken we hier meer in detail
  • Magnetische schijven: begrippen
    • enkel / dubbelzijdige schijven
    • schijvenpakket
    • sector, spoor, cilinder
    • blokken, interblok-hiaat
      • gegevenstransport gebeurt per blok
      • 1 of meer blokken  buffer in intern geheugen
      • hiaten tussen blokken : bevatten besturings-informatie
    • adres van een blok:
      • oppervlak, cilinder, bloknr.
    • capaciteit van schijf, van blok, ...
  • Schijf, cilinder, spoor schijven-pakket
  • Blok : onderdeel van een spoor (“track“) gefixeerd tijdens initialisatie Spoor : gefixeerd in de hardware Spoor en blok
  • Hoe een gege-ven vinden? 1. Cilinder 3. Blok 2. Spoor
  • 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
  • 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
  • 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
    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 blok 1 blok 2 blok 3 blok 4
  • 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
  • Agenda Geheugens Bestandsorganisatie: blokken en records Toegang tot en bewerkingen op bestanden Soorten bestanden Hashing Slotbemerkingen: nieuwe ontwikkelingen, …
  • 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
  • Formaat: voor-beelden
  • 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
  • Records in blokken plaatsen (2)
  • Hoeveel blokken zijn nodig voor een bestand van records?
    • Karakteristieken van records en blokken
      • bloklengte: B (bytes)
      • recordlengte: L (bytes)
    • Unspanned
      • als B > L :
        • blocking factor bfr : # records / blok =  B / L 
      • als B geen veelvoud van L is:
        • aan het einde van een blok B - ( bfr * L ) vrije bytes
    • Spanned
        • (bij variable lengte) bfr : gemiddelde nr. van records/blok
        • Gewoon geen vrije bytes aan het einde van een blok
    • Overal nodig:
      • r : # records in bestand
      • b =  (r / bfr)  blokken
  • 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
    - - + +
  • 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
  • Agenda Geheugens Bestandsorganisatie: blokken en records Toegang tot en bewerkingen op bestanden Soorten bestanden Hashing Slotbemerkingen: nieuwe ontwikkelingen, …
  • 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 EMP WHERE (NAME LIKE “%BART%“ OR AGE > 30) SELECT * UPDATE EMP FROM EMP SET SALARY = 100000 WHERE (NAME LIKE “%BART%“ OR AGE > 30)
  • 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
  • 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
  • Operaties die een DBMS soms aanbiedt
    • Soms biedt DBMS commando's voor verzamelingen van records:
      • FINDALL: geef alle records die aan een bepaald criterium voldoen
      • FINDORDERED : FINDALL + bepaalde volgorde opgelegd
      • REORGANISE: reorganisatie van bestand (bv. herordening van records in bestand)
  • 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
  • Agenda Geheugens Bestandsorganisatie: blokken en records Toegang tot en bewerkingen op bestanden Soorten bestanden Hashing Slotbemerkingen: nieuwe ontwikkelingen, …
  • Ongeordende bestanden: idee
  • 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
    + - -
  • Ongeordende betanden als relatieve bestanden
      • voor niet-overspannende records met vaste lengte
      • record direct bereikbaar via recordnummer
      • !! gebruiker moet dit nummer kennen
      •  helpt niet om een record volgens een zoekcriterium te localiseren; maar vereenvoudigt de constructie van toegangspaden (  later: indexering)
  • Geordende bestanden: idee
  • 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
    + + +
  • Geordende bestanden: voorbeeld
  • 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-1 anders als k > sleutel laatste record in buffer dan l := i+1 anders als record met sleutel k in buffer dan verderzoeken := false; gevonden := true; anders verderzoeken := false Alfred, Bob ?
    • .
  • Zoeken
  • 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
    - - - -
  • Directe bestanden: idee De rode? De rode!
  • 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 &quot;spreidt&quot; waarden zoveel mogelijk over verschillende adressen
        • botsing (&quot;collision&quot;) : 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
  • 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
  • Agenda Geheugens Bestandsorganisatie: blokken en records Toegang tot en bewerkingen op bestanden Soorten bestanden Hashing Slotbemerkingen: nieuwe ontwikkelingen, …
  • Hashing: idee
  • 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!)
  • Interne hashing: gegevensorganisatie
  • 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
  • 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
  • Botsing
  • 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 (&quot;collision resolution&quot;)
    • 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
  • 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 &quot;Ted Baker&quot; has a unique hash, but nevertheless collided with &quot;Sandra Dee&quot; which had previously collided with &quot;John Smith&quot;. 151 152 153 254 255
  • 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
    + - -
  • Open adressering (strings): toevoegen {sleutel k = string van N tekens; #adresruimte = M} {hashfunctie} temp := 1; voor i := 1 tot N : temp := temp * code(k[i]); a := temp mod M; {botsingsafhandeling} als locatie a vol is dan i := (a + 1) mod M; zolang i <> a en locatie i bezet : i := (i+1) mod M; als i = a dan mislukt {alle locaties zijn vol} anders a := i; {record kan op locatie a gezet worden}
  • Overloopafhandeling (2)
    • Ketening
      • indien geen plaats in cel: verwijzing naar nieuwe cel waar record (ofwel een nieuwe verwijzing) staat
        • opeenvolging van verwijzingen genereert &quot;keten&quot; 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 &quot;overloopgebied&quot; voor dergelijke nieuwe cellen
    -
  • Botsingafhandeling door ketening
  • Botsingafhandeling door ketening (direct chaining)
  • 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
    + + - -
  • 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
  • Overloopafhandeling (3)
    • Meervoudige hashing
      • na botsing of overloop: andere hashfunctie gebruiken
      • dit blijven herhalen tot hashfuncties uitgeput  dan overschakelen op andere techniek voor overloopafhandeling
  • 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
  • Externe hashing (gegevens in bestand): idee
  • Externe hashing (gegevens in bestand)
    • cellen = &quot;buckets&quot;
      • 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
  • Botsingsafhandeling
  • 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
    - - - + +
  • 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
  • Dynamische hashing: idee
    • Begin met 1 cel
    • Bij overloop: cel splitst in twee
      • records verdeeld volgens 1-ste bit van hashwaarden
      • index wordt gebouwd
        • (&quot;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
  • Dynamische hashing: opbouw (1)
    • vb. (met 1 record per cel)
      • record A heeft hashwaarde 001101
        • 1 cel, geen trie nodig
      • record B met hashwaarde 010011 wordt toegevoegd
        • Trie bouwen
        • Trie moet meteen naar eerste 2 bits kijken, want eerste bit is zelfde
  • Dynamische hashing: opbouw (2)
    • C met hashwaarde 111001 wordt toegevoegd
    • Bij weglaten van records evt. cellen weer samensmelten  trie krimpt
  • 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
  • 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
  • Uitbreidbare hashing: schema
  • Uitbreidbare hashing: voorbeeld (1) Bron: Hakan (2009). File Organization. http://www.powershow.com/view/27b55-YzBlN/File_Organization
  • Uitbreidbare hashing: voorbeeld (2)
  • Uitbreidbare hashing: voorbeeld (3)
  • Uitbreidbare hashing: voorbeeld (4)
  • Uitbreidbare hashing: voorbeeld (5)
  • Uitbreidbare hashing: voorbeeld (6)
  • Uitbreidbare hashing: voorbeeld (7)
  • Uitbreidbare hashing: voorbeeld (8)
  • Uitbreidbare hashing: voorbeeld (9)
  • Uitbreidbare hashing: voorbeeld (10)
  • Uitbreidbare hashing: voorbeeld (11)
  • Uitbreidbare hashing: voorbeeld (12)
  • Uitbreidbare hashing: beschrijving
    • 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 &quot;vervolledigde&quot; trie (waarbij alle bladeren op hetzelfde niveau zitten)
  • 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
    groeidt exponentieel - + + -
  • Lineaire hashing: idee
    • Gebruikt geen 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)
  • 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
  • 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, 4, 1, 8, 14, 5, 10, 7, 24
    Bron: Chen, Y. (2009). File Organization. http://ion.uwinnipeg.ca/~ychen2/databaseNotes/hashing.ppt (minimaal veranderd)
    • The first phase – phase 0
      • 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 h 1 = Key mod 2M):
    4 8 1 2 14 0 1 2 3 3 0 1 2 3 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) 8 1 2 14 3 4
  • 0 1 2 3 4 n=1 load factor: 7/10=0.7 no split insert(5) 8 1 5 2 14 3 4 0 1 2 3 4 Lineaire hashing: voorbeeld (3) 8 1 2 14 3 4
  • 0 1 2 3 4 n=1 load factor: 8/10=0.8 split using h 1 . insert(10) 8 1 5 2 14 3 4 10 overflow Lineaire hashing: voorbeeld (4) 8 1 5 2 14 3 4
  • 0 1 2 3 4 5 8 1 2 14 3 4 n=2 load factor: 8/12=0.66 no split 10 overflow 5 Lineaire hashing: voorbeeld (5)
  • n=2 load factor: 9/12=0.75 split using h 1 . 8 1 2 14 3 4 10 overflow 5 0 1 2 3 4 5 8 1 2 14 3 7 4 10 overflow 5 Lineaire hashing: voorbeeld (6) insert(7)
  • n=3 load factor: 9/14=0.642 no split. 8 1 2 10 3 7 4 5 14 Lineaire hashing: voorbeeld (7) 8 1 2 10 3 7 4 5 14 insert(24)
  • n=3 load factor: 10/14=0.71 split using h 1 . 8 24 1 2 10 3 7 4 5 14 8 24 1 2 10 3 4 5 14 7 Lineaire hashing: voorbeeld (8)
  • Lineaire hashing: zoeken als n=0 dan 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)
  • Agenda Geheugens Bestandsorganisatie: blokken en records Toegang tot en bewerkingen op bestanden Soorten bestanden Hashing Slotbemerkingen: nieuwe ontwikkelingen, …
  • 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)
  • RAID: Data striping
  • Geen duplicatie Volledige duplicatie Gebruik van Hamming codes, vermindert plaats vereist voor redundante schijven Gebruik van een pariteitsschijf om uit te zoeken 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
  • Trends in disk technology
  • Disk specifications: example
  • Disk specifications: example (contd. 1)
  • Disk specifications: example (contd. 2)
  • 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
  • Vooruitblijk Geheugens Bestandsorganisatie: blokken en records Toegang tot en bewerkingen op bestanden Soorten bestanden Hashing Slotbemerkingen: nieuwe ontwikkelingen, … Indexstructuren
  • 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!