Hashing i DBMS: Statiske og dynamiske hashing-teknikker
โก Smart opsummering
Hashing i DBMS er en teknik, der beregner en posts diskplacering direkte fra dens nรธgle uden at bruge et indeks. En hashfunktion knytter sรธgenรธgler til data-buckets, og statisk eller dynamisk hashing styrer, hvordan disse buckets vokser.

Hvad er hashing i DBMS?
I DBMS er hashing en teknik til direkte at sรธge efter placeringen af โโรธnskede data pรฅ disken uden at bruge en indeksstruktur. Hashing-metoden bruges til at indeksere og hente elementer i en database, da det er hurtigere at sรธge efter et specifikt element ved hjรฆlp af den kortere hashnรธgle i stedet for dens oprindelige vรฆrdi. Data gemmes i form af datablokke, hvis adresse genereres ved at anvende en hashfunktion; hukommelsesplaceringen, hvor disse poster gemmes, kaldes en datablok eller databรธtte.
Hvorfor har vi brug for hashing?
Her er de situationer i et DBMS, hvor du skal anvende hashing-metoden:
- For en enorm databasestruktur er det svรฆrt at sรธge i alle indeksvรฆrdier pรฅ alle deres niveauer og derefter nรฅ destinationsdatablokken for at fรฅ de รธnskede data.
- Hashing bruges til at indeksere og hente elementer i en database, fordi det er hurtigere at sรธge efter et specifikt element ved hjรฆlp af den kortere hashnรธgle end den oprindelige vรฆrdi.
- Hashing er en ideel metode til at beregne den direkte placering af en datapost pรฅ disken uden at bruge en indeksstruktur.
- Det er ogsรฅ en nyttig teknik til at implementere ordbรธger.
Vigtige terminologier i hashing
Her er vigtige terminologier, der bruges i hashing:
- Dataspand: Data buckets er hukommelsessteder, hvor posterne gemmes. Det er ogsรฅ kendt som lagringsenheden.
- Nรธgle: a DBMS nรธgle er en attribut eller et sรฆt af attributter, der hjรฆlper dig med at identificere en rรฆkke (tuple) i en relation (tabel).
- Hash-funktion: et kortping funktion, der knytter alle sรธgenรธgler til den adresse, hvor de faktiske poster er placeret.
- Lineรฆr sondering: et fast interval mellem sonder. I denne metode bruges den nรฆste tilgรฆngelige datablok til at indtaste den nye post i stedet for at overskrive den รฆldre post.
- Kvadratisk sondering: hjรฆlper med at bestemme den nye bucket-adresse ved at lรฆgge det fortlรธbende output fra et kvadratisk polynomium til startvรฆrdien givet af den oprindelige beregning.
- Hash-indeks: adressen pรฅ datablokken. En hashfunktion kan vรฆre en simpel matematisk funktion eller en kompleks funktion.
- Double Hashing: en metode, der bruges i hashtabeller til at lรธse kollisioner ved at anvende en anden hashfunktion.
- Spandoverlรธb: Tilstanden med bucket-overflow kaldes kollision. Dette er en fatal fase for enhver statisk hashfunktion.
Typer af hashing-teknikker
Der er primรฆrt to typer hashingteknikker i DBMS:
- Statisk hash
- Dynamisk hash
De to adskiller sig primรฆrt i, om antallet af buckets er fast, som de nรฆste to afsnit forklarer.
Statisk hash
Ved statisk hashing vil den resulterende data bucket-adresse altid forblive den samme.
Derfor, hvis du genererer en adresse til f.eks. Student_ID = 10 ved hjรฆlp af hashingfunktionen mod(3), vil den resulterende bucket-adresse altid vรฆre 1Sรฅ du vil ikke se nogen รฆndring i bucket-adressen.
Derfor forbliver antallet af data-buckets i hukommelsen altid konstant i den statiske hashing-metode.
Statiske hash-funktioner
- Indsรฆttelse af en post: Nรฅr en ny post skal indsรฆttes i tabellen, genererer du en adresse til den ved hjรฆlp af dens hash-nรธgle. Nรฅr adressen er genereret, gemmes posten pรฅ den placering.
- Sรธger: Nรฅr du skal hente posten, bruges den samme hashfunktion til at hente adressen pรฅ den bucket, hvor dataene er gemt.
- Slet en post: Ved at bruge hashfunktionen henter du fรธrst den post, du vil slette, og fjerner derefter posten fra den adresse i hukommelsen.
Statisk hashing er yderligere opdelt i:
- ร bn hashing
- Lukket hashing
ร bn Hashing
I den รฅbne hashing-metode bruges den nรฆste tilgรฆngelige datablok til at indtaste den nye post i stedet for at overskrive den รฆldre post. Denne metode er ogsรฅ kendt som lineรฆr probing.
For eksempel er A2 en ny post, du vil indsรฆtte. Hashfunktionen genererer adressen 222, men den er allerede optaget af en anden vรฆrdi. Derfor sรธger systemet efter den nรฆste data bucket, 501, og tildeler A2 til den.

