Come notificare a un repository le modifiche alla persistenza

5

Ho un repository, che al momento legge dal database ogni volta che viene chiamato. Tuttavia, i dati vengono aggiornati solo una volta al giorno e per migliorare le prestazioni, mi piacerebbe che il repository memorizzasse i dati in memoria.

Quando i dati vengono aggiornati da un'altra applicazione (ma dalla stessa soluzione), desidero notificare al repository che dovrebbe rileggere i dati nel database.

Ho considerato di scrivere un flag su un file, che il repository legge ogni volta e rilegge il database se è true.

    
posta Chris Wohlert 15.09.2017 - 12:01
fonte

3 risposte

1

Quali problemi di prestazioni stai riscontrando ora? Ricorda che non dovresti affrontare questo tipo di problemi prima che diventino realmente un bisogno.

Leggi un timestamp da un'altra tabella. Se il timestamp viene aggiornato, lo sono anche i dati.

Non è necessario introdurre un flag in un file quando si ha già accesso a un database.

    
risposta data 19.09.2017 - 09:02
fonte
1

Questo è in realtà lo stesso problema di how can a server inform a client that data has changed .

polling ottimizzato:

Per l'ottimizzazione dell'http sia il client che il server hanno un'ultima data di modifica nota.

quando httpclient richiede un http-url, invia anche l'ultima volta l'mdoification-date dell'URL lato client e il server risponde con "hai già gli ultimi dati" o con i nuovi dati.

supponendo che l'app di repository e l'app di modifica abbiano accesso allo stesso file system (ovvero si trovino sullo stesso computer) l'app di modifica può impostare l'ultimoModifiedDate di un file noto e l'app di repository può controllare l'ultimoModifiedDate del file noto prima di accedere alla memoria in-memory.

Suppongo che la comunicazione tra processi dal server a tutti i client di repository noti sia eccessiva

    
risposta data 19.09.2017 - 17:56
fonte
0

Per le applicazioni web / API REST, puoi utilizzare intestazioni di controllo della cache per specificare quando si desidera rileggere i dati. Ci sono persino dei proxy che puoi mettere davanti al tuo repository che gestirà la cache per te. In pratica, dovresti solo effettuare una richiesta di GET con un'intestazione Cache-Control: no-cache impostata dopo l'aggiornamento dei dati.

    
risposta data 15.09.2017 - 13:08
fonte

Leggi altre domande sui tag