Attualmente abbiamo un'applicazione che non si adatta bene a causa di più aggiornamenti simultanei a una tabella che viene bloccata. Lo stack tecnologico è ASP.NET e il backend è in SQL Server.
Per evitare l'accesso al database, sto prendendo in considerazione l'utilizzo di NoSQL come coda di messaggi in cui un servizio di produzione assegna attività basate sulla logica di business in code di messaggi diverse in Redis. Qualsiasi raccomandazione sarebbe apprezzata.
Architettura proposta
Un utente esegue l'accesso e il server crea un processo utente che legge il MQ e inizia a lavorare sull'attività. Rende solo due aggiornamenti del database: uno registra l'utente che ha effettuato l'accesso e altri crea una nuova voce nella tabella delle attività. Tutti gli aggiornamenti successivi (alcuni) vengono aggiornati in Redis. Alla fine dell'attività, l'oggetto task con tutti i nuovi dettagli viene trasferito su un'altra coda per la persistenza su RDMBS in cui la tabella delle attività viene aggiornata con tutti gli altri dati.