Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

Atlas로 데이터 스트리밍 - Kotlin SDK

이 페이지의 내용

  • 비대칭 객체
  • 클라이언트 애플리케이션에서 단방향으로 데이터 동기화
  • 비대칭 객체 정의
  • App Services App으로 연결 및 인증
  • Realm 열기
  • 비대칭 객체 생성

버전 1.10.0의 새로운 기능.

대량의 데이터를 생성하는 모바일 또는 클라이언트 애플리케이션이 있는 경우 MongoDB Atlas로 스트리밍하려는 경우, Device Sync를 사용하여 데이터를 단방향으로 동기화할 수 있습니다. 이 단방향 동기화 데이터 수집 을 활성화하는 기능을 호출합니다.

데이터 수집 을 사용하여 클라이언트 애플리케이션 에서 Flexible Sync 지원 Atlas App Services 앱으로 데이터를 스트림 할 수 있습니다.

날씨 센서가 데이터를 cloud로 전송하는 등 IoT 애플리케이션에서는 데이터를 단방향으로 동기화할 수 있습니다. 데이터 수집은 소매 앱에서 청구서를 생성하거나 애플리케이션 이벤트를 기록하는 등 충돌 해결이 필요하지 않은 다른 유형의 불변 데이터를 작성하는 데에도 유용합니다.

데이터 수집은 과중한 클라이언트 사이드 삽입 전용 워크로드의 성능 향상을 제공하도록 최적화되었습니다.

데이터 수집에는 Flexible Sync가 필요합니다.

코틀린 SDK (Kotlin SDK)는 데이터 수집에 사용할 수 있는 특수한 유형의 Realm 객체인 비대칭 객체 를 제공합니다.

비대칭 객체는 몇 가지 예외를 제외하고 RealmObject 과 동일한 속성 유형을 광범위하게 지원합니다.

  • 비대칭 객체는 Flexible Sync로 구성된 동기화된 영역에서만 사용할 수 있습니다. 그러나 비대칭 객체에 대한 구독은 생성할 수 없습니다.

  • AsymmetricRealmObjectEmbeddedRealmObject 유형을 포함 할 수 있지만 RealmObject 유형 또는 기타 AsymmetricRealmObject 유형은 포함할 수 없습니다.

  • AsymmetricRealmObject 유형은 다른 Realm 객체의 속성으로 사용할 수 없습니다 .

또한 비대칭 객체는 다른 Realm 객체와 동일한 방식으로 작동하지 않습니다. 영역 에서 비대칭 객체 를 추가, 읽기, 업데이트 또는 삭제 수 없습니다. 비대칭 객체 만 만들 수 있으며, 이 객체는 Device Sync 를 통해 앱에 연결된 Atlas 데이터베이스 에 단방향으로 동기화됩니다. 그런 다음 Realm 은 동기화 후 이 객체 를 삭제합니다.

동일한 Realm의 비대칭 및 비대칭 객체

Kotlin SDK를 사용하면 동일한 영역 내에서 비대칭 객체와 비대칭 Realm 객체(RealmObjectEmbeddedRealmObject 유형)로 작업할 수 있습니다. 영역을 열 때 동기화 구성의 모든 객체를 포함합니다. 그러나 비대칭 객체는 구독할 수 없습니다 .

1

해당 객체가 AsymmetricRealmObject 인 경우 데이터를 단방향으로 동기화할 수 있습니다. AsymmetricRealmObject 인터페이스를 구현하여 비대칭 객체를 정의합니다.

// Implements the `AsymmetricRealmObject` interface
class WeatherSensor : AsymmetricRealmObject {
@PersistedName("_id")
@PrimaryKey
var id: ObjectId = ObjectId()
var deviceId: String = ""
var temperatureInFarenheit: Float = 0.0F
var barometricPressureInHg: Float = 0.0F
var windSpeedInMph: Int = 0
}
2

클라이언트에서 백엔드 앱으로 데이터를 스트리밍하려면 App Services 백엔드에 연결 하고 사용자를 인증해야 합니다.

val app = App.create(YOUR_APP_ID)
val user = app.login(credentials)

데이터 수집은 Flexible Sync의 기능이므로 연결하는 앱은 Flexible Sync를 사용해야 합니다.

3

인증된 사용자가 있으면 SyncConfiguration 을 사용하여 동기화된 영역 을 열 수 있습니다. 동기화 하려는 AsymmetricRealmObject 유형을 지정합니다.

val config = SyncConfiguration.create(user, setOf(WeatherSensor::class))
val realm = Realm.open(config)
Log.v("Successfully opened realm: ${realm.configuration.name}")

양방향 동기화와 달리 데이터 수집은 Flexible Sync 구독 을 사용하지 않습니다. 동일한 영역에 비대칭이 아닌 객체가 있는 경우 해당 객체에 대해서만 Flexible Sync 구독 쿼리를 추가할 수 있습니다.

4

Realm이 열려 있으면 insert() 확장 메서드를 사용하여 쓰기 트랜잭션(write transaction) 내에 AsymmetricRealmObject 를 만들 수 있습니다.

// Open a write transaction
realm.write {
// Create a new asymmetric object
val weatherSensor = WeatherSensor().apply {
deviceId = "WX1278UIT"
temperatureInFarenheit = 6.7F
barometricPressureInHg = 29.65F
windSpeedInMph = 2
}
// Insert the object into the realm with the insert() extension method
insert(weatherSensor)
// WeatherSensor object is inserted into the realm, then synced to the
// App Services backend. You CANNOT access the object locally because it's
// deleted from the local realm after sync is complete.
}

이러한 객체는 읽을 수 없습니다. 생성되면 App Services 백엔드 및 연결된 Atlas 데이터베이스와 동기화됩니다.

Atlas Device Sync는 이 데이터의 수명 주기를 완벽하게 관리합니다. 데이터 수집 동기화가 완료될 때까지 유지된 후 기기에서 제거됩니다.

돌아가기

클라이언트 로그 수준 설정