그래서 요약하면 연결이 끊어진 동기화와 관련이 있다고 생각합니다.
초기 동기화하여 데이터와 그와 관련된 정보 (행 버전, 파일 체크섬 등)를 검색 : 그래서 여기
내가 어떻게해야한다고 생각하는 것이다. 이 정보를 저장하고 다음번 성공적으로 동기화 될 때까지 깨끗하게 유지하는 것이 중요합니다. 이 데이터의 사본을 변경해야합니다.
변경 내용 추적 데이터베이스 행을 처리하는 경우 기본적으로 삽입, 업데이트 및 삭제 작업을 추적해야합니다. xml과 같은 텍스트 파일을 다루는 경우에는 약간 더 복잡합니다. 여러 사용자가 동시에이 파일을 편집하는 경우 diff 도구가 있어야하므로 충돌이 전체 파일 대신보다 세분화 된 수준에서 감지 될 수 있습니다.
충돌 확인 데이터베이스 행만 처리하는 경우에도 충돌을 쉽게 감지 할 수 있습니다. 행이 업데이트 될 때마다 증가하는 다른 열을 가질 수 있습니다 (mssql에는 mysql이 내장되어 있지 않은 것으로 생각됩니다). 따라서 복사본의 복사본 수가 서버의 복사본 수와 다른 경우 충돌이 발생합니다. 파일이나 문자열의 경우 체크섬이 작업을 수행합니다. 수정 된 날짜를 사용할 수도 있지만 실수를 방지하기 위해 매우 정확하고 정확한 측정을해야합니다.예 : 파일을 검색하고 검색 한 즉시 저장한다고 말할 수 있습니다. 시간 차이가 1 밀리 초라고합니다. 그런 다음 파일을 변경 한 다음 저장하려고합니다. 기록 된 최종 수정 시간이 10 밀리 초까지만 정확하다면, 검색 한 파일이 저장 한 날짜와 동일한 수정 된 날짜를 가지게되므로 프로그램이 충돌을 생각하지 않고 변경 사항을 덮어 쓸 가능성이 있습니다. 그래서 나는 일반적으로이 방법을 안전한면에 사용하지 않습니다. 반면에 사소한 수정 후 체크섬/해시 충돌 가능성은 거의 없습니다.
충돌 해결 이제는 까다로운 부분입니다. 자동 프로세스 인 경우 상황을 평가하고 변경 사항을 덮어 쓰거나 변경 사항을 잃거나 서버에서 데이터를 다시 검색하여 변경 사항을 다시 시도할지 결정해야합니다. 운 좋게도 인간과의 상호 작용이있는 것 같습니다. 하지만 여전히 코드를 작성하는 데는 많은 어려움이 있습니다. 데이터베이스 행을 처리하는 경우 각 개별 열을 검사하고이를 서버의 데이터와 비교하여 사용자에게 제시 할 수 있습니다. 이 아이디어는 사용자에게 압도적이지 않도록 매우 세부적인 방식으로 사용자에게 충돌을 제시하는 것입니다. 대부분의 갈등은 여러 장소에서 매우 작은 차이가 있으므로 한 번에 한 가지 작은 차이 만 사용자에게 제시합니다. 텍스트 파일의 경우 거의 동일하지만 100 배 이상 복잡합니다. 따라서 기본적으로 diff 도구를 사용하거나 작성해야합니다 (텍스트 비교는 완전히 다른 주제이며 여기에서 언급하기에는 너무 광범위합니다).이 도구를 사용하면 파일의 작은 변경 사항 및 해당 변경 사항이 데이터베이스 : 텍스트가 삽입, 삭제 또는 편집 된 곳입니다. 그런 다음 동일한 방식으로 사용자에게 제공하십시오. 그래서 기본적으로 작은 충돌마다 사용자는 변경 사항을 버리거나 서버의 변경 사항을 덮어 쓰거나 서버에 보내기 전에 수동 편집을 수행할지 여부를 선택해야합니다.
그렇다면 제대로 된 작업을 수행 한 경우 충돌이있는 경우 사용자에게 충돌 목록이 제공되어야합니다. 이러한 충돌은 사용자가 신속하게 결정할만큼 세밀해야합니다. 예를 들어 갈등은 다음과 같은 철자 변경 사항입니다. 사용자가 전체 단락을 제공하고 변경 사항이 있음을 알리고 사용자가 수행 할 작업을 결정해야한다는 점에서 사용자가 철자 맞춤법에서 선택하는 것이 더 쉬울 것입니다 , 사용자는이 작은 오타를 사냥해야합니다.
기타 고려 사항 : 데이터 유효성 검사 - 데이터가 변경되었을 수 있으므로 충돌을 해결 한 후에 유효성 검사를 수행해야한다는 것을 명심하십시오. 텍스트 비교 - 말했듯이, 이것은 큰 문제입니다. 그래서 구글! Disconnected Synchronization - 거기에 몇 가지 기사가 있다고 생각합니다.
출처 : https://softwareengineering.stackexchange.com/questions/94634/synchronization-web-service-methodologies-or-papers
의견을 보내 주셔서 감사합니다. 시간 왜곡과 관련하여 제기 한 문제가 중요하다고 생각합니다. 초기 희망은 서버의 NTP와 iPhone/Touch의 자체 시간 동기화 서비스/이동 통신사/컴퓨터 시간 왜곡 문제가 완화된다는 것입니다. 이 가정이 너무 위험한가요? – hyuan
그것은 많은면에서 취약합니다. 예를 들어, 시계가 역방향으로 재설정되면 누락 된 업데이트가 발생할 수 있으며 누락 된 업데이트로 인해 편집 충돌이 감지되지 않을 수 있습니다. 다중 마스터 복제는 중요한 작업입니다. –
친절한 조언을 가져 주셔서 감사합니다. 바라기를 두어 주 안에, 당신은 당신의 지혜의 열매를 볼 수있을 것입니다. 문제의 사이트는 이미 가동 중이지만 (www.ayenotes.com) iPhone 앱은 그렇지 않습니다. – hyuan