Attualmente sto sviluppando un'applicazione per consentire agli studenti di gestire i loro corsi e non so davvero come progettare il database per una funzione specifica. Il cliente desidera, molto simile a Facebook, che quando uno studente visualizza l'elenco di persone attualmente in un corso specifico, vengono visualizzate per prime le persone con i corsi più comuni con l'utente connesso. Quasi uguale alla funzione Facebook "Suggerimenti amici" con un filtro aggiuntivo.Chiedendosi come funziona Facebook "Mutual friends"
Come funzionalità aggiuntiva, vorrei aggiungere una funzione di ricerca per consentire agli studenti di cercarne un'altra e visualizzare per primi nei risultati di ricerca le persone con i corsi più comuni con l'utente che ha effettuato l'accesso.
Attualmente utilizzo MySQL, ho intenzione di utilizzare Cassandra per alcune altre funzionalità e utilizzo Memcached per la cache dei risultati e Sphinx per la ricerca.
Grazie.
-
L'applicazione è sviluppata in Python, BTW
E ho dimenticato di dire che l'approccio standard (con un bel query MySQL per calcolare tutto questo con una clausola ORDER BY) è troppo wayyyys lento. Quindi, dato che le letture sono molto più frequenti delle letture, vorrei che la maggior parte della logica avvenga una volta, quando viene aggiunto il rapporto persone < -> corso.
Ho pensato di aggiornare un contatore "corsi comuni" specifico per una tupla (utente, corso) che verrà aumentato per tutti gli utenti di un corso quando l'utente connesso si unisce a un nuovo corso (o diminuisce quando lo lascia) .
Cosa intendi per le persone con i più amici comuni?Vuoi dire di trovare un altro utente che ha tanti degli stessi amici della persona che è attualmente loggata? dovrai anche dire in quale lingua ti stai sviluppando. Sembra roba basata sul web, ma mySQL può essere usato per applicazioni standalone. E abbiamo ancora bisogno di sapere se è PHP/ASP/JS o qualche altra lingua. – thecoshman
Sì, mi hai capito bene. L'applicazione è sviluppata in Python, ma in realtà, mi troverei ad affrontare lo stesso identico problema con qualsiasi altra lingua. Non mi aspetto che le persone mi aiutino con il codice, ma con idee strutturali :) – Pierre
L'implementazione di "amici comuni" sarebbe in qualche modo diversa dall'implementazione di una funzione "più reciproci corsi". Il primo ha bisogno solo di un tipo di entità (persona) e una relazione "è amico di". Quest'ultimo aveva due entità (studente, corso) e relazione tra studente e corso da cui le relazioni tra gli studenti avrebbero bisogno di essere estrapolate. –