Implementazione dell'algoritmo di scoring con Django e Redis

2

Io uso DjangoREST & MySQL come back-end per un'app mobileiel. Ho due modelli, User e Feed e per qualsiasi chiamata a API / feed / restituisce tutti i feed per utente autenticato ordinato dal parametro created_at del feed.

Tuttavia, ho bisogno di personalizzare l'ordine dei feed per ciascun utente con un semplice algoritmo di punteggio. I dettagli dell'algoritmo non sono importanti, ma fondamentalmente ho bisogno di memorizzare il punteggio per ogni coppia di feed di carte in una tabella come UserFeedScore.

Il problema è che questa tabella crescerà molto velocemente quando il numero di utenti e feed aumenterà perché ci sarà una riga per ogni coppia di feed utente. Inoltre, per ogni attività dell'utente (come, commenti, ecc.) I punteggi per ogni feed per quell'utente saranno aggiornati che esauriranno MySQL db alla fine.

Mantenere questa tabella in Redis sembra una soluzione adeguata, ma non sono sicuro di come ordino i feed nel database MySQL per i punteggi calcolati in Redis.

Qualsiasi struttura dati Redis, suggerimenti per valori-chiave ed esempi di query Django sono apprezzati.

class Feed(models.Model):
    text = models.CharField()
    created_by = models.ForeignKey(settings.AUTH_USER_MODEL)
    created_at = models.DateTimeField(default=timezone.now)


class UserFeedScore(models.Model)
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    feed =  models.ForeignKey(Feed)
    score = models.IntegerField(default=100)
    
posta brsbilgic 04.12.2014 - 16:27
fonte

0 risposte

Leggi altre domande sui tag