Data Conflict Rule (DCR)
MAP Rule 에서 소개한 Data Conflict Rule의 시나리오들을 정리한다. 옵션을 설정하는 방법은 해당 문서를 참고하면 좋다.
DCR의 제약사항
Data Conflict를 확인하려면 Row를 특정할 수 있어야 한다. ProSync에서는 이에 대한 기준을 Primary key
로 두고 있다. Primary key
로 인해 충돌이 발생할 경우, Source Database, Target Database, Column Min(Max) 기준으로 데이터 Conflict에 대한 처리를 결정한다.
Scenario
Resolve By Source
1. Insert
Insert
문에서 충돌이 발생한다는 말은, 이미 데이터가 존재한다는 의미이다. 따라서 존재하는 데이터를 모두 Source Database 기준으로 맞춰주어야 한다.
Insert
문을 Update
로 변경하여 Conflict 을 해소해준다.
2. Update
Update
에서의 데이터 충돌은 원하는 Row가 없다는 의미이다.
Update
문을 Insert
로 변경하여 Conflict 을 해소해준다.
3. Delete
Delete
에서의 데이터 충돌 또한 마찬가지로 Row가 없다는 의미가 된다.
Delete
에 대한 추가적인 처리가 없이 넘어가면 된다.
Resolve By Target
1. Insert
Insert
문의 충돌은 이미 데이터가 있을 때 발생하는데, Target Database 기준으로 맞춰야 하므로, 아무 동작 하지 않고 Skip처리한다.
2. Update
Row가 없는 상황이 맞다고 판단하기 때문에 아무 동작 하지 않고 Skip처리한다.
3. Delete
Row가 없는 상황이 맞다고 판단하기 때문에 아무 동작 하지 않고 Skip 처리한다.
Resolve By Min/Max
위 두 경우에 대한 조합이라고 생각하면 편하다. 어떤 경우엔 Source 기준으로 맞춰져야 하고, 어떤 경우엔 Target 기준으로 맞춰져야 하는 시나리오이다.
기준이 되는 것이 Database 단위가 아닌 Column 내 데이터의 대소 비교로 이루어진다는 점이 다르고, 이에 따라 충돌 처리 동작은 위의 Source / Target과 동일하게 작동한다.
주의
Data Conflict Rule(DCR) 관련
Data Conflict Rule (DCR) 옵션을 사용할 경우 USE_PK_FOR_WHERE
옵션은 무시된다. 동기화의 논리 구조상 Conflict
를 찾는 것이 우선이기 때문에 ProSync에선 두 옵션 간에 이와 같은 우선순위를 둔다.
Last updated