장치 간 데이터 동기화 - C++ SDK
Atlas Device Sync 는 클라이언트 애플리케이션과 App Services 백엔드 간에 데이터를 자동으로 동기화합니다. 클라이언트 기기가 온라인 일 때 동기화는 기기와 백엔드 앱 간 배경 스레드의 데이터를 비동기식으로 동기화합니다.
클라이언트 애플리케이션에서 동기화를 사용하는 경우, 구현이 백엔드 앱 구성에서 선택한 동기화 모드와 일치해야 합니다. Realm C++ SDK는 Flexible Sync만 지원합니다.
Flexible Sync
백엔드 앱 구성에 Flexible Sync를 선택할 때에는 클라이언트 구현에 쿼리 가능 필드에 대한 쿼리 구독이 포함되어야 합니다. Flexible Sync는 클라이언트 애플리케이션에서 유지 관리하는 쿼리 구독과 일치하는 데이터를 동기화하여 작동합니다.
구독 설정하다 에는 쿼리 설정하다 가 포함되어 있습니다. Flexible Sync는 사용자에게 문서를 읽고 쓰기 (write) 수 있는 적절한 권한 이 있는 경우 해당 쿼리와 일치하는 문서를 반환합니다. 문서가 쿼리 와 일치하지만 클라이언트 에 해당 문서를 읽거나 쓰기 (write) 수 있는 권한이 없는 경우 클라이언트 애플리케이션 과 동기화 되지 않습니다.
Realm 쿼리 언어를 사용하여 쿼리를 작성할 수 있습니다.
참고
Flexible Sync는 Realm 쿼리 언어와 SDK의 쿼리 엔진에서 사용할 수 있는 모든 쿼리 연산자를 지원하지 않습니다. 자세한 내용은 Flexible Sync RQL 제한 사항을 참조하.
구독 세트는 특정 유형의 Realm 객체를 기반으로 합니다. 여러 유형의 Realm 객체가 있는 경우 여러 개의 구독이 있을 수 있습니다.
클라이언트 애플리케이션에서 Realm Mobile Sync를 사용하려면 Flexible Sync 구성으로 동기화된 영역을 엽니다. 그런 다음 구독을 managed하여 동기화할 문서를 결정합니다. 자세한 내용은 동기화 구독 관리 - C++ SDK를 참조하세요.
성능 향상을 위한 그룹 업데이트
구독 세트에 대한 모든 쓰기 트랜잭션(write transaction)에는 성능이 소모됩니다. 세션 중에 영역 객체를 여러 번 업데이트해야 하는 경우 모든 변경이 완료될 때까지 편집한 객체를 메모리에 보관하는 것이 좋습니다. 이렇게 하면 모든 변경 사항 대신 완전하고 업데이트된 객체만 영역에 기록하므로 동기화 성능이 향상됩니다.
단방향 동기화
Realm Mobile Sync는 Atlas로 데이터를 보내는 기능을 지원하지만 업데이트를 받을 수는 없습니다.
이 시나리오에서는 데이터 수집을 사용하여 클라이언트 애플리케이션에서 Flexible Sync 지원 Atlas App Services App으로 데이터를 스트림하여 동기화 성능을 극대화할 수 있습니다.