많은 컴퓨터, 모바일 장치 또는 웹 서비스가 데이터를 공유하거나 허브처럼 작동하는 오늘날과 같이 동기화가 더욱 중요 해지고 있습니다. 우리 모두가 알고 있듯이 동기화가 가장 안 좋은 솔루션은 아니며 전혀 동기화하지 않는 것이 가장 좋습니다.여러 엔터티간에 데이터를 동기화하는 가장 영리하고 쉬운 방법은 무엇입니까?
여러 엔터티간에 동기화하기 위해 동기화 솔루션을 구현하는 방법에 대해 아직도 궁금합니다. 변경된 날짜 필드 나 해시를 비교하고 가장 최근의 데이터를 사용하거나 충돌이 발생했을 때 사용자가 원하는 것을 선택하도록하는 것과 같은 다양한 접근 방식이 이미 있습니다. 또 다른 방법은 충돌하는 데이터를 자동으로 병합하려고하는 것입니다. 내 의견으로는 그렇게 똑똑하지 않습니다. 컴퓨터가 사용자의 의도를 추측 할 수 없기 때문입니다.
- 가장 최근의 데이터가 무엇인가
어쨌든, 우리가 동기화를 구현하기 위해 시작하기 전에 답해야 동기화와 관련된 몇 가지 질문은 무엇입니까? 그것을 어떻게 표현하고 싶습니까?
- 충돌이 발생한 경우 어떻게해야합니까? 병합 하시겠습니까? 내가 묻는 메시지를 표시하고 사용자에게 무엇을해야하는지 묻습니다.
- 일치하지 않는 상태 (예 : 모바일 네트워크 연결이 끊어져 연결이 끊어짐)에 들어갔을 때 어떻게해야합니까?
- 일관성없는 상태가되고 싶지 않을 때 무엇을해야합니까?
- 중단 된 현재 동기화를 재개하려면 어떻게합니까?
- 데이터 저장소 (예 : 웹 서비스의 MySQL 데이터베이스, iPhone의 Core Data, 많은 접착제 코드없이 데이터를 병합/동기화하는 방법)는 어떻게 처리합니까?
- 백그라운드에서 실행되는 동기화 중에 발생하는 사용자 편집을 어떻게 처리해야합니까? 즉, UI가 차단되지 않았습니까?
- 사용자가 컴퓨터에서 "Foo"항목을 작성하여 동기화하지 않은 경우, 사용자가 이동 중에 다른 "Foo"항목을 생성하는 등 변경 사항을 전파하는 방법 및 방향; 두 장치 모두 동기화)? 사용자가 고유 ID가 서로 다른 두 개의 "Foo"항목이 있습니까? 사용자는 항목을 하나만 가질 수 있습니까?
- 계층 적 데이터가있을 때 어떻게 동기화해야합니까? 위에서 아래로? 상향식? 모든 항목을 원자 적으로 처리합니까, 아니면 슈퍼 노드 만 보입니까? 지나치게 단순화하는 것과 구현에 너무 많은 시간을 투자하는 것 사이의 절충은 어느 정도입니까?
- ...
다른 많은 질문이 있고 나는 충분히 영감을 할 수 있기를 바랍니다. 동기화는 상당히 일반적인 문제입니다. 일단 좋은, 다목적 동기화 접근법이 발견되면 처음부터 생각하기보다는 구체적인 애플리케이션에 적용하는 것이 더 쉬워야합니다. 이미 동기화를 해결하려고하거나 (또는 성공적으로 해결하는) 많은 응용 프로그램이 있다는 것을 알고 있지만, 이미 상당히 구체적이며 동기 방식에 대한 충분한 대답을 제공하지 못합니다.
I (예 의욕이나 자식 등) 분산 버전 제어 시스템이의 큰 부분을 알아 낸 생각 : 여기
일부 동기화 알고리즘을 소개해주세요. 감사합니다. – Charles0429
예. 모든 알고리즘을 공유하여 편리하게 만드십시오. –
No1이 역순으로 있어야한다고 생각합니다. 클라이언트는 서버가 아닌 동기화 대상을 결정해야합니다. 예 : 내 기기에서 LAST_UPDATED_DATE은 오후 2시입니다. 오프라인 일 때 오후 2시 10 분에 변경 사항이 적용되었지만 동료가 같은 날 오후 2시 30 분에 업데이트하면 저장되었습니다. LAST_UPDATED_DATE에 서버에 오후 2시 30 분에 잃을 것입니다. 서버가 동기화 후보를 결정하는 경우 변경 사항은 @ 2:10 pm입니다. –