1 / 85

Externe hashing: Motivatie & Samenvatting

Gegevensbanken 2012 H ashing en Indexstructuren I Bettina Berendt http://people.cs.kuleuven.be/~bettina.berendt/. Externe hashing: Motivatie & Samenvatting. Waar zijn we?. Les # wie wat 1 ED intro, ER 2 ED EER, (E)ER naar relationeel schema 2 ED relationeel model

kenaz
Télécharger la présentation

Externe hashing: Motivatie & Samenvatting

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Gegevensbanken 2012Hashing en Indexstructuren IBettina Berendthttp://people.cs.kuleuven.be/~bettina.berendt/

  2. Externe hashing: 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

  4. Herhaling – Hashed bestanden: idee Waar is de sla? In de groene la!

  5. Wat doen als de keuken te klein is?

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

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

  8. Wat is een index? Wat is een index? (1) – wijzen

  9. Wat en waarvoor een index? (2) – niet alles moeten lezen

  10. Wat en waarvoor een index? (3) – vinden (hier: volledig geïnverteerde bestanden)

  11. Wat en waarvoor een index? (4) – verstoppen

  12. Wat en waarvoor een index? (5) – verstoppen

  13. Overzicht: functionele types van indexen (1) Bestandsorganisatie Primaire index

  14. Overzicht: functionele types van indexen (2) Secundaire index 1 Secundaire index 2

  15. Overzicht: functionele types van indexen (3) Multi-niveau index

  16. Vraag: waarom deze twee opties?(MySQL als maar een voorbeeld) → dit zijn twee structurele types van indexen → vraag te beantwoorden aan het einde van deze les!

  17. 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?

  18. Agenda Hashing - idee en interne hashing Externe statische hashing Indexen: definitie Soorten indexen Indexen met meerdere niveaus (statisch; intro dynamisch/bomen)

  19. Agenda Hashing - idee en interne hashing Externe statische hashing Indexen: definitie Soorten indexen Indexen met meerdere niveaus (statisch; intro dynamisch/bomen)

  20. Hashing-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

  21. Hashing: idee

  22. Hashing: idee (2) – botsing en botsingafhandeling

  23. 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!)

  24. Interne hashing: gegevensorganisatie

  25. 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

  26. 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

  27. Botsing

  28. 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

  29. Overloopafhandeling (1) Open adressering: idee 151 152 153 254 255 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".

  30. 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

  31. 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}

  32. Overloop-/Botsingafhandeling (2): ketening(direct chaining)

  33. Overloopafhandeling (2): Ketening - • 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

  34. Botsingafhandeling door ketening (hetzelfde in een array)

  35. 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

  36. 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 andertabel opslaan

  37. (Extra) 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

  38. … maar kann zo‘n index in het hoofdgeheugen zitten?

  39. Agenda Hashing - idee en interne hashing Externe statische hashing Indexen: definitie Soorten indexen Indexen met meerdere niveaus (statisch; intro dynamisch/bomen)

  40. Externe hashing (gegevens in bestand): idee

  41. 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

  42. Botsingsafhandeling

  43. 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

  44. Agenda Hashing - idee en interne hashing Externe statische hashing Indexen: definitie Soorten indexen Indexen met meerdere niveaus (statisch; intro dynamisch/bomen)

  45. Indexstructuren • Definitie: • een index op een bestand = een gegevensstructuur die de toegang op dat bestand via een bepaald veld (of een groep velden) efficiënter maakt • d.w.z.: laat efficiënt zoeken naar een bepaalde waarde van dat veld toe • vgl.: woordenlijst achteraan boek, fichebak in bibliotheek, ... • Index kan opgeslagen zijn: • in centraal geheugen (enkel redelijk kleine indexen) • in een bestand in het externe geheugen

  46. Vraag: Op welke velden zouden het nuttig zijn om een index te plaatsen?

  47. Agenda Hashing - idee en interne hashing Externe statische hashing Indexen: definitie Soorten indexen Indexen met meerdere niveaus (statisch; intro dynamisch/bomen)

  48. Soorten indexen • primaire index : index op veld dat • de ordening van het bestand bepaalt • records zijn uniek geïdentificeerd (d.w.z. elke waarde voor het veld is uniek) • clusterindex : index op veld dat • de ordening van het bestand bepaalt • niet noodzakelijk unieke waarden • secundaire index : index op een ander veld dan dat wat de ordening bepaalt Sluiten elkaar uit

  49. Primaire indexen: voorbeeld }1 blok

  50. Primaire indexen • Primaire index: • bestand • met vaste lengte records • fysisch geordend volgens de sleutelwaarden • index: bevat 1 record per blok in het gegevensbestand: • sleutel van "ankerrecord" van het blok (= eerste of laatste record in het blok) • adres van het blok • Gegeven een sleutelwaarde, kan adres van blok waar overeenkomstig record zit, gevonden worden door zoeken in index i.p.v. gegevensbestand • d.i. dankzij de ordening in het bestand

More Related