デバイス間でのデータの同期 - Node.js SDK
Atlas Device Sync は、クライアント アプリケーションと Atlas App Services バックエンドとの間でデータを自動的に同期します。 クライアント デバイスがオンラインになると、Sync はデバイスとバックエンド アプリの間でバックグラウンド スレッドのデータを非同期に同期します。
Device Sync には、Flexible Sync と古いパーティションベースの同期の 2 つの同期モードがあります。 新しいアプリには Flexible Sync モードを使用することをお勧めします。 パーティションベースの同期の使用の詳細については、「パーティションベースの同期 - Node.js SDK 」を参照してください。
クライアント アプリケーションで同期を使用する場合、実装はバックエンド アプリ構成で選択した同期モードと一致する必要があります。 アプリケーションに使用できる同期モードは 1 つだけです。 同じアプリ内でパーティションベースの同期と Flexible 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 を開きます。 次に、サブスクリプションを管理して、同期するドキュメントを決定します。
パフォーマンス向上のためのグループ更新
サブスクリプションセットのすべての書込みトランザクション (write transaction) にはパフォーマンス コストがかかります。 セッション中に Realm オブジェクトを複数更新する必要がある場合は、すべての変更が完了するまで編集されたオブジェクトをメモリ内に保持することを検討してください。 これにより、すべての変更ではなく、完全で更新されたオブジェクトのみが Realm に書き込まれるため、同期のパフォーマンスが向上します。
Tip
Device Sync は、Flexible Sync と古いパーティションベースの同期の 2 つの同期モードをサポートしています。 App Services バックエンドでパーティションベースの同期が使用される場合は、「パーティションベースの同期 - Node.js SDK 」を参照してください。
新しいアプリは Flexible Sync を使用することをお勧めします。