Esempio di risoluzione dei conflitti di merge in base al tipo di sottoscrizione e alle priorità assegnate
L'esempio seguente, in cui è descritta una serie di aggiornamenti a una riga tramite diverse sincronizzazioni di tipo merge, consente di comprendere la modalità di risoluzione dei conflitti in base ai valori di priorità assegnati e al tipo di sottoscrizione, ovvero server o client.
Nella tabella seguente sono riportati i valori di priorità iniziali per quattro siti in una topologia di replica di tipo merge di base, ovvero un server di pubblicazione, due Sottoscrittori con sottoscrizioni server e un Sottoscrittore con sottoscrizione client.
Sito | Tipo | Valore di priorità |
---|---|---|
A |
Publisher |
100,00 |
B |
Server Subscription |
75,00 (assegnato) |
C |
Server Subscription |
50,00 (assegnato) |
D |
Client Subscription |
0,00 (predefinito) |
Fase 1: valori iniziali
Il sito A (server di pubblicazione) crea inizialmente la versione uno della riga contenente il valore "Nebraska", che viene replicata nei siti B, C e D durante la successiva sincronizzazione di tipo merge. I valori di riga dopo la sincronizzazione sono i seguenti.
Sito | Valore di priorità | Valore di riga |
---|---|---|
A (server di pubblicazione) |
100,00 |
Nebraska |
B (sottoscrizione server) |
75,00 |
Nebraska |
C (sottoscrizione server) |
50,00 |
Nebraska |
D (sottoscrizione client) |
0,00 |
Nebraska |
Fase 2: aggiornamento della riga sia nel server di pubblicazione che nel Sottoscrittore con sottoscrizione server
Il sito A aggiorna la riga con il valore Texas, mentre il sito B aggiorna la riga con il valore New Jersey. Alla successiva sincronizzazione di tipo merge, si verifica un conflitto tra i siti A e B, in cui prevale il sito A. Il valore che nel conflitto risulta prioritario viene distribuito dal sito A ai siti B, C e D.
Sito | Valore di priorità | Valore di riga |
---|---|---|
A (server di pubblicazione) |
100,00 |
Texas |
B (sottoscrizione server) |
75,00 |
Texas |
C (sottoscrizione server) |
50,00 |
Texas |
D (sottoscrizione client) |
0,00 |
Texas |
Fase 3: più modifiche alla stessa riga
Si supponga che il sito C aggiorni la riga con il valore North Carolina ed esegua la sincronizzazione con il server di pubblicazione. In questo caso non si verifica alcun conflitto, poiché C ha già completato correttamente il processo di merge dell'ultimo aggiornamento da A con il valore di riga "Texas". Si supponga quindi che il sito B aggiorni la riga con il valore Idaho.
Sito | Valore di priorità | Valore di riga |
---|---|---|
A (server di pubblicazione) |
100,00 |
North Carolina |
B (sottoscrizione server) |
75,00 |
Idaho |
C (sottoscrizione server) |
50,00 |
North Carolina |
D (sottoscrizione client) |
0,00 |
Texas |
Quando il sito B viene sincronizzato con il server di pubblicazione, si verifica un conflitto di aggiornamento. Poiché il sito B e il sito C sono siti di sottoscrizione server e la priorità di B è maggiore della priorità di C, il sito B prevale. Dopo il merge degli altri due siti, il valore di B viene propagato agli altri Sottoscrittori.
Sito | Valore di priorità | Valore di riga |
---|---|---|
A (server di pubblicazione) |
100,00 |
Idaho |
B (sottoscrizione server) |
75,00 |
Idaho |
C (sottoscrizione server) |
50,00 |
Idaho |
D (sottoscrizione client) |
0,00 |
Idaho |
Fase 4: aggiornamento della riga nei Sottoscrittori con sottoscrizioni sia server che client
Si supponga che il sito D aggiorni la riga con il valore New Mexico ed esegua la sincronizzazione con il server di pubblicazione. Si supponga quindi che il sito B aggiorni la riga con il valore California.
Sito | Valore di priorità | Valore di riga |
---|---|---|
A (server di pubblicazione) |
100,00 |
New Mexico |
B (sottoscrizione server) |
75,00 |
California |
C (sottoscrizione server) |
50,00 |
Idaho |
D (sottoscrizione client) |
0,00 |
New Mexico |
Quando il sito B viene sincronizzato con il server di pubblicazione, si verifica un conflitto di aggiornamento. A differenza del caso precedente, D dispone di una sottoscrizione client e durante la sincronizzazione assume pertanto il valore di priorità del server di pubblicazione (sito A). Poiché il valore di priorità di A è maggiore del valore di priorità di B, nel conflitto il valore immesso inizialmente in D prevale rispetto a B. Se nel Sottoscrittore B fosse stata eseguita la sincronizzazione con A prima del Sottoscrittore D, avrebbe prevalso il sito B. La prevalenza del sito D nel conflitto si basa sul fatto che il server di pubblicazione non ha eseguito né ricevuto modifiche dall'ultima sincronizzazione della versione della riga aggiornata nel sito D. Se viene sincronizzato per primo qualsiasi Sottoscrittore con sottoscrizione server o qualsiasi altro Sottoscrittore con sottoscrizione client, viene applicata la regola in base alla quale prevale la priorità più elevata o il primo inserimento nel server di pubblicazione.
Nella tabella seguente sono riportati i valori finali dopo la sincronizzazione di tutti i siti.
Sito | Valore di priorità | Valore di riga |
---|---|---|
A (server di pubblicazione) |
100,00 |
New Mexico |
B (sottoscrizione server) |
75,00 |
New Mexico |
C (sottoscrizione server) |
50,00 |
New Mexico |
D (sottoscrizione client) |
0,00 |
New Mexico |
L'ordine di sincronizzazione e il valore di priorità determinano l'esito dei conflitti quando la topologia include sottoscrizioni server e client allo stesso livello. L'ultimo set di aggiornamenti evidenzia i motivi per cui in questi casi è necessario procedere con cautela. Il Sottoscrittore prevale anche se dotato del valore di priorità più basso tra i tre Sottoscrittori poiché ha eseguito per primo la sincronizzazione con il server di pubblicazione, di cui ha assunto la priorità pari a 100,00. Se il valore New Mexico fosse stato immesso dal sito C, con sottoscrizione server con valore di priorità 50,00, anziché dal sito D, avrebbe prevalso il sito B, dotato di sottoscrizione server con valore di priorità 75,00, e il risultato sarebbe stato California.
Vedere anche
Concetti
Modalità di rilevamento e risoluzione dei conflitti da parte della replica di tipo merge