Atlas および他のデバイスによるクライアント アプリケーションのデータの同期
項目一覧
Realm Database を使用するモバイルまたはクライアント アプリケーションがあり、そのデータを他のデバイス間で同期し、MongoDB Atlas にバックアップしたい場合は、Device Sync を使用してそれが可能です。 開始するには、次の高レベルの手順に従います。
Atlasアクセスの設定
Atlas App Services アプリの作成
App Services アプリケーションは、クライアント デバイスが MongoDB Atlas に接続できるようにするゲートウェイです。 アプリを作成するときは、名前を付け、Atlas クラスターにリンクし、アプリケーションに最適な配置モデルと配置リージョンを指定します。
App Services Appの作成方法については、「 アプリの作成 」を参照してください。
Device Sync の構成
Device Sync は、Atlas への同期データとクライアント デバイス間でのデータ同期を管理するサービスです。 Device Sync は、Realm SDK と合わせて、ネットワーク接続、競合の解決、ユーザー認証、ユーザー権限とデータアクセスを自動的に管理します。
Device Sync を構成するときは、クライアント デバイスがアクセスできるデータソースと、ユーザーが読み書きできるデータを決定する権限を指定します。
Device Sync は、 Atlas UI、Atlas App Services コマンドラインインターフェイス、または App Services Admin API経由で構成できます。 Device Sync を初めて構成するときに、Atlas UI を使用すると便利な場合があります。これには、さまざまな設定やオプションに関するリンクと情報が提供されるためです。
認証プロバイダを有効にする
同期されたデータにアクセスするには、クライアント ユーザーは認証を受ける必要があります。 App Services は、ユーザーが認証できるようにするためのいくつかの認証プロバイダを提供します。 クライアント アプリケーションで認証を有効にするには、これらの認証プロバイダの 1 つ以上を構成します。
Atlas App Services App UI 内で認証プロバイダーを構成するには、左側のナビゲーション メニューで [ Authenticationを選択し、構成するプロバイダーをクリックします。 また、 Atlas App Services コマンドライン インターフェースまたは App Services Admin API を使用して App Services 構成を編集し、認証プロバイダを設定することもできます。
App Services スキーマの生成
Realm Database を使用するクライアント アプリケーションがすでに存在する場合は、Realm オブジェクトモデルを使用して、クライアント デバイスと Atlas 間でデータをマッピングする App Services スキーマを生成できます。 同期された Realm データからオブジェクトモデル データを読み取り、そのデータからスキーマを生成する機能である 開発モード を有効にすることで、これを実現できます。
Realm オブジェクトモデルから App Services スキーマを生成する方法の詳細については、「 Realm オブジェクトモデルからApp Services スキーマを作成する 」を参照してください。
クライアント アプリケーションへの同期の追加
この後は、Atlas 側で必要なすべてのセットアップが完了し、クライアント アプリケーションでデータを同期する準備ができます。 Realm Database を使用してデータを保持するクライアント アプリケーションがすでに存在する場合は、そのデータをデバイス間で同期したり、Atlas と同期したりするために必要な要素はいくつか追加するだけです。
同期された Realm を開く
認証されたユーザーを取得したら、Realm Database の同期されたインスタンスを開き、そのユーザーに使用できます。
クライアント コードで Flexible Sync クエリ サブスクリプションを定義して、クライアント アプリケーションに同期するデータを決定します。 Device Sync は、ユーザーが読み取りおよび書込み (write) 権限を持つ クエリに一致する Atlas ドキュメントを検索し、それらのドキュメントを Realm オブジェクトとしてクライアント デバイスに同期します。 Flexible Sync クエリ サブスクリプションを追加、削除、または更新して、デバイスに同期するドキュメントを変更できます。
C++ SDK
Flutter SDK
Java SDK
Kotlin SDK
.NET SDK
Node.js SDK
React Native SDK
Swift SDK
既存のデータを同期された Realm にコピーする
すでにクライアント データがある場合、同期されていない Realm に Device Sync を直接追加することはできません。 同期されていない Realm から同期された Realm にデータをコピーする必要があります。 クライアント データがない場合は、この手順をスキップできます。
一部の SDK では、Realm を開くときにこれを実行できるメソッドが提供されています。 ただし、Realm SDK の多くは現在、Flexible Sync でこれらのメソッドの使用をサポートしていません。
SDK がローカル Realm の Flexible Sync Realm へのコピーをサポートしていない場合は、同期されていない Realm 内の各オブジェクトを反復処理し、同期された Realm にコピーするロジックを記述する必要があります。 これは 1 回限りのプロセスです。 データをコピーした後、同期されていない Realm を破棄し、同期された Realm のみを開くことができます。