Teradata - Algorithme de hachage
Une ligne est attribuée à un AMP particulier en fonction de la valeur d'index primaire. Teradata utilise un algorithme de hachage pour déterminer quel AMP obtient la ligne.
Voici un diagramme de haut niveau sur l'algorithme de hachage.
Voici les étapes pour insérer les données.
Le client soumet une requête.
L'analyseur reçoit la requête et transmet la valeur PI de l'enregistrement à l'algorithme de hachage.
L'algorithme de hachage hache la valeur d'index primaire et renvoie un nombre de 32 bits, appelé Row Hash.
Les bits d'ordre supérieur du hachage de ligne (16 premiers bits) sont utilisés pour identifier l'entrée de mappe de hachage. La carte de hachage contient un AMP #. La carte de hachage est un tableau de buckets contenant un numéro AMP spécifique.
BYNET envoie les données à l'AMP identifié.
AMP utilise le hachage de ligne 32 bits pour localiser la ligne sur son disque.
S'il existe un enregistrement avec le même hachage de ligne, il incrémente l'ID d'unicité qui est un nombre de 32 bits. Pour le nouveau hachage de ligne, l'ID d'unicité est attribué à 1 et incrémenté chaque fois qu'un enregistrement avec le même hachage de ligne est inséré.
La combinaison du hachage de ligne et de l'ID d'unicité est appelée ID de ligne.
L'ID de ligne préfixe chaque enregistrement du disque.
Chaque ligne de table dans l'AMP est triée logiquement en fonction de leurs ID de ligne.
Comment les tables sont stockées
Les tables sont triées par leur ID de ligne (hachage de ligne + ID d'unicité), puis stockées dans les AMP. L'ID de ligne est stocké avec chaque ligne de données.
Hash de ligne | ID d'unicité | Numéro d'employé | Prénom | Nom de famille |
---|---|---|---|---|
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 |