Teradata - Hashing-Algorithmus
Eine Zeile wird einem bestimmten AMP basierend auf dem Primärindexwert zugewiesen. Teradata verwendet einen Hashing-Algorithmus, um zu bestimmen, welcher AMP die Zeile erhält.
Es folgt ein allgemeines Diagramm zum Hashing-Algorithmus.
Im Folgenden finden Sie die Schritte zum Einfügen der Daten.
Der Client sendet eine Abfrage.
Der Parser empfängt die Abfrage und übergibt den PI-Wert des Datensatzes an den Hashing-Algorithmus.
Der Hashing-Algorithmus hascht den Primärindexwert und gibt eine 32-Bit-Zahl namens Row Hash zurück.
Die höherwertigen Bits des Zeilen-Hash (die ersten 16 Bits) werden verwendet, um den Hash-Map-Eintrag zu identifizieren. Die Hash-Map enthält eine AMP-Nummer. Hash Map ist ein Array von Buckets, das bestimmte AMP # enthält.
BYNET sendet die Daten an den identifizierten AMP.
AMP verwendet den 32-Bit-Zeilen-Hash, um die Zeile auf seiner Festplatte zu lokalisieren.
Wenn es einen Datensatz mit demselben Zeilen-Hash gibt, wird die Eindeutigkeits-ID erhöht, bei der es sich um eine 32-Bit-Zahl handelt. Bei einem neuen Zeilen-Hash wird die Eindeutigkeits-ID als 1 zugewiesen und erhöht, wenn ein Datensatz mit demselben Zeilen-Hash eingefügt wird.
Die Kombination aus Zeilen-Hash und Eindeutigkeits-ID wird als Zeilen-ID bezeichnet.
Zeilen-ID-Präfixe für jeden Datensatz auf der Festplatte.
Jede Tabellenzeile im AMP wird logisch nach ihren Zeilen-IDs sortiert.
Wie Tabellen gespeichert werden
Tabellen werden nach ihrer Zeilen-ID (Zeilen-Hash + Eindeutigkeits-ID) sortiert und dann in den AMPs gespeichert. Die Zeilen-ID wird mit jeder Datenzeile gespeichert.
Zeilen-Hash | Eindeutigkeits-ID | EmployeeNo | Vorname | Familienname, Nachname |
---|---|---|---|---|
2A01 2611 | 0000 0001 | 101 | Mike | James |
2A01 2612 | 0000 0001 | 104 | Alex | Stuart |
2A01 2613 | 0000 0001 | 102 | Robert | Williams |
2A01 2614 | 0000 0001 | 105 | Robert | James |
2A01 2615 | 0000 0001 | 103 | Peter | Paul |