Blocco dei record del database

1

Quello che ho adesso:

  1. Una tabella con molti record.
  2. Circa 200 utenti possono selezionare un record in base ad alcune regole basate sui dati di ciascun record.
  3. C'è un'alta probabilità che 2 o più utenti selezionino lo stesso record.
  4. Un utente aggiorna il record e lo salva di nuovo nel db. Quel record non verrà più selezionato (soft cancellato).
  5. Il blocco ottimistico è stato provato e le prestazioni non sono state accettate dal PO.
  6. La nostra soluzione era una volta che un utente seleziona un record aggiorna un campo "lock" nel record.

I problemi:

  1. Le collisioni si verificano ancora mentre gli utenti continuano a selezionare lo stesso record. Devo impedire a 2 utenti di selezionare lo stesso record.
  2. Abbiamo bisogno di rilasciare il blocco manualmente se l'utente non intraprende alcuna azione per un lungo periodo.

Ho cercato e sembra che Amazon SQS fosse una buona soluzione, ma ha avuto un problema che non riesco a cercare nella coda.

C'è una buona tecnologia per risolvere il mio problema? Devo implementare una coda ricercabile in cui i messaggi sono bloccati quando selezionato e il blocco scade dopo un certo periodo di tempo.

    
posta Songo 07.07.2014 - 13:38
fonte

1 risposta

1

Puoi consentire all'utente di selezionare atomicamente e "softly" bloccare il record aggiungendo un timestamp al record con quando è stato bloccato o quando verrà sbloccato. Impedisci l'accesso ai record bloccati escludendoli in base all'ora di blocco e al campo lock .

Lo sblocco manuale (per un rollback / annullamento) può essere implementato impostando il timestamp per tornare all'epoca.

    
risposta data 07.07.2014 - 13:51
fonte

Leggi altre domande sui tag