Ciao a tutti,
sto cercando di studiare la soluzione ottimale a questo problema:
piu' utenti eseguono azioni su una tabella di un DB in comune, SELECT, INSERT, UPDATE, DELETE.
Le operazioni pero' non sono svolte istantaneamente ma dovranno essere eseguite ad un orario prestabilito.
Es.
INSERT ecc. , alle ore 21:12:15
SELECT ecc. , alle ore 21:56:01
DELETE ecc., alle ore 21:20:14
Come da esempio sopra, quando verrà eseguita la select la delete deve essere già stata eseguita. Fondamentale nell'applicazione è quindi seguire l'ordine per DATAORA.
Io ho pensato di risolvere il problema come segue.
Creo un DB che chiamero' operazioni.
Nel DB c'è:
ID progressiovo
SQL query da eseguire
DATAORA in cui andranno eseguite le query
Ogni utente, ad ogni visita, lancia nella propria pagina ASP una select per verificare se ci sono delle operazioni ancora da svolgere.
Se sono presenti delle operazioni con dataora antecedente alla dataora del caricamento della pagina, le operazioni vengono ordinate per DATAORA ed eseguite.
L'unico problema è la gestione della contemporaneità, cioè se mentre un utente sta eseguendo una query sul DB OPERAZIONI, gli altri utenti non DEVONO poterci accedere.
Avevo pensato quindi ad una variabile (aplication, oppure un txt) che BLOCCHI l'accesso al DB ad un utente per volta. Altrimenti puo' succedere che 2 utenti eseguono 2 volte le stesse query in contemporanea sul DB creando un bel casino.
Conoscete un sistema piu' professionale per gestire queste esigenze?

Rispondi quotando