다음을 통해 공유


단순 사용자 지정 공급자 디자인을 위한 고려 사항

프로덕션 데이터 저장소와 마찬가지로 동기화에 관련있는 데이터 저장소도 정기적으로 백업해야 합니다. 백업에서 데이터 저장소를 복원해야 하는 경우에는 다음과 같은 두 가지 주요 사항을 고려해야 합니다.

  • 복원 후에 데이터 저장소에 대해 수행한 변경 내용이 다른 복제본으로 전파되지 않을 수 있습니다.

    원본 공급자가 변경 내용을 열거하기 위해 사용하는 앵커를 논리적으로 복원한 다음 변경한 후에 대상 공급자에 의해 전송될수 있으므로 앵커 기반 공급자에서 이러한 문제가 발생할 수 있습니다. 예를 들어 앵커 기반 공급자가 변경 내용을 열거하기 위해 앵커를 저장하는 대상 공급자에게 변경 내용을 보냅니다. 원본 복제본이 이전의 백업으로부터 복원되고 변경됩니다. 동일한 원본 및 대상 공급자 간에 동기화가 다시 수행됩니다. 마지막 동기화 도중 사용된 앵커를 보내 대상 공급자가 시작됩니다. 앵커의 구성 방법에 따라 원본 공급자는 열거되지 않아야 할 복원 이후의 일부 변경 내용을 검색할 수 있습니다.

    원본 복제본의 변경 내용에 버전을 할당하는 데 사용되는 틱 수로 인해 변경 내용이 사용되지 않는 것으로 검색될 수 있으므로 전체 열거 공급자에서도 이러한 문제가 발생할 수 있습니다. 예를 들어 전체 열거 공급자가 대상 공급자에게 변경 내용을 보냅니다. 대상 공급자는 변경 내용을 적용하고 내부 정보를 업데이트합니다. 원본 복제본이 이전의 백업으로부터 복원되고 여기에는 이전의 틱 수가 포함됩니다. 이러한 이전 틱 수를 기준으로 원본 복제본의 변경 사항에 버전이 할당됩니다. 동기화가 다시 수행됩니다. 원본 공급자에서 열거된 일부 변경 내용에는 대상 정보에 포함된 부정확한 틱 수가 있으므로 이 내용은 사용하지 않는 것으로 검색되고 대상 복제본에 적용되지 않습니다.

    이러한 상황에서 좋은 해결 방법은 복제본이 백업에서 복원될 때마다 새로운 복제본 ID를 할당하는 것입니다. 이렇게 하면 복원된 복제본을 백업된 복제본으로부터 모든 데이터를 받은 새로운 복제본으로 취급하고, 백업된 복제본을 동기화 커뮤니티에서 제외된 것으로 취급합니다. 새로운 복제본 ID로 인하여 복원된 복제본에 대한 정보가 동기화 커뮤니티의 다른 복제본에 없으므로 복원된 복제본에 추가된 새 항목이 동기화 중에 올바로 전송됩니다.

    단순 사용자 지정 공급자는 메타데이터를 저장하기 위해 메타데이터 저장소 서비스를 사용하므로 복제본 ID를 변경하려면 다음 단계를 수행합니다.

    1. 백업으로부터의 복원을 위해 디자인된 특수 모드에서 작동할 수 있도록 공급자를 구현합니다. 복원 모드에서 대상 공급자는 메타데이터 변경 내용만 대상 복제본에 적용합니다. 공급자는 로컬 변경 내용을 검색하지 않고 데이터 변경 내용을 복제본에 적용하지 않습니다.

    2. 백업에서 복제본을 복원합니다. 복제본이 백업으로부터 복원되면 공급자의 인스턴스를 두 개 만듭니다. 원본 공급자는 이전 복제본 ID로 복원된 복제본을 나타내고 대상 공급자는 새로운 복제본 ID와 새로운 메타데이터 저장소로 복원된 복제본을 나타냅니다. 대상 공급자를 복원 모드로 설정합니다.

    3. 원본 공급자에서 대상 공급자로 동기화합니다. 이렇게 하면 새 복제본 ID의 새 메타데이터 저장소를 채웁니다.

    4. 이전 메타데이터 저장소를 삭제하고 새 메타데이터 저장소와 새 복제본 ID를 사용하여 복제본을 나타냅니다. 이제 나머지 동기화 커뮤니티와 동기화할 수 있습니다.

  • 이름이 같은 항목이 이전에 만들어지고 동기화된 경우 복원 이후 만들어진 새 항목으로 인해 이름 충돌이 발생할 수 있습니다. 예를 들어 원본 복제본이 파일을 저장합니다. 원본 공급자가 "MyChange.txt" 파일에 대한 만들기 변경 내용을 보냅니다. 원본 복제본이 이전의 백업으로부터 복원되고 여기에는 MyChange.txt가 포함되지 않습니다. 새로운 MyChange.txt 파일이 만들어지고 원본 공급자에 의해 새로운 항목 ID가 할당됩니다. 동기화가 다시 수행됩니다. MyChange.txt에 대한 변경 내용이 전송되면 MyChange.txt 파일 두 개가 이름은 같지만 항목 ID가 다르므로 대상 공급자가 제약 조건 충돌을 검색합니다.

    이러한 상황에서 좋은 해결 방법은 공급자에서 제약 조건 충돌을 처리하는 것입니다. 이 방법을 통해 이름 충돌이 발생할 때 제약 조건 충돌로 보고되고 올바로 해결될 수 있습니다. 자세한 내용은 단순 공급자의 충돌 처리를 참조하십시오.

참고 항목

개념

단순 사용자 지정 공급자 구현