Strategie per gestire più client in grado di modificare contemporaneamente gli stessi dati

6

Come posso gestire situazioni in cui più client possono modificare lo stesso oggetto contemporaneamente?

Ad esempio, ho un'app Web con la console di amministrazione, che consente di modificare i dati del profilo. Diversi utenti vogliono aprire lo stesso profilo e modificarlo.

Se lascio che le cose vadano come sono, otterrò la situazione "l'ultimo che salva le vittorie" e tutti gli altri utenti perderanno le loro modifiche.

Bloccare l'oggetto per la modifica sul client, quando qualcuno inserisce la pagina di modifica, sembra relativamente facile e nel complesso accettabile per oggetti semplici. Tuttavia, per oggetti complessi, quando utenti diversi potrebbero voler modificare parti diverse dell'oggetto, la fusione sarebbe molto meglio. Ho letto un articolo su dati replicati senza conflitti Tipi e sembra essere piuttosto complesso e non copre situazioni di conflitto.

Esistono altri modi per unire gli oggetti? O forse ci sono strategie totalmente diverse per affrontare la situazione?

    
posta Yury Svechinsky 15.05.2014 - 10:56
fonte

1 risposta

3

C'è una tecnica che può essere impiegata per gestire questo. Ci sono alcune ipotesi prima. Tu (o il tuo team) devi avere il controllo di tutto il software che può aggiornare i dati. Sulla base di questo, ecco cosa puoi fare:

  1. Non bloccare i dati al download originale e mentre l'utente lo sta modificando. La ragione di ciò è dovuta al fatto che i blocchi in generale sono molto dannosi per le prestazioni, ad esempio cosa accade se un utente decide di fare una pausa mentre è in attesa un blocco esclusivo?

  2. Quando l'utente tenta di salvare i dati, acquisisce un blocco esclusivo e scarica nuovamente i dati. Confronta i dati originali scaricati con i dati appena scaricati. Se i dati includono un timestamp per l'ultimo aggiornamento, quindi basta confrontare i timestamp. Potresti considerare di aggiungere una colonna timestamp dell'ultimo aggiornamento per questo scopo. Se i dati sono gli stessi, il che indica che non sono stati effettuati aggiornamenti intermedi, quindi aggiornare il database e rilasciare il blocco. Se i dati non corrispondono, rilasciare il blocco e mostrare i dati aggiornati e richiedere all'utente di inserire nuovamente i suoi aggiornamenti. Puoi salvare i suoi aggiornamenti originali in un'altra scheda o finestra per semplificare la procedura. Un'altra possibilità è di fare unire il software ed evidenziare eventuali conflitti.

risposta data 19.05.2014 - 23:52
fonte

Leggi altre domande sui tag