Data Ingestを使用して、クライアント アプリケーションから Flexible Sync が有効化されている Atlas App Services アプリにデータをストリーミングできます。
クラウドにデータを送信する気象センサーなど、IoT アプリケーションでデータを一方向に同期したい場合があります。 Data Ingest は、小売アプリからの請求書作成や、アプリケーション イベントのログ記録など、競合の解決を必要としない他のタイプの不変データを書き込む場合にも役立ちます。
Data Ingest は、クライアント側の挿入専用ワークロードのパフォーマンスを向上させるために最適化されています。
クライアント アプリケーションから一方向にデータを同期
非対称オブジェクトの定義
Data Ingest および非対称オブジェクトには Flexible Sync が必要です。 非対称オブジェクトを定義するには、 ObjectType.asymmetricObject
を@RealmModel()
に渡します。
(ObjectType.asymmetricObject)class _WeatherSensor { () "_id") ( late ObjectId id; late String deviceId; late double modtemperatureInFahrenheitel; late double barometricPressureInHg; late double windSpeedInMph; }
非対称オブジェクトを定義する方法の詳細については、「 非対称オブジェクトの定義 」を参照してください。
App Services Appによる接続と認証
クライアントからバックエンド アプリにデータをストリーミングするには、App Services バックエンドに接続し、ユーザーを認証する必要があります。
final appConfig = AppConfiguration(appId); final app = App(appConfig);
final anonCredentials = Credentials.anonymous(); await app.logIn(anonCredentials);
Realm を開く
認証されたユーザーを作成したら、同期された Realm を開きます。
final currentUser = await app.logIn(credentials); final config = Configuration.flexibleSync(currentUser, [Tricycle.schema], path: 'flex.realm'); final realm = Realm(config);
双方向同期とは異なり、Data Ingest はFlexible Sync サブスクライブを使用しません。
非対称オブジェクトをクエリしたり、ローカル Realm に永続化したりすることはできないため、非対称オブジェクトは双方向 Flexible Sync、パーティションベースの同期、およびローカル Realm の使用と互換性がありません。
非対称オブジェクトの作成
Realm が開いたら、書込みトランザクション内に非対称オブジェクトを作成できます。 オブジェクト データをrealm.ingest
に渡します。
realm.write(() { realm.ingest( WeatherSensor(weatherSensorId, "WX1278UIT", 66.7, 29.65, 2)); });
非対称オブジェクトは読み取れません。 作成が完了すると、App Services バックエンドとリンクされた Atlas データベースに同期されます。
Atlas Device Sync は、このデータのライフサイクルを完全に管理します。 Data Ingest 同期が完了するまでデバイス上に保持され、その後デバイスから削除されます。