Qual è il modo più efficiente per archiviare le partite di ciascun utente in un'app / sito web di matchmaking? Data la complessità di questo tipo di algoritmi, è ragionevole calcolare sempre le corrispondenze, al volo, quando un utente effettua l'accesso o preme il pulsante di ricerca e successivamente ignora i risultati dopo che se ne sono andati?
Se ciò non va bene per un'applicazione ragionevolmente grande, quindi memorizzare tutte le partite per ciascun utente può essere una sfida anche se ci sono più di pochi milioni di utenti registrati.
Limita le potenziali corrispondenze, come max. 100 partite per utente o ricerca solo tra utenti che vivono in questa città, è la strada da percorrere o ci sono modi migliori per ottenere risultati di corrispondenza completi e memorizzarli per ogni utente?
Inoltre, come si potrebbe progettare una struttura di database per memorizzare i risultati? Un documento NoSQL che memorizza le corrispondenze di chiunque nel proprio documento o solo una tabella relazionale che memorizza la percentuale di corrispondenza di due utenti in un singolo record e la ripete per tutte le corrispondenze?
Aggiornamento
Come funziona l'algoritmo matchmaking: se diciamo che A, B e C sono tutti utenti, calcola innanzitutto quante risposte e preferenze di B soddisfano A, quindi calcola quanto le risposte di A soddisfino B, quindi ottiene la media geometrica di questi due numeri, che vengono quindi contrassegnati come la percentuale di corrispondenza effettiva tra A e B. Quindi ripeterebbe questo per A e C e poi B e C.