할당된 우선 순위 값에 따라 충돌이 해결되는 방법 및 구독이 서버 또는 클라이언트 구독인지를 이해하려면 여러 병합 동기화를 통해 행에 대한 일련의 업데이트를 설명하는 다음 예제를 참조하세요.
다음은 기본 병합 복제 토폴로지의 4개 사이트(게시자 1개, 서버 구독이 있는 구독자 2개, 클라이언트 구독이 있는 구독자 1개)의 초기 우선 순위 값입니다.
| 사이트 | 유형 | 우선 순위 값 |
|---|---|---|
| A | 게시자 | 100.00 |
| b | 서버 구독 | 75.00(할당됨) |
| C | 서버 구독 | 50.00(할당됨) |
| D | 클라이언트 구독 | 0.00(기본값) |
1단계: 초기 값
처음에 사이트 A(게시자)는 다음 병합 동기화 중에 사이트 B, C 및 D에 복제되는 value='Nebraska'를 포함하는 행의 버전 1을 만듭니다. 동기화 후 행의 값은 다음과 같습니다.
| 사이트 | 유형 | 행 값 |
|---|---|---|
| A(게시자) | 100.00 | 네브라스카 |
| B(서버 구독) | 75.00 | 네브라스카 |
| C(서버 구독) | 50.00 | 네브라스카 |
| D(클라이언트 구독) | 0.00 | 네브라스카 |
2단계: 서버 구독을 포함하여 게시자와 구독자가 모두 행을 업데이트합니다.
사이트 A는 행 값을 텍사스로 업데이트하고 사이트 B는 행 값을 뉴저지로 업데이트합니다. 다음 병합 동기화가 발생하면 사이트 A와 B 사이에 충돌이 발생합니다. 사이트 A가 충돌을 이깁니다. 사이트 A의 충돌 승자 값이 사이트 B, C 및 D로 전파됩니다.
| 사이트 | 우선 순위 값 | 행 값 |
|---|---|---|
| A(게시자) | 100.00 | 텍사스 |
| B(서버 구독) | 75.00 | 텍사스 |
| C (서버 구독) | 50.00 | 텍사스 |
| D(클라이언트 구독) | 0.00 | 텍사스 |
3단계: 동일한 행에 대한 여러 변경 내용
사이트 C가 행을 업데이트하고(North Carolina로 변경) 게시자와 동기화한다고 가정합니다. C가 이미 A의 마지막 업데이트를 성공적으로 병합했기 때문에 충돌이 아닙니다(행 값='Texas'가 성공적으로 병합됨). 그런 다음, 사이트 B가 행을 업데이트한다고 가정합니다(아이다호로 변경).
| 사이트 | 우선 순위 값 | 행 값 |
|---|---|---|
| A(게시자) | 100.00 | 노스캐롤라이나 |
| B(서버 구독) | 75.00 | 아이다호 |
| C (서버 구독) | 50.00 | 노스캐롤라이나 |
| D(클라이언트 구독) | 0.00 | 텍사스 |
사이트 B가 게시자와 동기화되면 업데이트 충돌이 발생합니다. B와 C는 모두 서버 구독이고 B의 우선 순위가 C보다 크므로 사이트 B는 충돌을 이깁니다. 다른 두 사이트도 병합되면 B의 값이 다른 구독자에게 전파됩니다.
| 사이트 | 우선 순위 값 | 행 값 |
|---|---|---|
| A(게시자) | 100.00 | 아이다호 |
| B(서버 구독) | 75.00 | 아이다호 |
| C (서버 구독) | 50.00 | 아이다호 |
| D(클라이언트 구독) | 0.00 | 아이다호 |
4단계: 서버 및 클라이언트 구독이 있는 구독자는 모두 행을 업데이트합니다.
사이트 D가 행을 업데이트하고(새 멕시코로 변경) 게시자와 동기화한다고 가정합니다. 그런 다음, 사이트 B가 행을 업데이트한다고 가정합니다(캘리포니아로 변경).
| 사이트 | 우선 순위 값 | 행 값 |
|---|---|---|
| A(게시자) | 100.00 | 뉴멕시코 |
| B(서버 구독) | 75.00 | 캘리포니아 |
| C(서버 구독) | 50.00 | 아이다호 |
| D(클라이언트 구독) | 0.00 | 뉴멕시코 |
사이트 B가 게시자와 동기화되면 업데이트 충돌이 발생합니다. 이전 예제와 달리 D에는 클라이언트 구독이 있으므로 동기화 시 게시자(사이트 A)의 우선 순위 값을 가정합니다. A의 우선 순위가 B보다 크므로 B는 충돌을 잃습니다. 처음에 D에 입력한 값이 우선합니다. (구독자 B가 구독자 D와 동기화되기 전에 A와 동기화되었으면 사이트 B가 충돌에서 이겼을 것입니다.) 충돌에서 승리한 Site D는 Site D에서 업데이트된 행의 버전이 마지막으로 동기화된 이후 변경하거나 다른 변경을 받지 않은 게시자에 의존합니다. 서버 구독이 있는 구독자나 클라이언트 구독이 있는 다른 구독자가 먼저 동기화될 경우, 우선 순위가 가장 높은 규칙 또는 "먼저 게시자에게 들어가는 쪽이 이긴다"는 규칙이 적용됩니다.
모든 사이트가 동기화된 후의 최종 값은 여기에 표시됩니다.
| 사이트 | 우선 순위 값 | 행 값 |
|---|---|---|
| A(게시자) | 100.00 | 뉴멕시코 |
| B(서버 구독) | 75.00 | 뉴멕시코 |
| C(서버 구독) | 50.00 | 뉴멕시코 |
| D(클라이언트 구독) | 0.00 | 뉴멕시코 |
동기화 순서 및 우선 순위 값은 토폴로지에서 동일한 수준에서 서버 및 클라이언트 구독을 혼합할 때 충돌의 결과를 결정합니다. 이 마지막 업데이트 집합은 주의가 실행되어야 하는 이유를 보여 줍니다. 구독자는 세 구독자 중 가장 낮은 우선 순위 값을 가지고 있었지만, 게시자와 가장 먼저 동기화함으로써 게시자의 우선 순위 값인 100.00을 얻어, 충돌에서 이겼습니다. 사이트 C(우선 순위 값이 50.00인 서버 구독)가 사이트 D 대신 뉴멕시코에 진입했다면 사이트 B(우선 순위 값이 75.00인 서버 구독)가 충돌에서 이겼을 것이며 결과는 캘리포니아였을 것입니다.