문서 메뉴

문서 홈Atlas App Services

충돌 해결

이 페이지의 내용

  • 개요
  • 충돌 해결 규칙
  • 특별 고려 사항
  • 카운터
  • 문자열
  • 사용자 지정 충돌 해결
  • 요약

두 명 이상의 사용자가 동일한 데이터를 독립적으로 변경할 때 충돌이 발생합니다. 이는 장치와 서버 간의 지연 시간 또는 연결 끊김으로 인해 발생할 수 있습니다. 이 경우 Atlas Device Sync는 자동으로 충돌 해결 전략을 사용하여 변경 사항을 병합합니다. 구체적으로 Device Sync는 강력한 최종 일관성을 보장하는 규칙 집합인 운영 변환 을 사용하여 충돌 해결을 처리하므로, 모든 클라이언트의 버전이 결국 동일한 상태로 수렴됩니다. 이는 다른 순서로 변경된 경우에도 마찬가지입니다.

일관적인벅 결과를 얻으려면 규칙을 숙지해야 하지만, 이러한 규칙을 따르면 디바이스가 완전히 오프라인으로 작동하면서도 서로 만날 때 의미 있는 결과를 도출할 수 있다는 장점이 있습니다.

대략적으로 규칙은 다음과 같습니다.

삭제가 항상 우선합니다.
한 쪽에서 객체를 삭제하면 다른 쪽에서 나중에 변경하더라도 해당 객체는 항상 삭제된 상태로 유지됩니다.
마지막 업데이트가 우선합니다.
양쪽에서 동일한 속성을 업데이트하는 경우 Device Sync는 가장 최근 업데이트의 값을 유지합니다.
목록에 삽입된 항목은 시간별로 정렬됩니다.
동일한 위치에 두 항목을 삽입하면 먼저 삽입된 항목이 다른 항목보다 먼저 삽입됩니다. 즉, 양쪽 모두 목록 끝에 항목을 추가하면 삽입 시간 순서대로 두 항목이 모두 포함됩니다.
기본 키는 객체 ID를 지정합니다.
양쪽 모두 동일한 기본 키를 사용하여 동일한 클래스의 객체를 생성하는 경우, 동일한 객체의 인스턴스로 처리됩니다.

예제

충돌 해결 예시

태선씨와 수진씨는 반려견 산책 사업을 위한 데이터 작업을 하고 있습니다. 태선씨는 더 이상 산책 서비스를 이용하지 않는 고객의 반려견인 보리에 대한 데이터를 삭제합니다. 수진씨는 인터넷에 연결되어 있지 않은 사이에 태선씨가 보리의 데이터를 삭제한 사실을 모르고 로컬 오프라인 버전에서 보리의 필수 산책시간 데이터를 편집합니다.

수진씨가 인터넷에 다시 연결되면 변경 사항이 서버로 전송됩니다. 서버가 태선씨의 삭제 작업을 전송합니다. Device Sync의 충돌 해결 규칙에 따라 삭제는 항상 우선하므로 수진씨의 편집 내용이 아닌 태선씨의 삭제 내용이 그대로 유지됩니다. 서버는 수진씨가 편집한 내용을 태선씨의 장치로 보내지 않습니다. 데이터는 태선씨와 수진씨의 장치 전체에서 다시 일치합니다.

계산에 정수를 사용하는 것은 특별한 경우입니다. 대부분의 프로그래밍 언어가 증가 연산(예: v += 1)을 구현하는 방식은 값을 읽고 결과를 증가시킨 다음 다시 저장하는 것입니다. 여러 당사자가 동시에 증분을 수행하는 경우 이 방법은 분명히 작동하지 않습니다. 예를 들어 둘 다 10을 읽고 11로 증분한 후 병합하면 의도한 12가 아닌 11의 결과가 나올 수 있습니다.

이러한 일반적인 경우를 지원하기 위해 값을 증가(또는 감소)시키는지 여부를 표현하는 방법을 제공하여 병합이 올바른 결과에 도달할 수 있도록 충분한 힌트를 제공합니다. 전체 값을 업데이트하거나 더 많은 의미를 전달하는 방식으로 편집하여 충돌 해결을 보다 정확하게 제어할 수 있습니다.

Device Sync는 문자열 값을 전체적으로 해석하며 문자별로 충돌을 병합하지 않습니다. 예를 들어, 문자열 내에 문자나 하위 문자열이 삽입되거나 삭제되면 Device Sync에서 이를 문자열의 전체 값을 대체하는 것으로 처리합니다.

일반적으로 Device Sync의 충돌 해결은 대부분의 용도에 적합하며 사용자 지정할 필요가 없습니다. 즉, 사용자 지정 충돌 해결을 수행하는 일반적인 방법은 속성 유형을 문자열에서 목록으로 변경하는 것입니다. 그러면 각 측에서 목록에 업데이트를 추가하고 원하는 충돌 해결 규칙을 데이터 모델에 직접 적용할 수 있습니다. 이 기술을 사용하여 최대, 최소, 첫 번째 쓰기 우선, 마지막 쓰기 우선 또는 생각할 수 있는 다른 종류의 해결 방법을 구현할 수 있습니다.

  • Device Sync는 충돌 해결 시스템을 구현하여 여러 작성자가 오프라인에서 동시에 글을 쓰면서도 결국 동일한 결과물에 수렴할 수 있도록 합니다.

  • 충돌 해결 시스템은 항상 삭제가 우선, 마지막 업데이트가 우선, 목록의 삽입은 시간순으로, 기본 키는 객체 ID를 지정하는 네 가지 규칙을 따릅니다.

  • 카운터와 문자열은 클라이언트 코드에서 주의해야 할 특수한 경우입니다.

← 기술 세부 정보