연결을 항상 사용할 수 없다고 가정하면 '기본'데이터베이스 서버와 많은 '보조'서버 간의 양방향 동기화, 특히 충돌 해결을 어떻게 관리합니까?
예를 들어, iOS에서 CoreData를 '데이터베이스'로 사용하는 모바일 앱이 있으며 사용자가 인터넷에 연결하지 않고도 컨텐츠를 편집 할 수 있도록하려고합니다. 동시에이 정보는 장치가 연결될 웹 사이트에서 사용할 수 있습니다. 두 DB 서버의 데이터가 충돌 할 경우 어떻게해야합니까?
(CoreData를 DB 서버라고하는데 약간 다른 점을 알고 있습니다.)
이런 종류의 문제를 처리하기위한 일반적인 전략이 있습니까? 다음은 내가 생각할 수있는 옵션입니다.
1. 항상 클라이언트 측 데이터를 우선 순위가 높은 것으로 사용합니다
. 2. 서버 측과 동일합니다.
3. 각 필드의 편집 타임 스탬프를 표시하고 최신 편집을 수행하여 충돌을 해결하십시오.
비록 세 번째 옵션이 치명적인 데이터 손상을위한 공간을 열 것이라고 확신합니다.
나는 CAP 정리가 이것과 관련이 있다는 것을 알고 있지만 결국 일관성을 원하기 때문에 완전히 배제하지는 않습니까?
관련 질문 : 양방향 데이터 동기화를위한 모범 사례 패턴 . 이 질문에 대한 두 번째 대답은 아마 할 수 없을 것입니다.