Lukket hashing
I den lukkede hashing-metode, nรฅr buckets er fulde, allokeres en ny bucket til den samme hash, og resultatet linkes efter den forrige.
Dynamisk hash
Dynamisk hashing tilbyder en mekanisme, hvor data buckets tilfรธjes og fjernes dynamisk og efter behov. I denne hashing-metode hjรฆlper hashfunktionen dig med at oprette et stort antal vรฆrdier, og strukturen vokser eller krymper med dataene. Dette gรธr den til et godt valg til tabeller, hvis stรธrrelse ikke kan forudsiges pรฅ forhรฅnd, hvor statisk hashing enten ville spilde plads eller overlรธbe.
Forskellen mellem ordnet indeksering og hashing
Nedenfor er de vigtigste forskelle mellem indeksering og hashing:
| Driftsparametre | Ordnet indeksering | hashing |
|---|---|---|
| Opbevaring af adresse | Adresser i hukommelsen sorteres efter en nรธglevรฆrdi kaldet primรฆrnรธglen. | Adresser genereres altid ved hjรฆlp af en hash-funktion pรฅ nรธglevรฆrdien. |
| Ydeevne | Den kan falde, efterhรฅnden som dataene รธges, fordi dataene lagres sorteret, og hver indsรฆttelse, sletning eller opdatering omorganiserer dem. | Ydeevnen er bedst med konstant tilfรธjelse og sletning af data. For en enorm database bliver vedligeholdelse af hashfiler dyrere. |
| Brugt til | Foretrukket til hentning af omrรฅde, hvor data hentes for et bestemt omrรฅde. | Ideel til at hente en bestemt post baseret pรฅ sรธgenรธglen og fungerer kun godt, nรฅr hashfunktionen er pรฅ sรธgenรธglen. |
| Hukommelsesstyring | Mange ubrugte datablokke opstรฅr fra sletning og opdatering og kan ikke frigives til genbrug, sรฅ regelmรฆssig vedligeholdelse er pรฅkrรฆvet. | I statisk og dynamisk hashing administreres hukommelse altid, og bucket overflow hรฅndteres for at udvide statisk hashing. |
Kort sagt, vรฆlg bestilt Indeksering til omrรฅdeforespรธrgsler og hashing til opslag med eksakt match pรฅ nรธglen.
Hvad er kollision?
En hash-kollision er en tilstand, hvor de resulterende hashes fra to eller flere elementer i datasรฆttet forkert mappes til det samme sted i hash bord.
Sรฅdan hรฅndterer du en hashingkollision
Der er to teknikker, du kan bruge til at undgรฅ en hash-kollision:
- Genopvarmning: Denne metode aktiverer en sekundรฆr hashfunktion, som anvendes kontinuerligt, indtil der findes et tomt slot, hvor en post kan placeres.
- Kรฆdning: Kรฆdningsmetoden opbygger en linket liste over elementer, hvis nรธgler hashes til den samme vรฆrdi. Denne metode krรฆver et ekstra linkfelt pรฅ hver tabelposition.
