표준 공급자에 대한 메타데이터 요구 사항
Sync Framework에는 동기화할 각 복제본과 각 항목에 대한 특정 메타데이터 집합이 필요합니다.
각 복제본에 필요한 메타데이터
각 복제본은 다음 표에 나와 있는 메타데이터 집합을 저장해야 합니다.
메타데이터 요소 | 설명 |
---|---|
복제본 ID |
동기화 커뮤니티에서 복제본의 고유 식별자입니다. 복제본 ID는 유연한 ID이므로 커뮤니티의 스키마에 따라 정의할 수 있지만 일반적으로는 16바이트 GUID를 사용하는 것이 좋습니다. Sync Framework 메서드에 전달된 복제본 ID의 형식은 공급자에서 지정하는 형식과 일치해야 합니다. 관리 코드 SyncIdFormatGroup 클래스의 ReplicaIdFormat 속성에 형식이 지정됩니다. ID는 SyncId 클래스로 나타냅니다. 비관리 코드 ID_PARAMETERS 구조 구조체의 replicaId 필드에 형식이 지정됩니다. ID는 SYNC_ID 구조체로 나타냅니다. |
현재 틱 수 |
복제본의 현재 틱 수입니다. 이는 항목별 정보의 마지막 로컬 버전에서 유추할 수 있는 개념적인 숫자이거나, 복제본에서 사용 가능한 단순하게 증가하는 기타 값입니다. 예를 들어 복제본에서 현재 클록 시간이 다시 설정되지 않는 경우 이 시간을 사용할 수 있습니다. 관리 코드 UInt64로 나타냅니다. 비관리 코드 ULONGLONG으로 나타냅니다. |
복제본 키 맵 |
복제본 ID와 4바이트 키 사이의 매핑입니다. 복제본 ID(16바이트 GUID 권장)는 메타데이터에서 반복적으로 나타나므로 테이블을 통해 복제본 ID를 4바이트 키로 매핑하여 ID를 나타내는 방법이 더 효율적입니다. 이러한 키는 다른 위치에서 특정 복제본에 대한 참조가 필요할 때 사용됩니다. 관리 코드 ReplicaKeyMap을 사용하여 나타냅니다. 비관리 코드 IReplicaKeyMap을 사용하여 나타냅니다. |
현재 정보 |
복제본에서 지정된 범위에 대해 알고 있는 버전 정보의 요약입니다. 복제본 정보는 메타데이터 서비스를 통해 조작되며 직접 조작할 수 없습니다. 관리 코드 SyncKnowledge를 사용하여 나타냅니다. 비관리 코드 ISyncKnowledge를 사용하여 나타냅니다. |
잊어버린 정보 |
복제본에서 파트너 복제본이 삭제된 항목에 대한 정보를 모른다는 사실을 감지할 수 있게 합니다. 이러한 항목에 대한 삭제 표식이 정리된 경우 이러한 문제가 발생할 수 있습니다. 잊어버린 정보는 메타데이터 서비스를 통해 조작됩니다. 관리 코드 ForgottenKnowledge를 사용하여 나타냅니다. 비관리 코드 IForgottenKnowledge를 사용하여 나타냅니다. |
충돌 로그 |
변경 내용을 열거한 후 검색되었으며 해결되지 않은 충돌을 기록한 로그입니다. 동기화 중에 충돌이 저장된 경우에만 충돌 로그를 유지하기 위해 복제본이 필요합니다. 충돌 로그를 나타내는 방법은 복제본에서 결정하며, 이러한 로그에 대한 액세스를 Sync Framework에 제공할 필요는 없습니다. 그러나 변경 내용 적용자를 사용하는 경우 Sync Framework가 충돌 로그를 유지하는 데 도움이 될 수 있습니다. 자세한 내용은 충돌 기록 및 관리를 참조하십시오. |
삭제 표식 로그 |
동기화 커뮤니티에서 삭제 변경 내용을 올바르게 전파하고 삭제된 항목이 실수로 다시 추가되지 않도록 복제본의 항목 삭제에 대한 정보를 저장합니다. 복제본에서는 삭제 표식 로그를 유지해야 합니다. 삭제 표식 로그를 나타내는 방법은 복제본에서 결정하며, 이러한 로그에 대한 액세스를 Sync Framework에 제공할 필요는 없습니다. 자세한 내용은 삭제 표식 관리를 참조하십시오. |
각 항목에 필요한 메타데이터
동기화할 각 항목에는 다음 표에 나와 있는 메타데이터 집합이 있어야 합니다.
메타데이터 요소 | 설명 |
---|---|
전역 ID |
복제본에 저장된 항목에 대한 식별자입니다. 전역 ID는 복제본에서 생성하므로 복제본은 보다 효율적으로 열거 가능한 전역 ID를 할당할 수 있습니다. 예를 들어 커뮤니티에서 전역 ID 형식을 8바이트 접두사가 추가된 GUID로 정의할 수 있습니다. 그런 다음 접두사를 사용하여 전역 ID의 정렬 순서를 제어할 수 있습니다. 공급자는 이를 통해 보다 쉽게 범위를 사용하여 변경 내용을 열거할 수 있으며, 범위 하나에는 매우 많은 항목이 포함될 수 있으므로 항목을 정렬된 그룹으로 나타내면 정보 구조체가 보다 간결해집니다. 전역 ID 형식에 대한 자세한 내용은 유연한 ID를 참조하십시오. 관리 코드 SyncIdFormatGroup 클래스의 ItemIdFormat 속성에 형식이 지정됩니다. ID는 SyncId 클래스로 나타냅니다. 비관리 코드 ID_PARAMETERS 구조 구조체의 itemId 필드에 형식이 지정됩니다. ID는 SYNC_ID 구조체로 나타냅니다. |
현재 버전 |
특정 항목의 마지막으로 업데이트된 버전입니다. 현재 버전에는 항목을 가장 최근에 업데이트한 복제본의 키와 변경 시점에서 복제본의 틱 수가 들어 있습니다. 항목에서 변경 단위를 사용하는 경우 이 버전은 변경 단위별로 저장됩니다. 예를 들어 연락처의 주소와 전화 번호 필드에 별도의 변경 단위 버전 번호가 있을 수 있습니다. 관리 코드 SyncVersion으로 나타냅니다. 비관리 코드 SYNC_VERSION으로 나타냅니다. |
생성 버전 |
항목이 생성된 시점의 버전입니다. 생성 버전에는 항목을 만든 복제본의 키 및 항목 생성 시점에서 복제본의 틱 수가 들어 있습니다. 관리 코드 SyncVersion으로 나타냅니다. 비관리 코드 SYNC_VERSION으로 나타냅니다. |
저장소 요구 사항
전역 ID의 형식은 복제본에서 결정하므로 각 항목의 메타데이터를 저장하는 데 필요한 공간은 일정하지 않습니다. 그러나 권장되는 형식인 GUID + 8바이트 접두사가 사용되는 경우 다음 표와 같이 48바이트의 저장 공간이 필요합니다.
항목 | 바이트 |
---|---|
전역 ID |
24(GUID + 8바이트 접두사) |
현재 버전 |
12(4바이트 복제본 키 + 8바이트 틱 수) |
생성 버전 |
12(4바이트 복제본 키 + 8바이트 틱 수) |
총 48바이트 |
제약 조건 충돌용 메타데이터
충돌하는 항목을 병합하여 제약 조건 충돌이 해결되는 경우 병합된 항목을 위해 추가 메타데이터가 필요합니다. 자세한 내용은 제약 조건 충돌 검색 및 해결을 참조하십시오.
사용자 지정 필터용 메타데이터
사용자 지정 필터를 사용하는 경우 각 복제본과 각 항목을 위해 추가 메타데이터가 필요합니다. 자세한 내용은 동기화 데이터 필터링을 참조하십시오.
참고 항목
참조
IReplicaKeyMap 인터페이스
SYNC_ID 구조
SYNC_GID 구조
SYNC_VERSION 구조
ReplicaKeyMap
SyncId
SyncGlobalId
SyncIdFormat
SyncIdFormatGroup
SyncVersion