Teradata - Algoritmo de hash
Uma linha é atribuída a um AMP específico com base no valor do índice primário. O Teradata usa um algoritmo de hash para determinar qual AMP obtém a linha.
A seguir está um diagrama de alto nível sobre o algoritmo de hash.
A seguir estão as etapas para inserir os dados.
O cliente envia uma consulta.
O analisador recebe a consulta e passa o valor PI do registro para o algoritmo de hash.
O algoritmo de hash faz o hash do valor do índice primário e retorna um número de 32 bits, chamado Row Hash.
Os bits de ordem superior do hash de linha (primeiros 16 bits) são usados para identificar a entrada do mapa de hash. O mapa hash contém um AMP #. O mapa de hash é uma matriz de intervalos que contém AMP # específico.
BYNET envia os dados para o AMP identificado.
AMP usa o hash Row de 32 bits para localizar a linha em seu disco.
Se houver qualquer registro com o mesmo hash de linha, ele aumentará o ID de exclusividade, que é um número de 32 bits. Para o novo hash de linha, o ID de exclusividade é atribuído como 1 e incrementado sempre que um registro com o mesmo hash de linha é inserido.
A combinação de hash de linha e ID de exclusividade é chamada de ID de linha.
A ID de linha prefixa cada registro no disco.
Cada linha da tabela no AMP é logicamente classificada por seus IDs de linha.
Como as tabelas são armazenadas
As tabelas são classificadas por ID de linha (hash de linha + ID de exclusividade) e, em seguida, armazenadas nas AMPs. O ID da linha é armazenado com cada linha de dados.
Hash de linha | ID de exclusividade | EmployeeNo | Primeiro nome | Último nome |
---|---|---|---|---|
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 | Paulo |