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