Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

Atlas へのデータのストリーミング - C++ SDK

項目一覧

  • クライアント アプリケーションから一方向にデータを同期
  • 非対称オブジェクトの定義
  • App Services Appによる接続と認証
  • Realm を開く
  • 非対称オブジェクトの作成

Data Ingestを使用して、クライアント アプリケーションから Flexible Sync が有効化されている Atlas App Services アプリにデータをストリーミングできます。

クラウドにデータを送信する気象センサーなど、IoT アプリケーションでデータを一方向に同期したい場合があります。 Data Ingest は、小売アプリからの請求書作成や、アプリケーション イベントのログ記録など、競合の解決を必要としない他のタイプの不変データを書き込む場合にも役立ちます。

Data Ingest は、クライアント側の挿入専用ワークロードのパフォーマンスを向上させるために最適化されています。

1

オブジェクトのスキーマを 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を定義する方法の詳細については、「非対称オブジェクトの定義 」を参照してください。

2

クライアントからバックエンド アプリにデータをストリーミングするには、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();
3

認証されたユーザーを用意したら、 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 を使用する必要があります。

4

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

戻る

同期クライアントのログレベルの設定