Atlas로 데이터 스트리밍 - C++ SDK
데이터 수집 을 사용하여 클라이언트 애플리케이션 에서 Flexible Sync 지원 Atlas App Services 앱으로 데이터를 스트림 할 수 있습니다.
날씨 센서가 데이터를 cloud로 전송하는 등 IoT 애플리케이션에서는 데이터를 단방향으로 동기화할 수 있습니다. 데이터 수집은 소매 앱에서 청구서를 생성하거나 애플리케이션 이벤트를 기록하는 등 충돌 해결이 필요하지 않은 다른 유형의 불변 데이터를 작성하는 데에도 유용합니다.
데이터 수집은 과중한 클라이언트 사이드 삽입 전용 워크로드의 성능 향상을 제공하도록 최적화되었습니다.
클라이언트 애플리케이션에서 단방향으로 데이터 동기화
비대칭 객체 정의
객체의 스키마를 REALM_ASYMMETRIC_SCHEMA
으)로 선언하면 데이터를 단방향으로 동기화할 수 있습니다.
struct WeatherSensorReading { realm::primary_key<realm::object_id> _id{realm::object_id::generate()}; std::string deviceId; double temperatureInFahrenheit; int64_t windSpeedInMph; }; REALM_ASYMMETRIC_SCHEMA(WeatherSensorReading, _id, deviceId, temperatureInFahrenheit, windSpeedInMph)
다른 객체 유형에 연결할 때의 제한 사항을 포함하여 REALM_ASYMMETRIC_SCHEMA
정의하는 방법에 대한 자세한 내용 은 비대칭 객체 정의를 참조하세요.
App Services App으로 연결 및 인증
클라이언트에서 백엔드 앱으로 데이터를 스트리밍하려면 App Services 백엔드에 연결 하고 사용자를 인증해야 합니다.
auto appConfig = realm::App::configuration(); appConfig.app_id = APP_ID; auto app = realm::App(appConfig); auto user = app.login(realm::App::credentials::anonymous()).get();
Realm 열기
인증된 사용자가 있으면 flexibleSyncConfiguration()
을(를) 사용하여 동기화된 영역을 열 수 있습니다. 비대칭 객체 유형에 대해 Realm을 여는 것과 달리 데이터 수집을 위해 Realm을 열 때 동기화하려는 asymmetric_object
유형을 지정 해야 합니다 .
auto syncConfig = user.flexible_sync_configuration(); auto realm = realm::open<realm::WeatherSensorReading>(syncConfig);
양방향 동기화와 달리 데이터 수집은 Flexible Sync 구독을 사용하지 않습니다.
팁
혼합 Realm 객체 유형 및 비대칭 Realm 객체 유형
Realm에서 asymmetric_object
를 읽거나 쿼리하거나 삭제할 수 없으므로 비대칭 객체는 양방향 Flexible Sync 또는 로컬 Realm 사용과 호환되지 않습니다. 동기화된 단일 영역을 열어 일반 객체와 비대칭 객체를 모두 managed할 수는 없으며, 이러한 다양한 Realm 객체 유형을 managed하려면 서로 다른 영역을 사용해야 합니다.
비대칭 객체 생성
영역이 열려 있으면 일반 객체와 마찬가지로 asymmetric_object
을 만들고 해당 값을 설정할 수 있습니다. 그러나 이러한 객체를 읽거나 삭제할 수는 없습니다. 생성되면 App Services 백엔드 및 연결된 Atlas 데이터베이스와 동기화됩니다.
auto weatherSensorReading = realm::WeatherSensorReading{.deviceId = "WX1278UIT", .temperatureInFahrenheit = 64.7, .windSpeedInMph = 7}; realm.write([&] { realm.add(std::move(weatherSensorReading)); });
Atlas Device Sync는 이 데이터의 수명 주기를 완벽하게 관리합니다. 데이터 수집 동기화가 완료될 때까지 유지된 후 기기에서 제거됩니다.