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과 동일하게 작동한다.

Last updated