Hashing in DBMS: Statische und dynamische Hashing-Techniken

Was ist Hashing im DBMS?

In DBMS ist Hashing eine Technik, um den Speicherort gewรผnschter Daten auf der Festplatte direkt zu durchsuchen, ohne die Indexstruktur zu verwenden. Die Hashing-Methode wird zum Indizieren und Abrufen von Elementen in einer Datenbank verwendet, da es schneller ist, dieses bestimmte Element mithilfe des kรผrzeren Hash-Schlรผssels zu durchsuchen, anstatt seinen ursprรผnglichen Wert zu verwenden. Daten werden in Form von Datenblรถcken gespeichert, deren Adresse durch Anwenden einer Hash-Funktion an dem Speicherort, an dem diese Datensรคtze gespeichert sind, generiert wird, der als a bezeichnet wird Datenblock oder Daten-Bucket.

Warum brauchen wir Hashing?

Hier sind die Situationen im DBMS, in denen Sie die Hashing-Methode anwenden mรผssen:

  • Bei einer groรŸen Datenbankstruktur ist es schwierig, alle Indexwerte auf allen Ebenen zu durchsuchen. AnschlieรŸend mรผssen Sie den Zieldatenblock erreichen, um die gewรผnschten Daten zu erhalten.
  • Die Hashing-Methode wird zum Indizieren und Abrufen von Elementen in einer Datenbank verwendet, da die Suche nach einem bestimmten Element mit dem kรผrzeren Hash-Schlรผssel schneller ist als mit seinem ursprรผnglichen Wert.
  • Hashing ist eine ideale Methode, um die direkte Position eines Datensatzes auf der Festplatte zu berechnen, ohne die Indexstruktur zu verwenden.
  • Es ist auch eine hilfreiche Technik fรผr die Implementierung von Wรถrterbรผchern.

Wichtige Terminologien beim Hashing

Hier sind wichtige Terminologien, die beim Hashing verwendet werden:

  • Daten-Bucket โ€“ Daten-Buckets sind Speicherorte, an denen die Datensรคtze gespeichert werden. Es wird auch als Speichereinheit bezeichnet.
  • Wesentliche: Ein DBMS-Schlรผssel ist ein Attribut oder eine Menge eines Attributs, das Ihnen hilft, eine Zeile (ein Tupel) in einer Beziehung (Tabelle) zu identifizieren. Dadurch kรถnnen Sie die Beziehung zwischen zwei Tabellen ermitteln.
  • Hash-Funktion: Eine Hash-Funktion ist eine Zuordnungsfunktion, die alle Suchschlรผssel der Adresse zuordnet, an der tatsรคchliche Datensรคtze platziert sind.
  • Lineare Sondierung โ€“ Bei der linearen Abtastung handelt es sich um ein festes Intervall zwischen den Abtastungen. Bei dieser Methode wird der nรคchste verfรผgbare Datenblock verwendet, um den neuen Datensatz einzugeben, anstatt den รคlteren Datensatz zu รผberschreiben.
  • Quadratische Prรผfungโ€“ Es hilft Ihnen, die neue Bucket-Adresse zu ermitteln. Es hilft Ihnen, das Intervall zwischen Sonden hinzuzufรผgen, indem die aufeinanderfolgende Ausgabe des quadratischen Polynoms zum Startwert der ursprรผnglichen Berechnung addiert wird.
  • Hash-Index โ€“ Es handelt sich um eine Adresse des Datenblocks. Eine Hash-Funktion kann eine einfache oder sogar eine komplexe mathematische Funktion sein.
  • Double Hashing -Double Hashing ist eine Computerprogrammierungsmethode, die in Hash-Tabellen verwendet wird, um die Probleme einer Kollision zu lรถsen.
  • Eimerรผberlauf: Der Zustand des Bucket-รœberlaufs wird als Kollision bezeichnet. Dies ist eine fatale Phase fรผr die Funktionsfรคhigkeit aller statischen Systeme.

