3.8 Compara¸c˜ ao com Hashing Consistente
3.8.1 Mecanismo Base
Antes da compara¸c˜ao propriamente dita, recuperamos e complementamos a descri¸c˜ao do HC fornecida na sec¸c˜ao 2.6.2.1, recorrendo a um dialecto mais pr´oximo do usado na descri- ¸c˜ao dos nossos modelos. Em particular, e sem perda de generalidade, baseamos a descri¸c˜ao que se segue num contradom´ınio circular H = {0, 1, ..., 2Lf − 1), em vez do c´ırculo [0, 1).
Sob HC, o contradom´ınio H da fun¸c˜ao de hash est´atica f , de Lf bits, ´e particionado
num certo n´umero bem definido de subconjuntos/parti¸c˜oes cont´ınuos(as), com um n´umero aleat´orio de entradas cada. Depois, a cada n´o que suporta a DHT, ´e atribu´ıdo um certo n´umero bem definido dessas parti¸c˜oes: para um total de N n´os da DHT, a abordagem HC advoga que cada n´o deva receber pelo menos k × log2N parti¸c˜oes, para que os n´os
suportem uma quota semelhante da DHT, ou seja, a atribui¸c˜ao de m´ultiplas parti¸c˜oes da DHT a cada n´o ´e feita na tentativa de assegurar uma distribui¸c˜ao homog´enea da DHT. De facto, atribuindo-se v´arias parti¸c˜oes a cada n´o, a probabilidade de obter uma distribui¸c˜ao equitativa da DHT, entre os v´arios n´os, ´e maior do que a correspondente `a atribui¸c˜ao
3.8 Compara¸c˜ao com Hashing Consistente 59
de uma s´o parti¸c˜ao a cada n´o. Adicionalmente, a abordagem HC permite controlar a qualidade da distribui¸c˜ao atrav´es do parˆametro k: o aumento de k traduz-se no aumento do n´umero (m´edio) de parti¸c˜oes da DHT por n´o, o que aumenta a qualidade da distribui¸c˜ao. Mais especificamente, o particionamento ´e realizado considerando que, para cada n´o nj, s˜ao
deduz´ıveis k×log2N pseudo-identificadores vi(nj), designados por n´os virtuais; a aplica¸c˜ao
de uma fun¸c˜ao de hash f a cada n´o virtual vi(nj) gera um hash f (vi(nj)); a colec¸c˜ao
de todos os hashes f (vi(nj)) (de todos os n´os virtuais, de todos os n´os computacionais),
subdivide H num n´umero equivalente de intervalos cont´ıguos, delimitados por esses hashes.
2 1 4 6 3 5 7 0 f (v0(n0)) = 0 f (v0(n1)) = 1 f (v1(n0)) = 3 f (v0(n2)) = 4 f (v1(n1)) = 5 f (v1(n2)) = 7 [0,0] v0(n0) n0 [1,1] v0(n1) n1 [2,3] v1(n0) n0 [4,4] v0(n2) n2 [5,5] v1(n1) n1 [6,7] v1(n2) n2 Tabela de Particionamento
Figura 3.12: Vis˜ao do Hashing Consistente com N´os Virtuais.
A figura 3.12 ilustra a aplica¸c˜ao do particionamento do HC ao contradom´ınio H={0, 1, ..., 7), orientado no sentido dos ponteiros do rel´ogio, para um cen´ario em que i) a DHT ´e supor- tada por N = 3 n´os computacionais, correspondentes a N = {n0, n1, n2}, e ii) k = 1 (pelo
que s˜ao necess´arios k × log2(N ) = log2(3) ≈ 2 n´os virtuais por cada n´o computacional).
Na figura, cada hash f (vi(nj)) corresponde a um ponto do c´ırculo H, e define um sector
(intervalo): operando-se no sentido dos ponteiros do rel´ogio, o sector inicia-se (exclusive) no hash f (v′i(n′j)) imediatamente anterior, e termina (inclusive) no pr´oprio hash f (vi(nj)).
Assim, o n´o virtual respons´avel por um hash h ´e simplesmente o n´o virtual v cujo valor f (v) ´e o mais pr´oximo de h (em distˆancia euclidiana), no sentido dos ponteiros do rel´ogio. Saber a que n´o computacional se associou um hash h implica determinar 1) a que intervalo pertence o hash h, 2) a que n´o virtual pertence o intervalo e, finalmente, 3) a que n´o computacional pertence o n´o virtual (assumindo-se que o identificador do n´o computacional pode ser deduzido do identificador do n´o virtual, convenciona-se denotar essa dedu¸c˜ao por vi(nj) → nj, em que nj representa o n´o computacional hospedeiro do n´o virtual vi(nj)).
A figura inclui uma tabela que sintetiza o posicionamento resultante do particionamento. O conceito de n´o virtual, aplicado no contexto do particionamento de DHTs, surge pela primeira vez na abordagem HC e, embora seja entendido, em primeira instˆancia, como um pseudo-identificador, a sua associa¸c˜ao un´ıvoca a uma parti¸c˜ao de H permite que tamb´em possa ser visto, de forma equivalente, como parti¸c˜ao/subconjunto de entradas; essa vis˜ao representa uma aproxima¸c˜ao ao conceito de n´o virtual dos nossos modelos (aproxima¸c˜ao
60 3.8 Compara¸c˜ao com Hashing Consistente
mais forte no caso do modelo M4’), viabilizando a sua compara¸c˜ao; note-se, todavia, que sob HC o n´umero de entradas por n´o virtual ´e aleat´orio, ao passo que, nos nossos modelos, o Procedimento de (Re)Distribui¸c˜ao procura homogeneizar esse n´umero para todos os n´os virtuais (sendo que, no caso espec´ıfico do modelo M4, esse n´umero ´e entabulado entre limites bem definidos – Hmin(v) e Hmax(v) –, derivados a partir de parˆametros do modelo).
3.8.2 Qualidade da Distribui¸c˜ao
A qualidade de uma distribui¸c˜ao originada sob Hashing Consistente pode ser medida re- correndo `as m´etricas que definimos neste cap´ıtulo, designadamente no ˆambito dos modelos M3 e M4 de distribui¸c˜ao heterog´enea. Com efeito, esses modelos assentam num conceito de n´o virtual compat´ıvel com o preconizado pelo Hashing Consistente. Adicionalmente, a m´etrica de qualidade utilizada por esses modelos (f´ormula 3.16) ´e tamb´em aplic´avel a uma distribui¸c˜ao homog´enea, o tipo de distribui¸c˜ao almejada pelo Hashing Consistente. Para medir a qualidade de uma distribui¸c˜ao originada sob HC, recorrendo `a f´ormula 3.16, ´e necess´ario definir de forma adequada as quotas ideais e reais de cada n´o da DHT. Como se pretende uma distribui¸c˜ao homog´enea, ent˜ao as quotas ideais s˜ao comuns a todos os n´os, sendo dadas por Qi(n) = 1/N , ∀n ∈ N . As quotas reais (dadas genericamente pela
f´ormula 3.3), poder˜ao diferir entre n´os, em resultado da distribui¸c˜ao aleat´oria de entradas. Adicionalmente, e de forma a permitir uma compara¸c˜ao mais justa com os nossos modelos baseados em Hashing Dinˆamico, o n´umero total de entradas da DHT ´e recalculado para cada valor de N . Basicamente, o c´alculo procura fazer respeitar o invariante base do Hashing Consistente, segundo o qual cada n´o deve receber pelo menos Vmin(n) = k×log2N
n´os virtuais; sendo necess´aria pelo menos uma entrada da DHT por cada n´o virtual, ent˜ao cada n´o dever´a receber pelo menos Hmin(n) = Vmin(n) entradas, donde a DHT dever´a
ter pelo menos Hmin = N × Hmin(n) entradas; por fim, o n´umero efectivo de entradas da
DHT, H, obt´em-se arredondando Hmin `a potˆencia de 2 mais pr´oxima, c.f. a f´ormula 3.37:
H = 2L com L = ceil[log2(Hmin)] e Hmin = N × k × log2N (3.37)
Os valores de H assim calculados ficar˜ao muito aqu´em do valor fixo previsto pelo HC com base em Hashing Est´atico, correspondente a 2160 (devido `a utiliza¸c˜ao da fun¸c˜ao de hash SHA-1, de 160 bits). Ora, sendo verdade que um menor valor de H prejudicar´a a qualidade da distribui¸c˜ao do HC, tamb´em ´e verdade que tal limita¸c˜ao afectar´a os nossos modelos. A figura 3.13 apresenta σ[Q(n)], calculado pela f´ormula 3.16, como medida da qualidade de distribui¸c˜oes geradas por Hashing Consistente, para v´arios valores de k e de N . Assim, para cada k e para cada N , calculou-se H pela f´ormula 3.37 e repetiu-se o seguinte pro- cedimento 10 vezes: 1) particionou-se H em N × Vmin(n) n´os virtuais; 2) atribu´ıram-se
Vmin(n) n´os virtuais a cada n´o; 3) calculou-se a m´etrica σ[Q(n)]. Cada valor σ[Q(n)]
apresentado no gr´afico corresponde `a m´edia dos valores σ[Q(n)] do passo 3). A figura evidencia ainda a melhoria da qualidade da distribui¸c˜ao que resulta do aumento de k19.
3.8 Compara¸c˜ao com Hashing Consistente 61 Número de Nós 128 256 384 512 640 768 896 1024 Q u a lid a d e d a D is tr ib u iç ã o 0,00 0,05 0,10 0,15 0,20 0,25 0,30 0,35 HC : k = 1 HC : k = 2 HC : k = 4 HC : k = 8 M4 : Hmin (v)=1 e k = 1 M4 : Hmin (v)=1 e k = 2 M4 : Hmin (v)=1 e k = 4 M4 : Hmin (v)=1 e k = 8
Figura 3.13: σ[Q(n)] para Hashing Consistente e M4, com k ∈ {1, 2, 4, 8} e 1 ≤ N ≤ 1024.