구독 유형 및 지정된 우선 순위에 따른 병합 충돌 해결 예제
할당된 우선 순위 값과 구독이 서버 구독인지, 아니면 클라이언트 구독인지 여부에 따라 충돌을 해결하는 방법을 이해하려면 여러 병합 동기화에서의 행 업데이트를 설명하는 다음 예를 참조하십시오.
다음은 단순 병합 복제 토폴로지에서 사용하는 4개의 사이트(게시자 하나, 구독 유형이 서버 구독인 구독자 둘 그리고 구독 유형이 클라이언트 구독인 구독자 하나)에 대한 초기 우선 순위 값입니다.
사이트 |
유형 |
우선 순위 값 |
---|---|---|
A |
Publisher |
100.00 |
B |
Server Subscription |
75,00(할당된 값) |
C |
Server Subscription |
50.00(할당된 값) |
D |
Client Subscription |
0.00(기본값) |
단계 1: 초기 값
처음에 사이트 A(게시자)는 값에 'Nebraska'가 포함된 행 버전 하나를 만들고 이는 다음 병합 동기화 중 사이트 B, 사이트 C 및 사이트 D로 복제됩니다. 동기화 후 행 값은 다음과 같습니다.
사이트 |
우선 순위 값 |
행 값 |
---|---|---|
A(게시자) |
100.00 |
Nebraska |
B(서버 구독) |
75.00 |
Nebraska |
C(서버 구독) |
50.00 |
Nebraska |
D(클라이언트 구독) |
0.00 |
Nebraska |
단계 2: 구독 유형이 서버 구독인 게시자와 구독자 모두 행 업데이트
사이트 A는 행 값을 Texas로 업데이트하고 사이트 B는 행 값을 New Jersey로 업데이트합니다. 다음 병합 동기화가 발생할 때 사이트 A와 B 간에 충돌이 있습니다. 사이트 A가 충돌 시 우선 적용됩니다. 사이트 A의 충돌 시 우선 적용된 값은 사이트 B, 사이트 C 및 사이트 D로 전파됩니다.
사이트 |
우선 순위 값 |
행 값 |
---|---|---|
A(게시자) |
100.00 |
Texas |
B(서버 구독) |
75.00 |
Texas |
C(서버 구독) |
50.00 |
Texas |
D(클라이언트 구독) |
0.00 |
Texas |
단계 3: 같은 행의 여러 변경 내용
사이트 C가 행을 업데이트하고(North Carolina로 변경) 게시자와 동기화한다고 가정합니다. 사이트 C는 성공적으로 병합된 행 값 'Texas'를 가진 사이트 A에서 이미 성공적으로 병합되었기 때문에 충돌이 발생하지 않습니다. 그 다음 사이트 B가 행을 업데이트한다고 가정합니다(Idaho로 변경).
사이트 |
우선 순위 값 |
행 값 |
---|---|---|
A(게시자) |
100.00 |
North Carolina |
B(서버 구독) |
75.00 |
Idaho |
C(서버 구독) |
50.00 |
North Carolina |
D(클라이언트 구독) |
0.00 |
Texas |
사이트 B가 게시자와 동기화되면 업데이트 충돌이 있게 됩니다. 사이트 B와 사이트 C의 구독 유형이 모두 서버 구독이며 사이트 B의 우선 순위가 사이트 C의 우선 순위보다 높기 때문에 사이트 B가 충돌 시 우선 적용됩니다. 다른 두 사이트가 병합된 후에도 사이트 B의 값이 다른 구독자로 전파됩니다.
사이트 |
우선 순위 값 |
행 값 |
---|---|---|
A(게시자) |
100.00 |
Idaho |
B(서버 구독) |
75.00 |
Idaho |
C(서버 구독) |
50.00 |
Idaho |
D(클라이언트 구독) |
0.00 |
Idaho |
단계 4: 구독 유형이 서버 구독인 구독자와 구독 유형이 클라이언트 구독인 구독자 모두 행 업데이트
사이트 D가 행을 업데이트하고(New Mexico로 변경) 게시자와 동기화한다고 가정합니다. 그 다음 사이트 B가 행을 업데이트한다고 가정합니다(California로 변경).
사이트 |
우선 순위 값 |
행 값 |
---|---|---|
A(게시자) |
100.00 |
New Mexico |
B(서버 구독) |
75.00 |
California |
C(서버 구독) |
50.00 |
Idaho |
D(클라이언트 구독) |
0.00 |
New Mexico |
사이트 B가 게시자와 동기화되면 업데이트 충돌이 있게 됩니다. 앞의 예제와는 다르게 사이트 D의 구독 유형이 클라이언트 구독이므로 동기화 시 게시자(사이트 A)의 우선 순위 값을 가정합니다. 사이트 A의 우선 순위가 사이트 B의 우선 순위보다 높기 때문에 사이트 B는 충돌 시 적용되지 않으며 처음 사이트 D에 입력한 값이 우선 적용됩니다. 구독자 D를 사이트 A와 동기화하기 전 구독자 B를 사이트 A와 동기화했다면 사이트 B가 충돌 시 우선 적용됩니다. 충돌 시 우선 적용되는 사이트 D는 사이트 D에서 업데이트된 행 버전이 마지막으로 동기화된 이후 변경이 이루어지지 않았거나 다른 변경을 받지 않는 게시자에 의존합니다. 구독 유형이 서버 구독인 구독자나 구독 유형이 클라이언트 구독인 다른 구독자가 우선 동기화되면 가장 높은 우선 순위 규칙 또는 "게시자의 최초 변경 내용"이 적용됩니다.
모든 사이트가 동기화된 후 결과 값은 다음과 같습니다.
사이트 |
우선 순위 값 |
행 값 |
---|---|---|
A(게시자) |
100.00 |
New Mexico |
B(서버 구독) |
75.00 |
New Mexico |
C(서버 구독) |
50.00 |
New Mexico |
D(클라이언트 구독) |
0.00 |
New Mexico |
토폴로지의 같은 수준에서 서버 구독과 클라이언트 구독이 함께 있는 경우 동기화 순서 및 우선 순위 값이 충돌 결과를 결정합니다. 이 마지막 업데이트 예제는 주의가 필요한 이유를 보여 줍니다. 구독자가 세 개의 구독자 중 가장 낮은 우선 순위를 가졌지만 게시자와 가장 먼저 동기화되었기 때문에(우선 순위 값이 100.00인 게시자로 가정) 충돌 시 우선 적용되었습니다. 사이트 C(우선 순위 값이 50.00인 서버 구독)가 사이트 D 대신 New Mexico를 입력했다면 사이트 B(우선 순위 값이 75.00인 서버 구독)가 충돌 시 우선 적용되고 결과는 California가 됩니다.