Atlas へのデータのストリーム - Flutter SDK
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 同期が完了するまでデバイス上に保持され、その後デバイスから削除されます。