파티션 기반 동기화 - Kotlin SDK
이 페이지의 내용
파티션 기반 동기화는 Realm Kotlin SDK와 함께 Atlas Device Sync를 사용하기 위한 이전 모드입니다. 새 앱에는 Flexible Sync 를 사용하는 것이 좋습니다. 이 페이지의 정보는 아직 파티션 기반 동기화를 사용하고 있는 사용자를 위한 것입니다.
팁
Realm 코틀린 SDK (Kotlin SDK) v1.9.0 이상에서는 파티션 기반 동기화 에서 Flexible Sync로 마이그레이션 하는 기능 을 지원합니다. 자세한 내용은 파티션 기반 동기화 에서 Flexible Sync로 마이그레이션을 참조하세요.
파티션 값
When you select Partition-Based Sync for your backend App configuration, your client implementation must include a partition value. 이는 파티션 기반 동기화 를 구성할 때 선택하는 파티션 키 필드 의 값입니다.
파티션 값에 따라 클라이언트 애플리케이션이 액세스할 수 있는 데이터가 결정됩니다.
동기화된 영역을 열 때 파티션 값을 제공해야 합니다.
파티션 기반 동기화 Realm 열기
파티션 기반 동기화 Realm을 열려면 사용자, 파티션, Realm 객체 스키마 설정하다 를 영역 () 에 전달합니다. 그런 다음 구성을 Realm .open() 에 전달하여 영역 의 인스턴스 를 엽니다.
val app = App.create(YOUR_APP_ID) runBlocking { val user = app.login(Credentials.anonymous()) val config = SyncConfiguration.Builder(user, PARTITION, setOf(/*realm object models here*/)) // specify name so realm doesn't just use the "default.realm" file for this user .name(PARTITION) .build() val realm = Realm.open(config) Log.v("Successfully opened realm: ${realm.configuration.name}") realm.close() }
파티션 기반 동기화 Realm 구성
특정 구성 설정을 조정하려면 SyncConfiguration.Builder에서 제공하는 옵션을 사용합니다.
val app = App.create(YOUR_APP_ID) runBlocking { val user = app.login(Credentials.anonymous()) val config = SyncConfiguration.Builder(user, PARTITION, setOf(/*realm object models here*/)) .maxNumberOfActiveVersions(10) .waitForInitialRemoteData() .name("realm name") .build() val realm = Realm.open(config) Log.v("Successfully opened realm: ${realm.configuration}") realm.close() }
동기화 세션에 대한 업로드 및 다운로드 진행률 확인
참고
Kotlin SDK의 progressAsFlow()
리스너는 현재 파티션 기반 동기화를 사용하는 영역에서만 사용할 수 있습니다. Kotlin SDK는 아직 Flexible Sync를 위한 진행 리스너를 지원하지 않습니다.
동기화 세션의 업로드 및 다운로드 진행 상황을 모니터링할 수 있습니다. 동기화 세션은 동기화된 Realm을 열 때 시작됩니다. 자세한 내용은 managed 동기화 세션을 참조하세요.
동기화 업로드 및 다운로드 진행 상황을 모니터 하려면 SyncSession.progressAsFlow()
이 메서드는 Flow of Progress 이벤트를 반환합니다. Progress
은(는) 전송 가능한 바이트의 총 수와 전송될 나머지 바이트를 제공합니다.
syncSession.progressAsFlow()
두 개의 인수를 사용합니다:
UPLOAD
또는DOWNLOAD
로 설정할 수 있는 방향 열거형입니다. 진행률 스트림이 업로드 또는 다운로드를 추적하도록 지정합니다.둘 중 하나로 설정할 수 있는 ProgressMode 열거형입니다.
INDEFINITELY
: 콜백이 등록 취소될 때까지 알림이 계속되도록 설정합니다.CURRENT_CHANGES
: 현재 전송 가능한 바이트만 동기화될 때까지 알림이 계속되도록 설정합니다.
val stream = realm.syncSession.progressAsFlow( Direction.UPLOAD, ProgressMode.CURRENT_CHANGES ) stream.collect { progress -> if (progress.transferableBytes == progress.transferredBytes) { Log.i("Upload complete") } }
파티션 기반 동기화에서 Flexible Sync로 마이그레이션
App Services Device Sync 모드를 파티션 기반 동기화에서 Flexible Sync로 마이그레이션할 수 있습니다. 마이그레이션은 애플리케이션 코드를 변경할 필요가 없는 자동 프로세스입니다. 자동 마이그레이션을 사용하려면 Realm Kotlin SDK 버전 1.9.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를 사용하도록 변환하려면 다음과 같이 변경하세요.
Flexible Sync 를 사용하도록 SyncConfiguration.Builder() 를 업데이트합니다. 여기에는 필요한 경우
partitionValue
를 제거하고 초기 구독 세트를 추가하는 작업이 포함됩니다.Flexible Sync 구독에 사용할 관련 속성을 객체 모델에 추가합니다. 예를 들어
ownerId
속성을 추가하여 사용자가 자신의 데이터만 동기화할 수 있도록 할 수 있습니다.자동 Flexible Sync 구독을 제거하고 관련 구독을 수동으로 생성합니다.
이러한 전략에 대한 데이터 모델링 방법의 예를 포함하여 Flexible Sync 권한 전략의 예는 Device Sync 권한 가이드를 참조하세요.
구독 제거 및 수동 생성
파티션 기반 동기화에서 Flexible Sync로 마이그레이션하면 Realm은 앱에 대한 숨겨진 Flexible Sync 구독을 자동으로 생성합니다. 다음에 구독을 추가하거나 변경할 때 다음을 수행하는 것이 좋습니다.
클라이언트 코드베이스에서 쿼리를 구독 하거나 관련 구독을 수동으로 추가합니다.
이를 통해 향후 반복 및 디버깅을 위해 코드베이스에서 모든 구독 로직을 함께 볼 수 있습니다.
자동으로 생성된 Flexible Sync 구독에 대한 자세한 내용은 클라이언트 앱을 Flexible Sync로 마이그레이션을 참조하세요.