Device Sync - Flutter SDK
이 페이지의 내용
Device Sync 는 클라이언트 애플리케이션과 Atlas App Services 백엔드 애플리케이션 간에 데이터를 자동으로 동기화합니다. 클라이언트 기기가 온라인 일 때 동기화는 기기와 App Services 백엔드 간의 배경 데이터를 비동기식으로 동기화합니다.
Flutter SDK 는 Flexible Sync만 지원합니다. Flexible Sync를 사용하려면 App Services 백엔드 를 구성해야 합니다.
참고
Flutter SDK는 파티션 기반 동기화를 지원하지 않습니다.
동기화된 Realms
각각 로컬 데이터 사본을 가진 여러 기기 간에 데이터를 자동으로 동기화하도록 영역을 구성할 수 있습니다. 동기화된 영역은 로컬 전용 영역과 다른 구성을 사용하며 동기화 프로세스를 처리하기 위해 Atlas App Services 백엔드가 필요합니다.
애플리케이션은 오프라인 상태에서도 항상 로컬에서 동기화된 Realm 객체를 생성, 수정 및 삭제할 수 있습니다. 네트워크 연결이 가능할 때마다 Realm Flutter SDK는 애플리케이션 서버에 대한 연결을 열고 다른 클라이언트와 변경 사항을 동기화합니다. Atlas Device Sync 프로토콜 과 서버 측 운영 변환은 일부 변경 사항이 오프라인에서 발생했거나 순서가 잘못되었더라도 Realm의 완전히 동기화된 모든 인스턴스가 정확히 동일한 데이터를 볼 수 있도록 보장합니다.
동기화 Realms과 비동기화 Realms 비교
동기화된 영역은 동기화되지 않은 로컬 영역과 몇 가지 점에서 다릅니다:
동기화된 영역은 백엔드 App Services App과 변경 사항을 동기화하려고 시도하지만, 비동기화 영역은 동기화를 시도하지 않습니다.
동기화된 영역은 인증된 사용자가 액세스할 수 있지만, 동기화되지 않은 영역은 사용자 또는 인증 개념이 없습니다.
동기화되지 않은 영역 에서 동기화된 영역 으로 데이터를 복사하거나 그 반대로 복사할 수 있지만 동기화 되지 않은 영역 은 동기화할 수 없습니다. 동기화되지 않은 영역 을 동기화된 영역 으로 변환하려면 로컬 전용 앱을 동기화가 활성화된 앱으로 마이그레이션에설명된 프로세스 를 따르세요.
Flexible Sync란 무엇인가요?
App Services 백엔드 구성에 Flexible Sync를 선택하는 경우, 클라이언트 구현에 쿼리 가능한 필드에 대한 쿼리 구독이 포함되어야 합니다. Flexible Sync는 클라이언트 애플리케이션에서 유지 관리하는 쿼리 구독과 일치하는 데이터를 동기화하여 작동합니다.
구독 세트에는 쿼리 세트가 포함되어 있습니다. Flexible Sync는 사용자에게 문서를 읽거나 쓸 수 있는 적절한 권한 이 있는 쿼리와 일치하는 문서를 반환합니다. 문서가 쿼리와 일치하지만 클라이언트에 해당 문서를 읽거나 쓸 수 있는 권한이 없는 경우 해당 문서는 클라이언트 애플리케이션과 동기화되지 않습니다.
제한된 RQL 하위 집합을 사용하여 쿼리를 구성할 수 Flexible Sync 있습니다. 쿼리할 수 있는 필드에 대해 자세히 알아보려면 쿼리 가능 필드 문서를 참조하세요.
구독 세트는 특정 유형의 Realm 객체를 기반으로 합니다. 여러 유형의 Realm 객체에 대한 데이터를 동기화하려면 여러 개의 구독이 있어야 합니다.
클라이언트 애플리케이션에서 Device Sync를 사용하려면 Flexible Sync 구성으로 동기화된 영역을 엽니다. 그런 다음 구독을 관리하여 동기화할 문서를 결정합니다.
백엔드에서 Flexible Sync 활성화
SDK를 사용하여 클라이언트 애플리케이션에서 데이터 동기화를 시작하려면 먼저 App Services 백엔드에서 Flexible Sync를 활성화해야 합니다.
성능 향상을 위한 그룹 업데이트
구독 세트에 대한 모든 쓰기 트랜잭션(write transaction)에는 성능이 소모됩니다. 세션 중에 영역 객체를 여러 번 업데이트해야 하는 경우 모든 변경이 완료될 때까지 편집한 객체를 메모리에 보관하는 것이 좋습니다. 이렇게 하면 모든 변경 사항 대신 완전하고 업데이트된 객체만 영역에 기록하므로 동기화 성능이 향상됩니다.
Device Sync 작동 방식
Device Sync는 App Services 백 엔드와 Realm의 모든 기능 위에 있는 클라이언트 기기 간의 네트워크 동기화를 추가합니다.동기화와 함께 Realm을 사용하는 경우 동기화 없이 Realm을 사용하는 것과 유사하게 기기에 영역이 존재합니다. 그러나 이러한 영역에 저장된 데이터를 변경하면 백엔드 App Services 인스턴스를 통해 모든 클라이언트 기기가 서로 동기화됩니다. 이 백엔드는 MongoDB를 실행하는 클라우드 기반 Atlas 클러스터에 영역 데이터를 저장하기도 합니다.
Device Sync는 애플리케이션의 전용 스레드에서 애플리케이션 백엔드와 통신하는 작업자 클라이언트에 의존합니다.또한 동기화된 영역은 포함된 객체에 대한 변경 기록을 유지합니다. 동기화는 이 기록을 사용하여 클라이언트 변경 사항과 백엔드 변경 사항 간의 충돌을 해결합니다.
Device Sync 를 사용하는 애플리케이션은 JSON Schema 를 사용하여 백엔드 에서 스키마 를 정의합니다. . 클라이언트 애플리케이션은 데이터를 동기화하려면 해당 백엔드 스키마 와 일치해야 합니다. 그러나 애플리케이션의 프로그래밍 언어 초기 스키마 를 정의하려는 경우, 애플리케이션 을 쓰기 (write) 때 개발 모드 를 사용하여 네이티브 SDK 객체를 기반으로 백엔드 JSON Schema를 생성할 수 있습니다. 그러나 애플리케이션 을 프로덕션 목적으로 사용한 후에는 백엔드 에서 JSON Schema를 사용하여 스키마 를 변경해야 합니다.