Arten von Hashing-Techniken

Es gibt hauptsรคchlich zwei Arten von SQL-Hashing-Methoden/-Techniken:

  1. Statisches Hashing
  2. Dynamisches Hashing

statisches Hashing

Beim statischen Hashing bleibt die resultierende Daten-Bucket-Adresse immer gleich.

Wenn Sie also beispielsweise eine Adresse generieren Studenten_ID = 10 Verwendung der Hashing-Funktion mod(3), lautet die resultierende Bucket-Adresse immer 1. Sie werden also keine ร„nderung an der Bucket-Adresse feststellen.

Daher bleibt bei dieser statischen Hashing-Methode die Anzahl der Daten-Buckets im Speicher immer konstant.

Statische Hash-Funktionen

  • Einfรผgen eines Datensatzes: Wenn ein neuer Datensatz in die Tabelle eingefรผgt werden muss, kรถnnen Sie mithilfe seines Hash-Schlรผssels eine Adresse fรผr den neuen Datensatz generieren. Wenn die Adresse generiert wird, wird der Datensatz automatisch an diesem Ort gespeichert.
  • Suchen: Wenn Sie den Datensatz abrufen mรผssen, sollte dieselbe Hash-Funktion hilfreich sein, um die Adresse des Buckets abzurufen, in dem Daten gespeichert werden sollen.
  • Datensatz lรถschen: Mit der Hash-Funktion kรถnnen Sie zunรคchst den Datensatz abrufen, den Sie lรถschen mรถchten. AnschlieรŸend kรถnnen Sie die Datensรคtze fรผr diese Adresse aus dem Speicher entfernen.

Statisches Hashing ist weiter unterteilt in

  1. Offenes Hashing
  2. SchlieรŸen Sie das Hashing.

ร–ffnen Sie Hashing

Bei der Open-Hashing-Methode wird der nรคchste verfรผgbare Datenblock verwendet, um den neuen Datensatz einzugeben, anstatt den รคlteren zu รผberschreiben. Diese Methode wird auch als lineares Sondieren bezeichnet.

Beispielsweise ist A2 ein neuer Datensatz, den Sie einfรผgen mรถchten. Die Hash-Funktion generiert die Adresse 222. Sie ist jedoch bereits durch einen anderen Wert belegt. Deshalb sucht das System nach dem nรคchsten Daten-Bucket 501 und weist ihm A2 zu.

ร–ffnen Sie Hashing
So funktioniert Open Hash

Hashing schlieรŸen

Bei der Close-Hashing-Methode wird, wenn die Buckets voll sind, ein neuer Bucket fรผr denselben Hash zugewiesen und das Ergebnis wird nach dem vorherigen verknรผpft.

Dynamisches Hashing

Dynamisches Hashing bietet einen Mechanismus, mit dem Daten-Buckets dynamisch und bei Bedarf hinzugefรผgt und entfernt werden. Bei diesem Hashing hilft Ihnen die Hash-Funktion dabei, eine groรŸe Anzahl von Werten zu erstellen.

Unterschied zwischen geordneter Indizierung und Hashing

Nachfolgend sind die wichtigsten Unterschiede zwischen Indexierung und Hashing aufgefรผhrt

