Aggiornamento di particolari proprietà di oggetti EF ogni X quantità di giorni in MVC

2

Sto costruendo un MVC ASP.NET Sito web di tipo IMDb che presenta varie informazioni sui film agli utenti, basandosi su API di terze parti per (inizialmente) recuperare informazioni sui film.

Gli ID che rappresentano ciascun film sul sito web sono identici a quelli di IMDb (ID tt1234567 punti per lo stesso film su entrambi i siti Web).

Il modo in cui le informazioni sul film vengono recuperate (e successivamente archiviate sul server SQL) è la seguente:

  • L'utente richiede un filmato con id tt1234567
  • MVC verifica se il film con id tt1234567 esiste nel database.
    • In caso contrario, richiede API esterne per recuperare informazioni sui film e archiviarli nel database.
    • Se sì, recupera le informazioni direttamente dal database.

Funziona bene e sono al punto in cui sto implementando il caching. Ci sono alcune colonne particolari per ogni riga nella tabella Movie che cambiano ogni determinato numero di giorni (ad esempio la valutazione generale e il numero di voti per quel film in IMDb). Pertanto, ho bisogno di implementare una funzione in cui le colonne pertinenti della riga vengono aggiornate dopo un certo periodo di tempo (ad esempio ogni 10 giorni).

Quale sarebbe l'approccio corretto per fare questo? Devo implementare un'attività pianificata che viene eseguita ogni 10 giorni e aggiorna le colonne necessarie nel DB, o dovrei in qualche modo aggiungere il caching nel mix?

    
posta globetrotter 16.01.2015 - 00:55
fonte

3 risposte

1

Penso che il consiglio di Ewan sia ok. 10 giorni è un lungo periodo di tempo, specialmente quando il tuo database cresce fino a decine di migliaia o più di film. Cose da considerare quando si implementa la soluzione:

  • se la tua app web viene utilizzata meno in un determinato periodo della giornata (in base ai log), prova a utilizzare tale periodo per operazioni asincrone come questa (questo è particolarmente utile quando gli inserimenti o gli aggiornamenti sono alti e le tabelle sono bloccate per un periodo più lungo)
  • controllo sincrono poiché è anche una soluzione, ma prestare attenzione al ritardo supplementare per il client (tempo di recupero dei dati da IMDB, analisi, aggiornamento in db). Basato sulla discussione di qui , non dovrebbe essere un problema, anche se

Preferirei l'opzione asincrona, dal momento che si dispone di un controllo migliore sulla frequenza con cui si esegue una query su IMDB (mi aspetto di avere alcune limitazioni per evitare l'abuso). Teoricamente, se qualcuno o un bot sta eseguendo la scansione del tuo sito e utilizzi l'opzione di sincronizzazione, potresti eseguire molti recuperi da IMDB.

    
risposta data 11.12.2015 - 22:17
fonte
0

se si passa alla serie di attività, scrivere l'attività per l'esecuzione ogni 10 minuti, selezionare i filmati non aggiornati e aggiornarli. altrimenti finirai con un compito enorme ogni dieci giorni.

Ma suggerirei di eseguire questo controllo solo quando viene recuperato un film dal db. Se non è stato trovato o non è aggiornato, vai a imdb e aggiorna

    
risposta data 16.05.2015 - 08:43
fonte
-1

Sì, un'attività pianificata potrebbe essere un modo per recuperare e aggiornare i dati.

Dovresti prendere in considerazione la possibilità di configurare un servizio windows, quartz.net o hangfire.io sono tutte alternative per creare l'esecuzione del lavoro basato su pianificazione.

    
risposta data 16.01.2015 - 01:46
fonte

Leggi altre domande sui tag