Atlas へのデータのストリーミング - C++ SDK
Data Ingestを使用して、クライアント アプリケーションから Flexible Sync が有効化されている Atlas App Services アプリにデータをストリーミングできます。
クラウドにデータを送信する気象センサーなど、IoT アプリケーションでデータを一方向に同期したい場合があります。 Data Ingest は、小売アプリからの請求書作成や、アプリケーション イベントのログ記録など、競合の解決を必要としない他のタイプの不変データを書き込む場合にも役立ちます。
Data Ingest は、クライアント側の挿入専用ワークロードのパフォーマンスを向上させるために最適化されています。
クライアント アプリケーションから一方向にデータを同期
非対称オブジェクトの定義
オブジェクトのスキーマを 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 を開く場合とは異なり、Data Ingest の Realm を開くときは、同期するasymmetric_object
タイプを指定する必要があります。
auto syncConfig = user.flexible_sync_configuration(); auto realm = realm::open<realm::WeatherSensorReading>(syncConfig);
双方向同期とは異なり、Data Ingest はFlexible Sync サブスクライブを使用しません。
Tip
混合オブジェクトタイプと非対称オブジェクトタイプ
Realm からasymmetric_object
を読み取り、クエリ、削除することはできないため、非対称オブジェクトは双方向 Flexible Sync やローカル Realm の使用と互換性がありません。 単一の同期された Realm を開いて、通常のオブジェクトと非対称オブジェクトの両方を管理することはできません。これらの異なるオブジェクトタイプを管理するには、異なる Realm を使用する必要があります。
非対称オブジェクトの作成
Realm を開きたら、 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 は、このデータのライフサイクルを完全に管理します。 Data Ingest 同期が完了するまでデバイス上に保持され、その後デバイスから削除されます。