2013-08-19 6 views
0

충돌 해결 방법이 명확하지 않은 핵심 데이터 동기화 솔루션을 채택하는 것에 대해 모호합니다. 불행히도 iCloud 및 Simperium과 같은 솔루션은 '충돌이 자동으로 처리됩니다.'라고 말하면서 그대로 남습니다. 종종 이것은 충분한 정보가 아닙니다.Simperium은 충돌을 어떻게 해결합니까?

구체적인 예를 들면, 엔티티 A와 B를 포함하고 그 사이에 일대일 관계가있는 앱이 있다고 가정 해 보겠습니다. 그 관계가 선택 사항이 아니라고 상상해보십시오.

저장소가 완전히 동기화되고 두 개의 관련 객체 A_0 및 B_0부터 device1이 B_1이라는 새 B 객체를 만들고 A_0을 B_1에 연결합니다. B_0을 삭제합니다.

동시에 장치 2도 B_0을 삭제하지만 B_2라는 새 개체를 만들고이를 A_0에 연결합니다.

이 상황이 어떻게 해결됩니까? 아마도 A_0은 타임 스탬프 순서에 따라 B_1 또는 B_2와 관련 될 것입니다.하지만 고아 개체는 어떻게 될까요? 삭제 되었습니까? 하나의 장치에서 전체 트랜잭션을 롤백합니까?

개체는 관계가 필요하기 때문에 격리되어 존재할 수 없습니다.

답변

0

당분간 관계는 선택 사항으로 표시되어야한다고 말하면서 유감입니다. 그 티켓은 here입니다. lib 디렉토리 (0.6.2)의 최신 버전으로

, 어떤 일이 일어날 것은 :

  • 변경은 ""처음에이 먼저 처리 ""방식으로 처리됩니다. 즉, A_0은 처음 변경 한 내용에 따라 B_1 또는 B_2와 관련이 있습니다.
  • 중복 된 변경 사항은 무시됩니다 (두 장치가 B_0을 삭제하면 괜찮을 것입니다).
  • Simperium은 (현재) 필수적인 관계를 지원하지 않으므로 고아 오브젝트로 끝납니다.

희망 하시겠습니까?

관련 문제