デバイス間でのデータの同期 - C++ SDK
Atlas Device Sync は、クライアント アプリケーションと App Services バックエンド間でデータを自動的に同期します。 クライアント デバイスがオンラインになると、Sync はデバイスとバックエンド アプリの間でバックグラウンド スレッドのデータを非同期に同期します。
クライアント アプリケーションで同期を使用する場合、実装はバックエンド アプリ構成で選択した同期モードと一致する必要があります。 Realm C++ SDK は Flexible Sync のみをサポートします。
Flexible Sync
バックエンド アプリ構成にFlexible Syncを選択する場合、クライアント実装には クエリ可能なフィールドをクエリするためのサブスクリプションを含める必要があります。 Flexible Sync は、クライアント アプリケーションで維持するクエリ サブスクリプションに一致するデータを同期することで機能します。
サブスクライブセットには、一連のクエリが含まれます。 Flexible Sync は、それらのクエリに一致するドキュメントを返します。ここでのユーザーにはドキュメントを読み取り、読み取りおよび書込み (read) および書込み (write) のための適切な権限があります。 ドキュメントがクエリに一致するが、クライアントにドキュメントを読み取りまたは書き込みする権限がない場合、それらはクライアント アプリケーションに同期されません。
注意
Flexible Syncは、 RQLおよび SDK のクエリ エンジンで使用可能なすべてのクエリ演算子をサポートしていません。 詳細については、「 Flexible Sync RQL の制限」を参照してください。
サブスクリプション セットは、特定のタイプのRealm オブジェクトに基づいています。 Realm オブジェクトのタイプが多い場合は、複数のサブスクリプションがあることがあります。
クライアント アプリケーションで Device Sync を使用するには、Flexible Sync 構成で同期された Realm を開きます。 次に、サブスクリプションを管理して、同期するドキュメントを決定します。 詳細については、「同期サブスクリプションの管理 - C++ SDK 」を参照してください。
パフォーマンス向上のためのグループ更新
サブスクリプションセットのすべての書込みトランザクション (write transaction) にはパフォーマンス コストがかかります。 セッション中に Realm オブジェクトを複数更新する必要がある場合は、すべての変更が完了するまで編集されたオブジェクトをメモリ内に保持することを検討してください。 これにより、すべての変更ではなく、完全で更新されたオブジェクトのみが Realm に書き込まれるため、同期のパフォーマンスが向上します。
一方向同期
Device Syncは、Atlas にデータを送信しますが、更新を受信しない機能をサポートしています。
このシナリオでは、 Data Ingestを使用してクライアント アプリケーションから Flexible Sync が有効化されている Atlas App Services アプリにデータをストリーミングすることで、同期パフォーマンスを最大化できます。