Hashing i DBMS: statiske og dynamiske hashing-teknikker
โก Smart oppsummering
Hashing i DBMS er en teknikk som beregner diskplasseringen til en post direkte fra nรธkkelen, uten รฅ gรฅ en indeks. En hash-funksjon tilordner sรธkenรธkler til databรธtter, og statisk eller dynamisk hashing styrer hvordan disse bรธttene vokser.

Hva er hashing i DBMS?
I DBMS er hashing en teknikk for รฅ sรธke direkte etter plasseringen av รธnskede data pรฅ disken uten รฅ bruke en indeksstruktur. Hashing-metoden brukes til รฅ indeksere og hente elementer i en database, ettersom det er raskere รฅ sรธke etter et bestemt element ved รฅ bruke den kortere hash-nรธkkelen i stedet for den opprinnelige verdien. Data lagres i form av datablokker hvis adresse genereres ved รฅ bruke en hash-funksjon; minneplasseringen der disse postene lagres er kjent som en datablokk eller databรธtte.
Hvorfor trenger vi hashing?
Her er situasjonene i et DBMS der du mรฅ bruke hashing-metoden:
- For en enorm databasestruktur er det vanskelig รฅ sรธke i alle indeksverdiene gjennom alle nivรฅene deres og deretter nรฅ mรฅldatablokken for รฅ fรฅ de รธnskede dataene.
- Hashing brukes til รฅ indeksere og hente elementer i en database, fordi det er raskere รฅ sรธke etter et bestemt element ved รฅ bruke den kortere hashnรธkkelen enn den opprinnelige verdien.
- Hashing er en ideell metode for รฅ beregne den direkte plasseringen av en datapost pรฅ disken uten รฅ bruke en indeksstruktur.
- Det er ogsรฅ en nyttig teknikk for รฅ implementere ordbรธker.
Viktige terminologier i hashing
Her er viktige terminologier som brukes i hashing:
- Databรธtte: Databรธtter er minneplasseringer der postene lagres. Det er ogsรฅ kjent som lagringsenheten.
- Nรธkkel: a DBMS nรธkkel er et attributt eller et sett med attributter som hjelper deg med รฅ identifisere en rad (tuple) i en relasjon (tabell).
- Hash-funksjon: et kartping funksjon som tilordner alle settet med sรธkenรธkler til adressen der de faktiske postene er plassert.
- Lineรฆr sondering: et fast intervall mellom sonder. I denne metoden brukes den neste tilgjengelige datablokken til รฅ legge inn den nye posten, i stedet for รฅ overskrive den eldre posten.
- Kvadratisk sondering: hjelper med รฅ bestemme den nye bรธtteadressen ved รฅ legge til den pรฅfรธlgende utgangen av et kvadratisk polynom til startverdien gitt av den opprinnelige beregningen.
- Hash-indeks: adressen til datablokken. En hash-funksjon kan vรฆre en enkel matematisk funksjon eller en kompleks en.
- Double Hashing: en metode som brukes i hash-tabeller for รฅ lรธse kollisjoner ved รฅ bruke en andre hash-funksjon.
- Bรธtteoverlรธp: Tilstanden med bรธtteoverlรธp kalles kollisjon. Dette er et fatalt stadium for enhver statisk hash-funksjon.
Typer hashing-teknikker
Det finnes hovedsakelig to typer hashingteknikker i DBMS:
- Statisk hashing
- Dynamisk hasj
De to skiller seg hovedsakelig ut i om antallet bรธtter er fast, slik de neste to avsnittene forklarer.
Statisk hashing
Ved statisk hashing vil den resulterende databรธtteadressen alltid forbli den samme.
Derfor, hvis du genererer en adresse for, for eksempel, Student_ID = 10 ved hjelp av hashingfunksjonen mod(3), vil den resulterende bรธtteadressen alltid vรฆre 1Sรฅ du vil ikke se noen endring i bรธtteadressen.
Derfor, i den statiske hashing-metoden, forblir antallet databรธtter i minnet alltid konstant.
Statiske hash-funksjoner
- Sette inn en post: Nรฅr en ny post mรฅ settes inn i tabellen, genererer du en adresse for den ved hjelp av hash-nรธkkelen. Nรฅr adressen er generert, lagres posten pรฅ den plasseringen.
- Sรธker: Nรฅr du trenger รฅ hente posten, brukes den samme hash-funksjonen til รฅ hente adressen til bรธtta der dataene er lagret.
- Slett en oppfรธring: Ved รฅ bruke hash-funksjonen henter du fรธrst posten du vil slette, og fjerner deretter posten fra den adressen i minnet.
Statisk hashing er videre delt inn i:
- ร pne hashing
- Lukket hashing
ร pne Hashing
I den รฅpne hashing-metoden brukes den neste tilgjengelige datablokken til รฅ legge inn den nye posten i stedet for รฅ overskrive den eldre posten. Denne metoden er ogsรฅ kjent som lineรฆr probing.
For eksempel er A2 en ny post du vil sette inn. Hash-funksjonen genererer adressen 222, men den er allerede opptatt av en annen verdi. Det er derfor systemet ser etter den neste databรธtten, 501, og tilordner A2 til den.

