Problema
Ho bisogno di visualizzare dati diversi in base a una serie di lunghi elenchi di regole. Le regole sono diverse per ogni sito web che userebbe il mio sistema.
Ogni secondo, prendo un set di dati sempre più mutevole da un archivio dati e li inserisco in raccolte di giochi e statistiche. Successivamente, ho bisogno di visualizzare i dati dopo aver applicato le regole specifiche del sito.
Fondamentalmente, quando arrivano nuovi dati, unisco questi dati in raccolte di giochi e statistiche, quindi ricaverei i dati di giochi e statistiche personalizzati dalle raccolte di giochi e statistiche originali.
Ho alcune soluzioni:
-
Creazione di raccolte diverse per ogni sito Web e fusione continua dei dati dalle raccolte originali alle raccolte del sito Web e applicazione delle regole per tutti i dati.
- In questo caso, devo assicurarmi che i dati siano sincronizzati correttamente tra le nuove raccolte ed è più complesso da usare.
-
Ricreare raccolte personalizzate per ciascun sito Web su ciascun aggiornamento di dati applicando le regole. Questo rimuoverà la fusione e creerà nuovamente la raccolta .
- Ciò può causare problemi di race condition quando si ricreano dati e si verificano problemi di indisponibilità del server o meccanismi di retry.
-
Utilizza le raccolte originali e applica le regole su ogni richiesta web e memorizza i dati per 5 secondi ( è necessario aggiornarli rapidamente ).
- Ciò rallenterebbe il webserver e creerebbe un codice di invalidazione della cache problematico.
Ogni soluzione ha i suoi compromessi.
Quindi, quale soluzione pensi sia la migliore? Quali altre soluzioni puoi suggerire?
Collezioni
Giochi
- Data di inizio
- Concorrenti: ID, Nome
- Tornei: ID, Nome
Raccolta statistiche
( appartiene a un gioco )
- Stat: StatTypeId, GameID, StatRatio
Raccolta di regole
- Regole della concorrenza: attiva / disattiva alcuni concorrenti per un sito web
- Regole dei tornei: attiva / disattiva alcuni tornei per un sito web
- Regole statistiche: modifica delle proporzioni statistiche per un sito web
Ci sono molti altri dettagli sulle regole ovviamente, come l'ordine di priorità: le regole dei tornei sovrascrivono le regole della concorrenza che sovrascrivono la regola delle statistiche ecc. Le ho mantenute qui per brevità.