L'hash coerente squilla con sottoinsiemi in diversi bucket

1

Ho N bucket. Ho degli utenti M Ogni utente può acquistare ovunque tra 1 e N biglietti per una lotteria imminente.

Vorrei distribuire i biglietti più o meno uniformemente tra i bucket, con il vincolo addizionale che un utente non può avere più di un ticket nello stesso bucket.

Sarebbe anche carino se quando ho aggiunto o rimosso i bucket, non dovevo ridistribuire una grande percentuale dei ticket.

Questo è in qualche modo simile a un problema di hash coerente . Potrei fare hash(userId+userTicketNumber) e mettere quell'hash sull'anello. Tuttavia, non ho alcuna garanzia che i biglietti dell'utente vengano messi in un set unico di bucket.

Una soluzione sarebbe quella di allocare l'utente 1, il ticket 1 al bucket 1, quindi incrementare il numero del bucket e il numero del ticket. Quando l'utente ha esaurito i ticket, incrementa il numero del bucket e passa all'utente 2. Quando finiamo i bucket, ricominciamo dal bucket 1, e così via e così via fino a quando non vengono allocati tutti i ticket. Sfortunatamente questa procedura porterebbe a un sacco di riallocazione quando ho aggiunto o rimosso i bucket.

Ho provato a cercare varianti per il problema dell'anello hash coerente, ma non trovo nulla. Sono sicuro che questo problema è stato risolto prima - sai dove si trova la soluzione?

    
posta Kevin Burke 12.06.2016 - 23:04
fonte

0 risposte

Leggi altre domande sui tag