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