2015-07-22 1 views
1

je traversais THIS et il est un exempleCe qui est sens du premier octet du hachage modulo quatre

CREATE TABLE groups (
    groupname text, 
    username text, 
    email text, 
    age int, 
    hash_prefix int, 
    PRIMARY KEY ((groupname, hash_prefix), username) 
) 

La nouvelle colonne, hash_prefix, tient un préfixe d'un hachage du nom d'utilisateur. Par exemple, il pourrait s'agir du premier octet du hachage modulo quatre. Ensemble avec groupname, ces deux colonnes forment la clé de partition composée . Au lieu d'un groupe résidant sur une partition, il est maintenant réparti sur quatre partitions.

Voici ce que signifie first byte of the hash modulo four. Considérant le tableau donné pouvez-vous donner un exemple que quelle sera la requête pour trier & pagination?

Répondre

4

Cela signifie que le reste du premier octet divisé par 4. A Modulo operation est défini comme:

Dans le calcul, l'opération modulo trouve le reste après la division d'un nombre par un autre (parfois appelé module).

Ainsi, par exemple, si la valeur du premier octet est 0xF7, que modulo quatre est 3. Vous avez peut-être vu ce que l'opérateur « % » en java, python et d'autres langues. Vous pouvez vérifier cela dans un interpréteur Python, i.e. .:

>>> 0xF7% 4

rendements 3.

+0

Alors, comment cette aide dans le tableau donné à faire Trier & pagination. pouvez-vous montrer la requête pour la même chose? Je veux dire que je veux 'sélectionner les 100 derniers utilisateurs qui ont rejoint le groupe avec la pagination taille 10' – manish

+2

Ce ne sera pas vraiment. En ajoutant hash_prefix à la clé de partition, les données peuvent désormais être stockées dans 4 partitions différentes, répartissant ainsi vos données de manière plus homogène sur votre cluster (au lieu d'être potentiellement chaud sur une partition). Malheureusement, vous devrez maintenant faire une requête pour chaque hash_prefix séparément car elle fait partie de la clé de partition. –

+0

considère la table donnée 'groups' – manish