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:
- Statisches Hashing
- 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
- Offenes Hashing
- 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.

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