KenngrรถรŸen Auftragsindizierung Hashing
Speicherung der Adresse Adressen im Speicher werden nach einem Schlรผsselwert sortiert, der als Primรคrschlรผssel bezeichnet wird Adressen werden immer mithilfe einer Hash-Funktion fรผr den Schlรผsselwert generiert.
Leistung Sie kann abnehmen, wenn die Datenmenge in der Hash-Datei zunimmt. Da die Daten bei der Ausfรผhrung von Operationen (Einfรผgen/Lรถschen/Aktualisieren) in sortierter Form gespeichert werden, verringert sich die Leistung. Die Leistung des Hashings ist am besten, wenn stรคndig Daten hinzugefรผgt und gelรถscht werden. Wenn die Datenbank jedoch sehr groรŸ ist, ist die Organisation und Wartung der Hash-Datei kostspieliger.
Verwenden fรผr Bevorzugt fรผr den Bereichsabruf von Daten. Das heiรŸt, wann immer es Abrufdaten fรผr einen bestimmten Bereich gibt, ist diese Methode eine ideale Option. Dies ist eine ideale Methode, wenn Sie einen bestimmten Datensatz basierend auf dem Suchschlรผssel abrufen mรถchten. Die Leistung ist jedoch nur dann gut, wenn sich die Hash-Funktion auf dem Suchschlรผssel befindet.
Speicherverwaltung Durch den Lรถsch-/Aktualisierungsvorgang bleiben viele ungenutzte Datenblรถcke รผbrig. Diese Datenblรถcke kรถnnen nicht zur Wiederverwendung freigegeben werden. Aus diesem Grund ist eine regelmรครŸige Wartung des Speichers erforderlich. Bei statischen und dynamischen Hashing-Methoden wird der Speicher immer verwaltet. Auch der Bucket-รœberlauf wird perfekt gehandhabt, um das statische Hashing zu erweitern.

Was ist Kollision?

Eine Hash-Kollision ist ein Zustand, bei dem die resultierenden Hashes aus zwei oder mehr Daten im Datensatz fรคlschlicherweise dieselbe Stelle im Datensatz abbilden Hash-tabelle.

Wie gehe ich mit einer Hashing-Kollision um?

Es gibt zwei Techniken, mit denen Sie eine Hash-Kollision vermeiden kรถnnen:

  1. Aufwรคrmen: Diese Methode ruft eine sekundรคre Hash-Funktion auf, die kontinuierlich angewendet wird, bis ein leerer Slot gefunden wird, in dem ein Datensatz platziert werden soll.
  2. Verkettung: Die Verkettungsmethode erstellt eine verknรผpfte Liste von Elementen, deren Schlรผssel-Hashes denselben Wert haben. Diese Methode erfordert ein zusรคtzliches Linkfeld zu jeder Tabellenposition.

Zusammenfassung

  • In DBMSHashing ist eine Technik, um den Speicherort gewรผnschter Daten auf der Festplatte direkt zu durchsuchen, ohne die Indexstruktur zu verwenden.
  • Die Hashing-Methode wird zum Indizieren und Abrufen von Elementen in einer Datenbank verwendet, da die Suche nach einem bestimmten Element mit dem kรผrzeren Hash-Schlรผssel schneller ist als mit seinem ursprรผnglichen Wert.
  • Daten-Bucket, Schlรผssel, Hash-Funktion, lineare Prรผfung, quadratische Prรผfung, Hash-Index, Double Hashing und Bucket Overflow sind wichtige Terminologien, die beim Hashing verwendet werden
  • Zwei Arten von Hashing-Methoden sind 1) statisches Hashing und 2) dynamisches Hashing
  • Beim statischen Hashing bleibt die resultierende Daten-Bucket-Adresse immer gleich.
  • Dynamisches Hashing bietet einen Mechanismus, mit dem Daten-Buckets dynamisch und bei Bedarf hinzugefรผgt und entfernt werden.
  • Bei der Indexierung werden Adressen im Speicher nach einem kritischen Wert sortiert, wรคhrend beim Hashing Adressen immer mithilfe einer Hash-Funktion fรผr den Schlรผsselwert generiert werden.
  • Eine Hash-Kollision ist ein Zustand, bei dem die resultierenden Hashes aus zwei oder mehr Daten im Datensatz fรคlschlicherweise dieselbe Stelle in der Hash-Tabelle abbilden.
  • Rehashing und Chaining sind zwei Methoden, die Ihnen helfen, Hashing-Kollisionen zu vermeiden.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: