파티션 기반 동기화 - Node.js SDK
이 페이지의 내용
Atlas Device Sync 에는 Flexible Sync 및 파티션 기반 동기화 두 가지 동기화 모드가 있습니다. Flexible Sync를 사용하는 것이 좋습니다. 이 페이지의 정보는 파티션 기반 동기화를 사용하는 기존 앱이 있는 사용자를 지원 하기 위한 것입니다.
참고
Atlas Device Sync와 Realm Mobile Sync 일치
클라이언트 애플리케이션 에서 Atlas Device Sync 를 사용하는 경우 구현 이 백엔드 앱 구성에서 선택한 동기화 모드와 일치해야 합니다. 애플리케이션 에 동기화 모드 는 하나만 사용할 수 있습니다. 동일한 앱 내에서 파티션 기반 동기화 와 Flexible Sync를 혼합하여 사용할 수 없습니다.
파티션 값
When you select Partition-Based Sync for your backend App configuration, your client implementation must include a partition value. 이는 파티션 기반 동기화 를 구성할 때 선택하는 파티션 키 필드 의 값입니다.
파티션 값에 따라 클라이언트 애플리케이션이 액세스할 수 있는 데이터가 결정됩니다.
동기화된 영역을 열 때 파티션 값을 전달합니다.
파티션 기반 동기화 Realm 열기
파티션 기반 동기화 를 사용하여 영역 을 열려면 Realm.open() 을 호출합니다. SyncConfiguration 객체 를 정의하는 sync
속성 을 포함해야 하는 구성 객체 를 전달합니다. SyncConfiguration에 user
및 partitionValue
를 포함해야 합니다.
const config = { schema: [Car], sync: { user: app.currentUser, partitionValue: "myPartition", }, }; const realm = await Realm.open(config);
const config: Realm.Configuration = { schema: [Car], sync: { user: app.currentUser!, partitionValue: "myPartition", }, }; const realm = await Realm.open(config);
중요
파티션 기반 동기화 구성에 오프라인 로그인 지원 백그라운드 동기화를 사용하여 즉시 또는 파티션 기반 동기화를 사용하여 시간 초과가 경과한 후 영역을 열 수 있습니다.
번들 파티션 기반 동기화 Realm 열기
파티션 기반 동기화를 사용하는 번들 동기화 영역 을 열 때는 원래 영역 구성에 사용된 것과 동일한 파티션 키를 사용해야 합니다. 다른 파티션 키를 사용하는 경우 번들 영역을 열 때 SDK에서 오류가 발생합니다.
파티션 기반 동기화에서 Flexible Sync로 마이그레이션
App Services Realm Mobile Sync 모드를 파티션 기반 동기화에서 Flexible Sync로 마이그레이션할 수 있습니다. 마이그레이션은 애플리케이션 코드를 변경할 필요가 없는 자동 프로세스입니다. 자동 마이그레이션을 사용하려면 Realm Node.js SDK 버전 11.10.0 이상이 필요합니다.
마이그레이션하면 기존 App Services 사용자 및 인증 구성을 유지할 수 있습니다. Flexible Sync는 더욱 다양한 권한 구성 옵션과 보다 세분화된 데이터 동기화를 제공합니다.
App Services App을 파티션 기반 동기화에서 Flexible Sync로 마이그레이션하는 방법에 대한 자세한 내용은 Device Sync 모드 마이그레이션을 참조하세요.
마이그레이션 후 클라이언트 코드 업데이트
파티션 기반 동기화에서 Flexible Sync로 자동 마이그레이션할 때는 클라이언트 코드를 변경할 필요가 없습니다. 그러나 이 기능을 지원하기 위해 Realm은 다음을 통해 두 동기화 모드의 차이점을 자동으로 처리합니다.
partitionKey == partitionValue
인 각 Realm 객체 유형에 대해 Flexible Sync 구독을 자동으로 생성합니다.필드가 아직 없는 경우 모든 객체에
partitionKey
필드를 삽입합니다. 이는 자동 Flexible Sync 구독에 필요합니다.
마이그레이션 후 클라이언트 코드를 업데이트해야 하는 경우 클라이언트 코드베이스를 업데이트하여 숨겨진 마이그레이션 기능을 제거하는 것이 좋습니다. 다음과 같은 경우 클라이언트 코드베이스를 업데이트해야 할 수 있습니다.
클라이언트 코드베이스에서 새 모델을 추가하거나 모델을 변경하는 경우
Realm 객체를 읽거나 쓰는 기능을 추가하거나 변경하는 경우
동기화하는 데이터를 보다 세밀하게 제어하려는 경우
파티션 기반 동기화 클라이언트 코드를 Flexible Sync를 사용하도록 변환하려면 다음과 같이 변경하세요.
동기화된 Realm을 여는 SyncConfiguration 객체 에
flexible:true
를 추가 영역.Flexible Sync 구독에 사용할 관련 속성을 객체 모델에 추가합니다. 예를 들어
ownerId
속성을 추가하여 사용자가 자신의 데이터만 동기화할 수 있도록 할 수 있습니다.자동 Flexible Sync 구독을 제거하고 관련 구독을 수동으로 생성합니다.
이러한 전략에 대한 데이터 모델링 방법의 예를 포함하여 Flexible Sync 권한 전략의 예는 Device Sync 권한 가이드를 참조하세요.
구독 제거 및 수동 생성
파티션 기반 동기화에서 Flexible Sync로 마이그레이션하면 Realm은 앱에 대한 숨겨진 Flexible Sync 구독을 자동으로 생성합니다. 다음에 구독을 추가하거나 변경할 때 다음을 수행하는 것이 좋습니다.
이를 통해 향후 반복 및 디버깅을 위해 코드베이스에서 모든 구독 로직을 함께 볼 수 있습니다.
자동으로 생성된 Flexible Sync 구독에 대한 자세한 내용은 클라이언트 앱을 Flexible Sync로 마이그레이션을 참조하세요.