Ho bisogno di calcolare il valore di una riga R su una tabella in base alle righe interrogate su un'altra tabella B. Ho bisogno di farlo in una coda perché il calcolo del valore può essere lento. Un messaggio viene messo in coda ogni volta che si cambia B.
Se i due lavoratori iniziano il calcolo della riga R quasi allo stesso tempo, e i dati sulla tabella B cambiano, il valore finale della riga R potrebbe essere sbagliato. Voglio solo che il valore finale sia corretto, non mi interessa se salto un calcolo.
Per farlo posso:
- Esegui il blocco ottimistico sulla riga R. Prima del calcolo, leggo la versione di R e quando aggiorno faccio
where version = ?
. Assicura che ci sono n calcoli indipendenti n volte se la tabella B cambia n volte (non sicuro al 100% di quello ^^). E faccio nuovamente in coda se una transazione fallisce. - Memorizza un blocco in
etcd
o qualcosa di simile, il vantaggio è quello di evitare calcoli inutili ... E io ri-accodamento se la riga è bloccata - Utilizza una coda FIFO (ma vorrei evitarlo)
- forse qualcos'altro?
Quale pensi sia l'opzione migliore?