Lukket hashing
I den lukkede hashing-metoden, nรฅr bรธttene er fulle, tildeles en ny bรธtte for den samme hasjen, og resultatet lenkes etter den forrige.
Dynamisk hasj
Dynamisk hashing tilbyr en mekanisme der databรธtter legges til og fjernes dynamisk og etter behov. I denne hashing-metoden hjelper hash-funksjonen deg med รฅ opprette et stort antall verdier, og strukturen vokser eller krymper med dataene. Dette gjรธr den til en god lรธsning for tabeller med en stรธrrelse som ikke kan forutsies pรฅ forhรฅnd, der statisk hashing enten vil kaste bort plass eller overfylle.
Forskjellen mellom ordnet indeksering og hashing
Nedenfor er de viktigste forskjellene mellom indeksering og hashing:
| Parametre | Ordnet indeksering | hashing |
|---|---|---|
| Lagring av adresse | Adresser i minnet sorteres etter en nรธkkelverdi kalt primรฆrnรธkkelen. | Adresser genereres alltid ved hjelp av en hash-funksjon pรฅ nรธkkelverdien. |
| Ytelse | Den kan avta etter hvert som dataene รธker, fordi dataene lagres sortert, og hver innsetting, sletting eller oppdatering endrer rekkefรธlgen. | Ytelsen er best med konstant tillegg og sletting av data. For en stor database blir vedlikehold av hash-filer dyrere. |
| Bruke til | Foretrukket for henting av omrรฅde, der data hentes for et bestemt omrรฅde. | Ideell for รฅ hente en bestemt post basert pรฅ sรธkenรธkkelen, og fungerer bare bra nรฅr hash-funksjonen er pรฅ sรธkenรธkkelen. |
| Minnehรฅndtering | Mange ubrukte datablokker oppstรฅr fra sletting og oppdatering og kan ikke frigjรธres for gjenbruk, sรฅ regelmessig vedlikehold er nรธdvendig. | I statisk og dynamisk hashing administreres alltid minne og bรธtteoverlรธp hรฅndteres for รฅ utvide statisk hashing. |
Kort sagt, velg bestilt indeksering for omrรฅdespรธrringer og hashing for eksakte samsvarsoppslag pรฅ nรธkkelen.
Hva er kollisjon?
En hash-kollisjon er en tilstand der de resulterende hashene fra to eller flere elementer i datasettet feilaktig tilordnes til samme sted i hasjbord.
Hvordan hรฅndtere en hashingkollisjon
Det finnes to teknikker du kan bruke for รฅ unngรฅ en hash-kollisjon:
- Gjentakelse: Denne metoden pรฅkaller en sekundรฆr hash-funksjon, som brukes kontinuerlig inntil et tomt spor finnes der en post kan plasseres.
- Kjetting: Kjedemetoden bygger en lenket liste over elementer der nรธklene hashes til samme verdi. Denne metoden krever et ekstra lenkefelt pรฅ hver tabellposisjon.
